Home > Software design >  Adding a singlechildscrollview on Datatable
Adding a singlechildscrollview on Datatable

Time:10-23

I have a datatable with 4 columns but only 3 are currently showing when the screen is rotated i am able to see all 4 columns it is not even scrollable.

I am try to see the 4 columns in a single view ut I am getting this error:

lib/screens/home_screen.dart:79:29: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
                            DataTable(
                            ^^^^^^^^^
lib/screens/home_screen.dart:78:54: Error: Too many positional arguments: 0 allowed, but 1 found.
Try removing the extra positional arguments.
                          const SingleChildScrollView(
                                                     ^
/C:/src/flutter/flutter/packages/flutter/lib/src/widgets/single_child_scroll_view.dart:140:9: Context: Found this candidate, but the arguments don't match.
  const SingleChildScrollView({
        ^^^^^^^^^^^^^^^^^^^^^
Restarted application in 274ms.

Here is th e code for the table:

                      ExpansionTile(
                        title: const Text("Click Here to See table Name"),
                        children: [
                          const SingleChildScrollView(
                            DataTable(
                              columns: const <DataColumn>[
                                DataColumn(
                                  label: Text(
                                    'Sr.No',
                                    style: TextStyle(
                                      fontWeight: FontWeight.bold,
                                    ),
                                  ),
                                ),
                                DataColumn(
                                  label: Text(
                                    'Website',
                                    style: TextStyle(
                                      fontWeight: FontWeight.bold,
                                    ),
                                  ),
                                ),
                                DataColumn(
                                  label: Text(
                                    'Tutorial',
                                    style: TextStyle(
                                      fontWeight: FontWeight.bold,
                                    ),
                                  ),
                                ),
                                DataColumn(
                                  label: Text(
                                    'Review',
                                    style: TextStyle(
                                      fontWeight: FontWeight.bold,
                                    ),
                                  ),
                                ),
                              ],
                              rows: const <DataRow>[
                                DataRow(
                                  cells: <DataCell>[
                                    DataCell(
                                      Text('1'),
                                    ),
                                    DataCell(
                                      Text('https://flutter.dev/'),
                                    ),
                                    DataCell(
                                      Text('Flutter'),
                                    ),
                                    DataCell(
                                      Text('5*'),
                                    ),
                                  ],
                                ),
                                DataRow(
                                  cells: <DataCell>[
                                    DataCell(
                                      Text('2'),
                                    ),
                                    DataCell(
                                      Text('https://dart.dev/'),
                                    ),
                                    DataCell(
                                      Text('Dart'),
                                    ),
                                    DataCell(
                                      Text('5*'),
                                    ),
                                  ],
                                ),
                                DataRow(
                                  cells: <DataCell>[
                                    DataCell(
                                      Text('3'),
                                    ),
                                    DataCell(
                                      Text('https://pub.dev/'),
                                    ),
                                    DataCell(
                                      Text('Flutter Packages'),
                                    ),
                                    DataCell(
                                      Text('5*'),
                                    ),
                                  ],
                                ),
                              ],
                            ),
                          ),
                        ],
                      ),

My question: How can make the table view in one screen so that it can be wrapped or the columns shrink to be view in a singleview?

CodePudding user response:

You nee to pass DataTable to SingleChildScrollView's child, you forget to add child world also needed to pass scrollDirection too:

SingleChildScrollView(
    scrollDirection: Axis.horizontal,// <---add this
    child: DataTable(// <---add this
      columns: const <DataColumn>[
        ...
      ]
    )
 )

CodePudding user response:

You have to define Datatable to child and if you are going to define more than one, you need to remove const in columns.

SingleChildScrollView(
    child: DataTable( //Edited
      columns: <DataColumn>[ //Edited
        ...
      ]
    )
 )
  • Related