diff --git a/lib/ui/app/forms/app_form.dart b/lib/ui/app/forms/app_form.dart index fac6564fe..81ea244cf 100644 --- a/lib/ui/app/forms/app_form.dart +++ b/lib/ui/app/forms/app_form.dart @@ -29,6 +29,7 @@ class AppForm extends StatelessWidget { key: formKey, child: child ?? ScrollableListView( + primary: true, children: children, ), ), diff --git a/lib/ui/app/scrollable_listview.dart b/lib/ui/app/scrollable_listview.dart index ef9628a0d..d59926a23 100644 --- a/lib/ui/app/scrollable_listview.dart +++ b/lib/ui/app/scrollable_listview.dart @@ -69,6 +69,7 @@ class ScrollableListViewBuilder extends StatefulWidget { this.separatorBuilder, this.scrollController, this.padding, + this.primary = false, }) : super(key: key); final IndexedWidgetBuilder itemBuilder; @@ -76,6 +77,7 @@ class ScrollableListViewBuilder extends StatefulWidget { final int itemCount; final ScrollController scrollController; final EdgeInsetsGeometry padding; + final bool primary; @override _ScrollableListViewBuilderState createState() => @@ -101,18 +103,24 @@ class _ScrollableListViewBuilderState extends State { Widget build(BuildContext context) { return widget.separatorBuilder != null ? ListView.separated( + primary: widget.primary, separatorBuilder: widget.separatorBuilder, padding: widget.padding, itemBuilder: widget.itemBuilder, itemCount: widget.itemCount, - controller: widget.scrollController ?? _scrollController, + controller: widget.primary + ? null + : widget.scrollController ?? _scrollController, shrinkWrap: true, ) : ListView.builder( + primary: widget.primary, padding: widget.padding, itemBuilder: widget.itemBuilder, itemCount: widget.itemCount, - controller: widget.scrollController ?? _scrollController, + controller: widget.primary + ? null + : widget.scrollController ?? _scrollController, shrinkWrap: true, ); } diff --git a/lib/ui/app/tables/entity_list.dart b/lib/ui/app/tables/entity_list.dart index 8075f4d78..b50da03e7 100644 --- a/lib/ui/app/tables/entity_list.dart +++ b/lib/ui/app/tables/entity_list.dart @@ -64,14 +64,11 @@ class _EntityListState extends State { EntityDataTableSource dataTableSource; int _firstRowIndex = 0; - ScrollController _controller; @override void initState() { super.initState(); - _controller = ScrollController(); - final entityType = widget.entityType; final state = widget.state; final entityList = widget.entityList; @@ -113,12 +110,6 @@ class _EntityListState extends State { dataTableSource.notifyListeners(); } - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } - @override Widget build(BuildContext context) { final store = StoreProvider.of(context); @@ -238,7 +229,7 @@ class _EntityListState extends State { ), Expanded( child: SingleChildScrollView( - controller: _controller, + primary: true, child: Padding( padding: const EdgeInsets.symmetric(vertical: 16), child: AppPaginatedDataTable( diff --git a/lib/ui/dashboard/dashboard_panels.dart b/lib/ui/dashboard/dashboard_panels.dart index 710f0c4b3..bb878cd33 100644 --- a/lib/ui/dashboard/dashboard_panels.dart +++ b/lib/ui/dashboard/dashboard_panels.dart @@ -445,6 +445,7 @@ class DashboardPanels extends StatelessWidget { Padding( padding: const EdgeInsets.only(top: kTopBottomBarHeight), child: ScrollableListViewBuilder( + primary: true, scrollController: scrollController, itemCount: sections.length + 1, itemBuilder: (context, index) { diff --git a/lib/ui/reports/reports_screen.dart b/lib/ui/reports/reports_screen.dart index 7ae2edb21..ba10bb39d 100644 --- a/lib/ui/reports/reports_screen.dart +++ b/lib/ui/reports/reports_screen.dart @@ -436,6 +436,7 @@ class ReportsScreen extends StatelessWidget { ), ) : ScrollableListView( + primary: true, key: ValueKey( '${viewModel.state.company.id}_${viewModel.state.isSaving}_${reportsState.report}_${reportsState.group}'), children: [ diff --git a/lib/ui/settings/account_management.dart b/lib/ui/settings/account_management.dart index 6a69a6a34..8287e1a94 100644 --- a/lib/ui/settings/account_management.dart +++ b/lib/ui/settings/account_management.dart @@ -188,6 +188,7 @@ class _AccountManagementState extends State children: [ _AccountOverview(viewModel: viewModel), ScrollableListView( + primary: true, children: [ FormCard( children: kModules.keys.map((module) { @@ -210,7 +211,7 @@ class _AccountManagementState extends State }).toList()), ], ), - ScrollableListView(children: [ + ScrollableListView(primary: true, children: [ FormCard( children: [ LearnMoreUrl( @@ -225,6 +226,7 @@ class _AccountManagementState extends State ) ]), ScrollableListView( + primary: true, children: [ FormCard( children: [ @@ -315,6 +317,7 @@ class _AccountOverview extends StatelessWidget { } return ScrollableListView( + primary: true, children: [ AppHeader( label: localization.plan, diff --git a/lib/ui/settings/company_details.dart b/lib/ui/settings/company_details.dart index 70cdd8b67..54d39fb7d 100644 --- a/lib/ui/settings/company_details.dart +++ b/lib/ui/settings/company_details.dart @@ -261,6 +261,7 @@ class _CompanyDetailsState extends State tabController: _controller, children: [ ScrollableListView( + primary: true, children: [ FormCard( children: [ @@ -385,6 +386,7 @@ class _CompanyDetailsState extends State ), AutofillGroup( child: ScrollableListView( + primary: true, children: [ FormCard( isLast: true, @@ -442,6 +444,7 @@ class _CompanyDetailsState extends State Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: ScrollableListView( + primary: true, children: [ Builder( builder: (context) { @@ -496,6 +499,7 @@ class _CompanyDetailsState extends State ), ), ScrollableListView( + primary: true, children: [ FormCard( crossAxisAlignment: CrossAxisAlignment.stretch, diff --git a/lib/ui/settings/device_settings.dart b/lib/ui/settings/device_settings.dart index abf67883e..e89e21f4c 100644 --- a/lib/ui/settings/device_settings.dart +++ b/lib/ui/settings/device_settings.dart @@ -109,6 +109,7 @@ class _DeviceSettingsState extends State focusNode: _focusNode, children: [ ScrollableListView( + primary: true, children: [ FormCard( children: [ @@ -364,6 +365,7 @@ class _DeviceSettingsState extends State ], ), ScrollableListView( + primary: true, children: [ FormCard(children: [ SwitchListTile( diff --git a/lib/ui/settings/import_export.dart b/lib/ui/settings/import_export.dart index 3bf07074e..71aeb8b7f 100644 --- a/lib/ui/settings/import_export.dart +++ b/lib/ui/settings/import_export.dart @@ -85,6 +85,7 @@ class _ImportExportState extends State { formKey: _formKey, focusNode: _focusNode, child: ScrollableListView( + primary: true, children: [ if (_response == null) _FileImport( diff --git a/lib/ui/settings/invoice_design.dart b/lib/ui/settings/invoice_design.dart index f633a0ddd..fa628c6f4 100644 --- a/lib/ui/settings/invoice_design.dart +++ b/lib/ui/settings/invoice_design.dart @@ -153,6 +153,7 @@ class _InvoiceDesignState extends State focusNode: _focusNode, children: [ ScrollableListView( + primary: true, children: [ Padding( padding: const EdgeInsets.only(right: 16, bottom: 10, left: 16), diff --git a/lib/ui/settings/localization_settings.dart b/lib/ui/settings/localization_settings.dart index 5927ae18d..1309a0c1e 100644 --- a/lib/ui/settings/localization_settings.dart +++ b/lib/ui/settings/localization_settings.dart @@ -137,6 +137,7 @@ class _LocalizationSettingsState extends State tabController: _controller, children: [ ScrollableListView( + primary: true, children: [ FormCard( children: [ @@ -266,6 +267,7 @@ class _LocalizationSettingsState extends State ], ), ScrollableListView( + primary: true, children: [ FormCard( isLast: true, diff --git a/lib/ui/settings/templates_and_reminders.dart b/lib/ui/settings/templates_and_reminders.dart index b9b5c8a9d..250b41cde 100644 --- a/lib/ui/settings/templates_and_reminders.dart +++ b/lib/ui/settings/templates_and_reminders.dart @@ -343,6 +343,7 @@ class _TemplatesAndRemindersState extends State focusNode: _focusNode, children: [ ScrollableListView( + primary: true, children: [ FormCard(children: [ AppDropdownButton( diff --git a/lib/ui/settings/user_details.dart b/lib/ui/settings/user_details.dart index 2c16092d7..c04a9358d 100644 --- a/lib/ui/settings/user_details.dart +++ b/lib/ui/settings/user_details.dart @@ -308,6 +308,7 @@ class _UserDetailsState extends State tabController: _controller, children: [ ScrollableListView( + primary: true, children: [ FormCard(children: [ DecoratedFormField( @@ -482,6 +483,7 @@ class _UserDetailsState extends State ], ), ScrollableListView( + primary: true, children: [ NotificationSettings( user: user, diff --git a/lib/ui/settings/workflow_settings.dart b/lib/ui/settings/workflow_settings.dart index 8b43cd1c7..37139e1b7 100644 --- a/lib/ui/settings/workflow_settings.dart +++ b/lib/ui/settings/workflow_settings.dart @@ -92,6 +92,7 @@ class _WorkflowSettingsState extends State focusNode: _focusNode, children: [ ScrollableListView( + primary: true, children: [ FormCard(children: [ BoolDropdownButton( @@ -155,6 +156,7 @@ class _WorkflowSettingsState extends State ], ), ScrollableListView( + primary: true, children: [ FormCard( isLast: true,