showCreateUserListDialog method Null safety

Future showCreateUserListDialog(
  1. dynamic context
)

Shows a "create list" dialog; returns the new ProductList if relevant.

Implementation

Future<ProductList?> showCreateUserListDialog(
  final BuildContext context,
) async {
  final AppLocalizations appLocalizations = AppLocalizations.of(context);

  final TextEditingController textEditingController = TextEditingController();
  final GlobalKey<FormState> formKey = GlobalKey<FormState>();

  final String? title = await showDialog<String>(
    context: context,
    builder: (final BuildContext context) => AlertDialog(
      title: Text(appLocalizations.user_list_dialog_new_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)) {
              return appLocalizations.user_list_name_error_already;
            }
            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 (title == null) {
    return null;
  }
  final ProductList productList = ProductList.user(title);
  daoProductList.put(productList);
  return productList;
}