From 76e7bf529341eaefc954453123f42eeaf52970b8 Mon Sep 17 00:00:00 2001 From: 21pages Date: Mon, 12 Sep 2022 11:23:45 +0800 Subject: [PATCH] add ScrollController to each ScrollView fix "The provided ScrollController is currently attached to more than one ScrollPosition" Signed-off-by: 21pages --- flutter/lib/desktop/pages/connection_page.dart | 1 + flutter/lib/desktop/pages/desktop_setting_page.dart | 9 +++++++-- flutter/lib/desktop/pages/file_manager_page.dart | 3 +++ flutter/lib/desktop/pages/port_forward_page.dart | 2 ++ flutter/lib/desktop/widgets/material_mod_popup_menu.dart | 1 + flutter/lib/desktop/widgets/peer_widget.dart | 1 + flutter/lib/mobile/pages/connection_page.dart | 1 + flutter/lib/mobile/pages/file_manager_page.dart | 1 + flutter/lib/mobile/pages/remote_page.dart | 1 + 9 files changed, 18 insertions(+), 2 deletions(-) diff --git a/flutter/lib/desktop/pages/connection_page.dart b/flutter/lib/desktop/pages/connection_page.dart index a39877b64..64a74d22a 100644 --- a/flutter/lib/desktop/pages/connection_page.dart +++ b/flutter/lib/desktop/pages/connection_page.dart @@ -1023,6 +1023,7 @@ class _PeerTabbedPageState extends State<_PeerTabbedPage> return ListView( scrollDirection: Axis.horizontal, shrinkWrap: true, + controller: ScrollController(), children: super.widget.tabs.asMap().entries.map((t) { return Obx(() => GestureDetector( child: Container( diff --git a/flutter/lib/desktop/pages/desktop_setting_page.dart b/flutter/lib/desktop/pages/desktop_setting_page.dart index 87d12c9c3..9aae9dc29 100644 --- a/flutter/lib/desktop/pages/desktop_setting_page.dart +++ b/flutter/lib/desktop/pages/desktop_setting_page.dart @@ -122,6 +122,7 @@ class _DesktopSettingPageState extends State Widget _listView({required List<_TabInfo> tabs}) { return ListView( + controller: ScrollController(), children: tabs .asMap() .entries @@ -181,6 +182,7 @@ class _GeneralState extends State<_General> { @override Widget build(BuildContext context) { return ListView( + controller: ScrollController(), children: [ theme(), abr(), @@ -300,6 +302,7 @@ class _LanguageState extends State<_Language> Widget build(BuildContext context) { super.build(context); return ListView( + controller: ScrollController(), children: [ _Card(title: 'Language', children: [language()]), ], @@ -353,6 +356,7 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin { Widget build(BuildContext context) { super.build(context); return ListView( + controller: ScrollController(), children: [ Column( children: [ @@ -622,7 +626,7 @@ class _NetworkState extends State<_Network> with AutomaticKeepAliveClientMixin { Widget build(BuildContext context) { super.build(context); bool enabled = !locked; - return ListView(children: [ + return ListView(controller: ScrollController(), children: [ Column( children: [ _lock(locked, 'Unlock Network Settings', () { @@ -657,6 +661,7 @@ class _AcountState extends State<_Acount> { @override Widget build(BuildContext context) { return ListView( + controller: ScrollController(), children: [ _Card(title: 'Acount', children: [login()]), _Card(title: 'ID', children: [changeId()]), @@ -705,7 +710,7 @@ class _AboutState extends State<_About> { final license = data['license'].toString(); final version = data['version'].toString(); const linkStyle = TextStyle(decoration: TextDecoration.underline); - return ListView(children: [ + return ListView(controller: ScrollController(), children: [ _Card(title: "About RustDesk", children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/flutter/lib/desktop/pages/file_manager_page.dart b/flutter/lib/desktop/pages/file_manager_page.dart index bd6e4cb63..eee3c226b 100644 --- a/flutter/lib/desktop/pages/file_manager_page.dart +++ b/flutter/lib/desktop/pages/file_manager_page.dart @@ -184,6 +184,7 @@ class _FileManagerPageState extends State children: [ Expanded( child: SingleChildScrollView( + controller: ScrollController(), child: ObxValue( (searchText) { final filteredEntries = searchText.isEmpty @@ -309,6 +310,7 @@ class _FileManagerPageState extends State // Center(child: listTail(isLocal: isLocal)), // Expanded( // child: ListView.builder( + // controller: ScrollController(), // itemCount: entries.length + 1, // itemBuilder: (context, index) { // if (index >= entries.length) { @@ -424,6 +426,7 @@ class _FileManagerPageState extends State decoration: BoxDecoration(border: Border.all(color: Colors.grey)), child: Obx( () => ListView.builder( + controller: ScrollController(), itemBuilder: (BuildContext context, int index) { final item = model.jobTable[index]; return Column( diff --git a/flutter/lib/desktop/pages/port_forward_page.dart b/flutter/lib/desktop/pages/port_forward_page.dart index aa108c2f5..f3e988744 100644 --- a/flutter/lib/desktop/pages/port_forward_page.dart +++ b/flutter/lib/desktop/pages/port_forward_page.dart @@ -133,6 +133,7 @@ class _PortForwardPageState extends State data: Theme.of(context) .copyWith(backgroundColor: MyTheme.color(context).bg), child: Obx(() => ListView.builder( + controller: ScrollController(), itemCount: pfs.length + 2, itemBuilder: ((context, index) { if (index == 0) { @@ -293,6 +294,7 @@ class _PortForwardPageState extends State data: Theme.of(context) .copyWith(backgroundColor: MyTheme.color(context).bg), child: ListView.builder( + controller: ScrollController(), itemCount: 2, itemBuilder: ((context, index) { if (index == 0) { diff --git a/flutter/lib/desktop/widgets/material_mod_popup_menu.dart b/flutter/lib/desktop/widgets/material_mod_popup_menu.dart index 8b0acba9a..1345f72f1 100644 --- a/flutter/lib/desktop/widgets/material_mod_popup_menu.dart +++ b/flutter/lib/desktop/widgets/material_mod_popup_menu.dart @@ -614,6 +614,7 @@ class _PopupMenu extends StatelessWidget { padding: const EdgeInsets.symmetric( vertical: _kMenuVerticalPadding, ), + controller: ScrollController(), child: ListBody(children: children), ), ), diff --git a/flutter/lib/desktop/widgets/peer_widget.dart b/flutter/lib/desktop/widgets/peer_widget.dart index 02b5b9f00..32976fb5b 100644 --- a/flutter/lib/desktop/widgets/peer_widget.dart +++ b/flutter/lib/desktop/widgets/peer_widget.dart @@ -85,6 +85,7 @@ class _PeerWidgetState extends State<_PeerWidget> with WindowListener { child: Text(translate("Empty")), ) : SingleChildScrollView( + controller: ScrollController(), child: ObxValue((searchText) { return FutureBuilder>( builder: (context, snapshot) { diff --git a/flutter/lib/mobile/pages/connection_page.dart b/flutter/lib/mobile/pages/connection_page.dart index ba34b31e8..7549bbae7 100644 --- a/flutter/lib/mobile/pages/connection_page.dart +++ b/flutter/lib/mobile/pages/connection_page.dart @@ -66,6 +66,7 @@ class _ConnectionPageState extends State { Widget build(BuildContext context) { Provider.of(context); return SingleChildScrollView( + controller: ScrollController(), child: Column( mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.max, diff --git a/flutter/lib/mobile/pages/file_manager_page.dart b/flutter/lib/mobile/pages/file_manager_page.dart index 87169b987..dd1cbb83f 100644 --- a/flutter/lib/mobile/pages/file_manager_page.dart +++ b/flutter/lib/mobile/pages/file_manager_page.dart @@ -203,6 +203,7 @@ class _FileManagerPageState extends State { headTools(), Expanded( child: ListView.builder( + controller: ScrollController(), itemCount: entries.length + 1, itemBuilder: (context, index) { if (index >= entries.length) { diff --git a/flutter/lib/mobile/pages/remote_page.dart b/flutter/lib/mobile/pages/remote_page.dart index dd3742d32..a9a03c04d 100644 --- a/flutter/lib/mobile/pages/remote_page.dart +++ b/flutter/lib/mobile/pages/remote_page.dart @@ -759,6 +759,7 @@ class _RemotePageState extends State { expand: false, builder: (context, scrollController) { return SingleChildScrollView( + controller: ScrollController(), padding: EdgeInsets.symmetric(vertical: 10), child: GestureHelp( touchMode: gFFI.ffiModel.touchMode,