settingsDialog function Null safety
Rename Dialog @param context: context @param item: distro name @param statusMsg: Function(String, {bool loading})
Implementation
settingsDialog(
context, item, Function(String, {bool loading}) statusMsg) async {
var title = 'settings-text'.i18n();
final pathController = TextEditingController();
pathController.text = prefs.getString('StartPath_$item') ?? '';
final userController = TextEditingController();
userController.text = prefs.getString('StartUser_$item') ?? '';
plausible.event(page: title.split(' ')[0].toLowerCase());
bool isSyncing = false;
String ip = await WSLApi().execCmdAsRoot(item, 'hostname --all-ip-addresses');
String portsTcp =
extractPorts(await WSLApi().execCmdAsRoot(item, 'cat /proc/net/tcp'));
String portsUdp =
extractPorts(await WSLApi().execCmdAsRoot(item, 'cat /proc/net/udp'));
String portsTcp6 =
extractPorts(await WSLApi().execCmdAsRoot(item, 'cat /proc/net/tcp6'));
String portsUdp6 =
extractPorts(await WSLApi().execCmdAsRoot(item, 'cat /proc/net/udp6'));
showDialog(
context: context,
builder: (childcontext) {
return ContentDialog(
constraints: const BoxConstraints(maxHeight: 500.0, maxWidth: 500.0),
title: Text(title),
content: StatefulBuilder(builder: (BuildContext context, setState) {
return SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(12.0),
child: settingsColumn(
pathController,
userController,
context,
item,
statusMsg,
ip,
portsTcp,
portsTcp6,
portsUdp,
portsUdp6,
isSyncing,
setState),
),
);
}),
actions: [
Button(
child: Text('cancel-text'.i18n()),
onPressed: () {
Navigator.pop(context);
}),
Button(
child: Text('save-text'.i18n()),
onPressed: () {
prefs.setString('StartPath_$item', pathController.text);
prefs.setString('StartUser_$item', userController.text);
Navigator.pop(context);
}),
],
);
},
);
}