forked from cwtch.im/cwtch-ui
Merge pull request 'Ensure all Scrollbars have dedicated Controllers' (#613) from scrollbars into trunk
Reviewed-on: cwtch.im/cwtch-ui#613
This commit is contained in:
commit
7bcde5a1fa
|
@ -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),
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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(
|
||||||
|
|
Loading…
Reference in New Issue