diff --git a/lib/views/addcontactview.dart b/lib/views/addcontactview.dart index 921ee84d..1b83c0b4 100644 --- a/lib/views/addcontactview.dart +++ b/lib/views/addcontactview.dart @@ -114,9 +114,12 @@ class _AddContactViewState extends State { /// The Add Peer Tab allows a peer to add a specific non-group peer to their contact lists /// We also provide a convenient way to copy their onion. Widget addPeerTab(bcontext) { + ScrollController controller = ScrollController(); return Scrollbar( + controller: controller, child: SingleChildScrollView( clipBehavior: Clip.antiAlias, + controller: controller, child: Container( margin: EdgeInsets.all(30), padding: EdgeInsets.all(20), @@ -187,10 +190,12 @@ class _AddContactViewState extends State { if (Provider.of(bcontext).serverList.servers.isEmpty) { return Text(AppLocalizations.of(bcontext)!.addServerFirst); } - + ScrollController controller = ScrollController(); return Scrollbar( + controller: controller, child: SingleChildScrollView( clipBehavior: Clip.antiAlias, + controller: controller, child: Container( margin: EdgeInsets.all(30), padding: EdgeInsets.all(20), diff --git a/lib/views/addeditprofileview.dart b/lib/views/addeditprofileview.dart index 7a48cac6..f1041d11 100644 --- a/lib/views/addeditprofileview.dart +++ b/lib/views/addeditprofileview.dart @@ -38,6 +38,7 @@ class _AddEditProfileViewState extends State { final ctrlrPass = TextEditingController(text: ""); final ctrlrPass2 = TextEditingController(text: ""); final ctrlrOnion = TextEditingController(text: ""); + ScrollController controller = ScrollController(); late bool usePassword; late bool deleted; @@ -75,8 +76,10 @@ class _AddEditProfileViewState extends State { return Consumer(builder: (context, theme, child) { return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) { return Scrollbar( - isAlwaysShown: true, + trackVisibility: true, + controller: controller, child: SingleChildScrollView( + controller: controller, clipBehavior: Clip.antiAlias, child: ConstrainedBox( constraints: BoxConstraints( diff --git a/lib/views/addeditservers.dart b/lib/views/addeditservers.dart index 23461e06..978c8573 100644 --- a/lib/views/addeditservers.dart +++ b/lib/views/addeditservers.dart @@ -67,11 +67,14 @@ class _AddEditServerViewState extends State { } Widget _buildSettingsList() { + ScrollController controller = ScrollController(); return Consumer2(builder: (context, serverInfoState, settings, child) { return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) { return Scrollbar( - isAlwaysShown: true, + trackVisibility: true, + controller: controller, child: SingleChildScrollView( + controller: controller, clipBehavior: Clip.antiAlias, child: ConstrainedBox( constraints: BoxConstraints( diff --git a/lib/views/globalsettingsview.dart b/lib/views/globalsettingsview.dart index 29c45fd8..924e18cd 100644 --- a/lib/views/globalsettingsview.dart +++ b/lib/views/globalsettingsview.dart @@ -36,6 +36,8 @@ class _GlobalSettingsViewState extends State { static const androidSettingsChangeChannel = const MethodChannel('androidSettingsChanged'); bool powerExempt = false; + ScrollController settingsListScrollController = ScrollController(); + @override void dispose() { super.dispose(); @@ -95,9 +97,11 @@ class _GlobalSettingsViewState extends State { var appIcon = Icon(Icons.info, color: settings.current().mainTextColor); return Scrollbar( key: Key("SettingsView"), - isAlwaysShown: true, + trackVisibility: true, + controller: settingsListScrollController, child: SingleChildScrollView( clipBehavior: Clip.antiAlias, + controller: settingsListScrollController, padding: EdgeInsets.all(20), child: ConstrainedBox( constraints: BoxConstraints( diff --git a/lib/views/groupsettingsview.dart b/lib/views/groupsettingsview.dart index 032ed800..65048f7d 100644 --- a/lib/views/groupsettingsview.dart +++ b/lib/views/groupsettingsview.dart @@ -27,6 +27,7 @@ class _GroupSettingsViewState extends State { final ctrlrNick = TextEditingController(text: ""); final ctrlrGroupAddr = TextEditingController(text: ""); + ScrollController groupSettingsScrollController = ScrollController(); @override void initState() { @@ -55,9 +56,11 @@ class _GroupSettingsViewState extends State { return Consumer(builder: (context, settings, child) { return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) { return Scrollbar( - isAlwaysShown: true, + trackVisibility: true, + controller: groupSettingsScrollController, child: SingleChildScrollView( clipBehavior: Clip.antiAlias, + controller: groupSettingsScrollController, child: ConstrainedBox( constraints: BoxConstraints( minHeight: viewportConstraints.maxHeight, diff --git a/lib/views/peersettingsview.dart b/lib/views/peersettingsview.dart index 7d4c029e..d4ae50c0 100644 --- a/lib/views/peersettingsview.dart +++ b/lib/views/peersettingsview.dart @@ -28,6 +28,7 @@ class _PeerSettingsViewState extends State { } final ctrlrNick = TextEditingController(text: ""); + ScrollController peerSettingsScrollController = ScrollController(); @override void initState() { @@ -83,9 +84,11 @@ class _PeerSettingsViewState extends State { } return Scrollbar( - isAlwaysShown: true, + trackVisibility: true, + controller: peerSettingsScrollController, child: SingleChildScrollView( clipBehavior: Clip.antiAlias, + controller: peerSettingsScrollController, child: ConstrainedBox( constraints: BoxConstraints( minHeight: viewportConstraints.maxHeight, diff --git a/lib/views/profileserversview.dart b/lib/views/profileserversview.dart index e897696e..8e115c31 100644 --- a/lib/views/profileserversview.dart +++ b/lib/views/profileserversview.dart @@ -76,10 +76,13 @@ class _ProfileServersView extends State { ))); return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) { + ScrollController controller = ScrollController(); return Scrollbar( - isAlwaysShown: true, + trackVisibility: true, + controller: controller, child: SingleChildScrollView( clipBehavior: Clip.antiAlias, + controller: controller, child: Container( margin: EdgeInsets.fromLTRB(5, 0, 5, 10), padding: EdgeInsets.fromLTRB(5, 0, 5, 10), diff --git a/lib/views/torstatusview.dart b/lib/views/torstatusview.dart index 5abdee60..beb2c601 100644 --- a/lib/views/torstatusview.dart +++ b/lib/views/torstatusview.dart @@ -21,6 +21,7 @@ class _TorStatusView extends State { TextEditingController torSocksPortController = TextEditingController(); TextEditingController torControlPortController = TextEditingController(); TextEditingController torConfigController = TextEditingController(); + ScrollController torScrollContoller = ScrollController(); @override void dispose() { @@ -52,7 +53,8 @@ class _TorStatusView extends State { return Consumer(builder: (context, torStatus, child) { return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) { return Scrollbar( - isAlwaysShown: true, + trackVisibility: true, + controller: torScrollContoller, child: SingleChildScrollView( clipBehavior: Clip.antiAlias, child: ConstrainedBox( diff --git a/lib/widgets/messagerow.dart b/lib/widgets/messagerow.dart index 9da8885b..132664f6 100644 --- a/lib/widgets/messagerow.dart +++ b/lib/widgets/messagerow.dart @@ -371,6 +371,7 @@ void modalShowReplies( context: ctx, builder: (BuildContext bcontext) { List replies = getReplies(cache, messageID); + ScrollController controller = ScrollController(); return ChangeNotifierProvider.value( value: profile, @@ -432,7 +433,8 @@ void modalShowReplies( } return Scrollbar( - isAlwaysShown: true, + trackVisibility: true, + controller: controller, child: SingleChildScrollView( clipBehavior: Clip.antiAlias, child: ConstrainedBox( diff --git a/lib/widgets/remoteserverrow.dart b/lib/widgets/remoteserverrow.dart index a3d20207..26258004 100644 --- a/lib/widgets/remoteserverrow.dart +++ b/lib/widgets/remoteserverrow.dart @@ -40,9 +40,9 @@ class _RemoteServerRowState extends State { Visibility( visible: !running, child: Icon( - CwtchIcons.negative_heart_24px, - color: Provider.of(context).theme.portraitOfflineBorderColor, - )), + CwtchIcons.negative_heart_24px, + color: Provider.of(context).theme.portraitOfflineBorderColor, + )), ])), Expanded( child: Column(