AlertDialog With Textfield Validator Flutter

[Solved] AlertDialog With Textfield Validator Flutter | Cobol - Code Explorer | yomemimo.com
Question : alertDialog with textfield validator flutter

Answered by : testy-teira-y41biasx5bpb

 // Creates an alertDialog for the user to enter their email Future<String> _resetDialogBox() { return showDialog<String>( context: context, barrierDismissible: false, // user must tap button! builder: (BuildContext context) { return CustomAlertDialog( title: "Reset email", auth: _auth, ); }, ); }
class CustomAlertDialog extends StatefulWidget { final String title; final FirebaseAuth auth; const CustomAlertDialog({Key key, this.title, this.auth}) : super(key: key); @override CustomAlertDialogState createState() { return new CustomAlertDialogState(); }
}
class CustomAlertDialogState extends State<CustomAlertDialog> { final _resetKey = GlobalKey<FormState>(); final _resetEmailController = TextEditingController(); String _resetEmail; bool _resetValidate = false; StreamController<bool> rebuild = StreamController<bool>(); bool _sendResetEmail() { _resetEmail = _resetEmailController.text; if (_resetKey.currentState.validate()) { _resetKey.currentState.save(); try { // You could consider using async/await here widget.auth.sendPasswordResetEmail(email: _resetEmail); return true; } catch (exception) { print(exception); } } else { setState(() { _resetValidate = true; }); return false; } } @override Widget build(BuildContext context) { return Container( child: AlertDialog( title: new Text(widget.title), content: new SingleChildScrollView( child: Form( key: _resetKey, autovalidate: _resetValidate, child: ListBody( children: <Widget>[ new Text( 'Enter the Email Address associated with your account.', style: TextStyle(fontSize: 14.0), ), Padding( padding: EdgeInsets.all(10.0), ), Row( children: <Widget>[ new Padding( padding: EdgeInsets.only(top: 8.0), child: Icon( Icons.email, size: 20.0, ), ), new Expanded( child: TextFormField( validator: validateEmail, onSaved: (String val) { _resetEmail = val; }, controller: _resetEmailController, keyboardType: TextInputType.emailAddress, autofocus: true, decoration: new InputDecoration( border: InputBorder.none, hintText: 'Email', contentPadding: EdgeInsets.only(left: 70.0, top: 15.0), hintStyle: TextStyle(color: Colors.black, fontSize: 14.0)), style: TextStyle(color: Colors.black), ), ) ], ), new Column(children: <Widget>[ Container( decoration: new BoxDecoration( border: new Border( bottom: new BorderSide( width: 0.5, color: Colors.black))), ) ]), ], ), ), ), actions: <Widget>[ new FlatButton( child: new Text( 'CANCEL', style: TextStyle(color: Colors.black), ), onPressed: () { Navigator.of(context).pop(""); }, ), new FlatButton( child: new Text( 'SEND EMAIL', style: TextStyle(color: Colors.black), ), onPressed: () { if (_sendResetEmail()) { Navigator.of(context).pop(_resetEmail); } }, ), ], ), ); }
}
String validateEmail(String value) { String pattern = r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$'; RegExp regExp = new RegExp(pattern); if (value.length == 0) { return "Email is required"; } else if (!regExp.hasMatch(value)) { return "Invalid Email"; } else { return null; }
}

Source : https://stackoverflow.com/questions/53061369/how-to-validate-text-input-on-alertdialog-using-form-and-globalkey | Last Update : Mon, 02 Nov 20

Answers related to alertDialog with textfield validator flutter

Code Explorer Popular Question For Cobol