showRenameUserListDialog method Null safety

Future showRenameUserListDialog(
  1. dynamic context,
  2. dynamic initialProductList
)

Shows a "rename list" dialog; returns renamed ProductList if relevant.

Implementation

Future<ProductList?> showRenameUserListDialog(
  final BuildContext context,
  final ProductList initialProductList,
) async {
  final AppLocalizations appLocalizations = AppLocalizations.of(context);
  final TextEditingController textEditingController = TextEditingController();
  final GlobalKey<FormState> formKey = GlobalKey<FormState>();

  final String initialName = initialProductList.parameters;
  textEditingController.text = initialName;
  final String? newName = await showDialog<String>(
    context: context,
    builder: (final BuildContext context) => AlertDialog(
      title: Text(appLocalizations.user_list_dialog_rename_title),
      content: Form(
        key: formKey,
        child: SmoothTextFormField(
          type: TextFieldTypes.PLAIN_TEXT,
          controller: textEditingController,
          hintText: appLocalizations.user_list_name_hint,
          textInputAction: TextInputAction.done,
          validator: (String? value) {
            final List<String> lists = daoProductList.getUserLists();
            if (value == null || value.isEmpty) {
              return appLocalizations.user_list_name_error_empty;
            }
            if (lists.contains(value)) {
              if (value != initialName) {
                return appLocalizations.user_list_name_error_already;
              }
              return appLocalizations.user_list_name_error_same;
            }
            return null;
          },
        ),
      ),
      actions: <Widget>[
        TextButton(
          onPressed: () => Navigator.pop(context),
          child: Text(appLocalizations.cancel),
        ),
        ElevatedButton(
          onPressed: () {
            if (!formKey.currentState!.validate()) {
              return;
            }
            Navigator.pop(context, textEditingController.text);
          },
          child: Text(appLocalizations.okay),
        ),
      ],
    ),
  );
  if (newName == null) {
    return null;
  }
  return daoProductList.rename(initialProductList, newName);
}