settingsDialog function Null safety

dynamic settingsDialog(
  1. dynamic context,
  2. dynamic item,
  3. dynamic statusMsg(
    1. String,
    2. {bool loading}
    )
)

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);
              }),
        ],
      );
    },
  );
}