copyDialog function Null safety

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

Copy Dialog @param context: context @param item: distro name @param api: WSLApi @param statusMsg: Function(String, {bool loading})

Implementation

copyDialog(context, item, Function(String, {bool loading}) statusMsg) {
  WSLApi api = WSLApi();
  plausible.event(page: 'copy');
  dialog(
      context: context,
      item: item,
      statusMsg: statusMsg,
      title: '${'copy-text'.i18n()} \'$item\'',
      body: 'copyinstance-text'.i18n([distroLabel(item)]),
      submitText: 'copy-text'.i18n(),
      submitStyle: const ButtonStyle(),
      onSubmit: (inputText) async {
        if (inputText.length > 0) {
          statusMsg('copyinginstance-text'.i18n([item]), loading: true);
          final String path = prefs.getString('SaveLocation') ?? defaultPath;
          String results = await api.copy(item, inputText, location: path);
          // Error catching
          if (results != ' ') {
            statusMsg(results, loading: false);
            return;
          }
          // Copy settings
          String? startPath = prefs.getString('StartPath_$item') ?? '';
          String? startName = prefs.getString('StartUser_$item') ?? '';
          prefs.setString('StartPath_$inputText', startPath);
          prefs.setString('StartUser_$inputText', startName);
          // Save distro path
          prefs.setString('Path_$inputText', defaultPath + inputText);
          statusMsg(
              'donecopyinginstance-text'.i18n([distroLabel(item), inputText]),
              loading: false);
        } else {
          statusMsg('errorentername-text'.i18n(), loading: false);
        }
      });
}