showCreateUserListDialog method Null safety
- 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;
}