showRenameUserListDialog method Null safety
- dynamic context,
- 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);
}