Merge pull request 'Ensure all Scrollbars have dedicated Controllers' (#613) from scrollbars into trunk
continuous-integration/drone/push Build is pending Details

Reviewed-on: #613
This commit is contained in:
Dan Ballard 2022-12-30 23:16:00 +00:00
commit 7bcde5a1fa
10 changed files with 40 additions and 12 deletions

View File

@ -114,9 +114,12 @@ class _AddContactViewState extends State<AddContactView> {
/// The Add Peer Tab allows a peer to add a specific non-group peer to their contact lists /// 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. /// We also provide a convenient way to copy their onion.
Widget addPeerTab(bcontext) { Widget addPeerTab(bcontext) {
ScrollController controller = ScrollController();
return Scrollbar( return Scrollbar(
controller: controller,
child: SingleChildScrollView( child: SingleChildScrollView(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
controller: controller,
child: Container( child: Container(
margin: EdgeInsets.all(30), margin: EdgeInsets.all(30),
padding: EdgeInsets.all(20), padding: EdgeInsets.all(20),
@ -187,10 +190,12 @@ class _AddContactViewState extends State<AddContactView> {
if (Provider.of<ProfileInfoState>(bcontext).serverList.servers.isEmpty) { if (Provider.of<ProfileInfoState>(bcontext).serverList.servers.isEmpty) {
return Text(AppLocalizations.of(bcontext)!.addServerFirst); return Text(AppLocalizations.of(bcontext)!.addServerFirst);
} }
ScrollController controller = ScrollController();
return Scrollbar( return Scrollbar(
controller: controller,
child: SingleChildScrollView( child: SingleChildScrollView(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
controller: controller,
child: Container( child: Container(
margin: EdgeInsets.all(30), margin: EdgeInsets.all(30),
padding: EdgeInsets.all(20), padding: EdgeInsets.all(20),

View File

@ -38,6 +38,7 @@ class _AddEditProfileViewState extends State<AddEditProfileView> {
final ctrlrPass = TextEditingController(text: ""); final ctrlrPass = TextEditingController(text: "");
final ctrlrPass2 = TextEditingController(text: ""); final ctrlrPass2 = TextEditingController(text: "");
final ctrlrOnion = TextEditingController(text: ""); final ctrlrOnion = TextEditingController(text: "");
ScrollController controller = ScrollController();
late bool usePassword; late bool usePassword;
late bool deleted; late bool deleted;
@ -75,8 +76,10 @@ class _AddEditProfileViewState extends State<AddEditProfileView> {
return Consumer<Settings>(builder: (context, theme, child) { return Consumer<Settings>(builder: (context, theme, child) {
return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) { return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) {
return Scrollbar( return Scrollbar(
isAlwaysShown: true, trackVisibility: true,
controller: controller,
child: SingleChildScrollView( child: SingleChildScrollView(
controller: controller,
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints( constraints: BoxConstraints(

View File

@ -67,11 +67,14 @@ class _AddEditServerViewState extends State<AddEditServerView> {
} }
Widget _buildSettingsList() { Widget _buildSettingsList() {
ScrollController controller = ScrollController();
return Consumer2<ServerInfoState, Settings>(builder: (context, serverInfoState, settings, child) { return Consumer2<ServerInfoState, Settings>(builder: (context, serverInfoState, settings, child) {
return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) { return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) {
return Scrollbar( return Scrollbar(
isAlwaysShown: true, trackVisibility: true,
controller: controller,
child: SingleChildScrollView( child: SingleChildScrollView(
controller: controller,
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints( constraints: BoxConstraints(

View File

@ -36,6 +36,8 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
static const androidSettingsChangeChannel = const MethodChannel('androidSettingsChanged'); static const androidSettingsChangeChannel = const MethodChannel('androidSettingsChanged');
bool powerExempt = false; bool powerExempt = false;
ScrollController settingsListScrollController = ScrollController();
@override @override
void dispose() { void dispose() {
super.dispose(); super.dispose();
@ -95,9 +97,11 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
var appIcon = Icon(Icons.info, color: settings.current().mainTextColor); var appIcon = Icon(Icons.info, color: settings.current().mainTextColor);
return Scrollbar( return Scrollbar(
key: Key("SettingsView"), key: Key("SettingsView"),
isAlwaysShown: true, trackVisibility: true,
controller: settingsListScrollController,
child: SingleChildScrollView( child: SingleChildScrollView(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
controller: settingsListScrollController,
padding: EdgeInsets.all(20), padding: EdgeInsets.all(20),
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints( constraints: BoxConstraints(

View File

@ -27,6 +27,7 @@ class _GroupSettingsViewState extends State<GroupSettingsView> {
final ctrlrNick = TextEditingController(text: ""); final ctrlrNick = TextEditingController(text: "");
final ctrlrGroupAddr = TextEditingController(text: ""); final ctrlrGroupAddr = TextEditingController(text: "");
ScrollController groupSettingsScrollController = ScrollController();
@override @override
void initState() { void initState() {
@ -55,9 +56,11 @@ class _GroupSettingsViewState extends State<GroupSettingsView> {
return Consumer<Settings>(builder: (context, settings, child) { return Consumer<Settings>(builder: (context, settings, child) {
return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) { return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) {
return Scrollbar( return Scrollbar(
isAlwaysShown: true, trackVisibility: true,
controller: groupSettingsScrollController,
child: SingleChildScrollView( child: SingleChildScrollView(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
controller: groupSettingsScrollController,
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints( constraints: BoxConstraints(
minHeight: viewportConstraints.maxHeight, minHeight: viewportConstraints.maxHeight,

View File

@ -28,6 +28,7 @@ class _PeerSettingsViewState extends State<PeerSettingsView> {
} }
final ctrlrNick = TextEditingController(text: ""); final ctrlrNick = TextEditingController(text: "");
ScrollController peerSettingsScrollController = ScrollController();
@override @override
void initState() { void initState() {
@ -83,9 +84,11 @@ class _PeerSettingsViewState extends State<PeerSettingsView> {
} }
return Scrollbar( return Scrollbar(
isAlwaysShown: true, trackVisibility: true,
controller: peerSettingsScrollController,
child: SingleChildScrollView( child: SingleChildScrollView(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
controller: peerSettingsScrollController,
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints( constraints: BoxConstraints(
minHeight: viewportConstraints.maxHeight, minHeight: viewportConstraints.maxHeight,

View File

@ -76,10 +76,13 @@ class _ProfileServersView extends State<ProfileServersView> {
))); )));
return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) { return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) {
ScrollController controller = ScrollController();
return Scrollbar( return Scrollbar(
isAlwaysShown: true, trackVisibility: true,
controller: controller,
child: SingleChildScrollView( child: SingleChildScrollView(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
controller: controller,
child: Container( child: Container(
margin: EdgeInsets.fromLTRB(5, 0, 5, 10), margin: EdgeInsets.fromLTRB(5, 0, 5, 10),
padding: EdgeInsets.fromLTRB(5, 0, 5, 10), padding: EdgeInsets.fromLTRB(5, 0, 5, 10),

View File

@ -21,6 +21,7 @@ class _TorStatusView extends State<TorStatusView> {
TextEditingController torSocksPortController = TextEditingController(); TextEditingController torSocksPortController = TextEditingController();
TextEditingController torControlPortController = TextEditingController(); TextEditingController torControlPortController = TextEditingController();
TextEditingController torConfigController = TextEditingController(); TextEditingController torConfigController = TextEditingController();
ScrollController torScrollContoller = ScrollController();
@override @override
void dispose() { void dispose() {
@ -52,7 +53,8 @@ class _TorStatusView extends State<TorStatusView> {
return Consumer<TorStatus>(builder: (context, torStatus, child) { return Consumer<TorStatus>(builder: (context, torStatus, child) {
return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) { return LayoutBuilder(builder: (BuildContext context, BoxConstraints viewportConstraints) {
return Scrollbar( return Scrollbar(
isAlwaysShown: true, trackVisibility: true,
controller: torScrollContoller,
child: SingleChildScrollView( child: SingleChildScrollView(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
child: ConstrainedBox( child: ConstrainedBox(

View File

@ -371,6 +371,7 @@ void modalShowReplies(
context: ctx, context: ctx,
builder: (BuildContext bcontext) { builder: (BuildContext bcontext) {
List<Message> replies = getReplies(cache, messageID); List<Message> replies = getReplies(cache, messageID);
ScrollController controller = ScrollController();
return ChangeNotifierProvider.value( return ChangeNotifierProvider.value(
value: profile, value: profile,
@ -432,7 +433,8 @@ void modalShowReplies(
} }
return Scrollbar( return Scrollbar(
isAlwaysShown: true, trackVisibility: true,
controller: controller,
child: SingleChildScrollView( child: SingleChildScrollView(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
child: ConstrainedBox( child: ConstrainedBox(

View File

@ -40,9 +40,9 @@ class _RemoteServerRowState extends State<RemoteServerRow> {
Visibility( Visibility(
visible: !running, visible: !running,
child: Icon( child: Icon(
CwtchIcons.negative_heart_24px, CwtchIcons.negative_heart_24px,
color: Provider.of<Settings>(context).theme.portraitOfflineBorderColor, color: Provider.of<Settings>(context).theme.portraitOfflineBorderColor,
)), )),
])), ])),
Expanded( Expanded(
child: Column( child: Column(