import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:fcs/model/user_model.dart'; import 'package:fcs/theme/theme.dart'; import 'package:fcs/widget/localization/app_translations.dart'; import 'package:fcs/widget/progress.dart'; import 'util.dart'; class ConfirmEmail extends StatefulWidget { final String id, email, phoneNumber; const ConfirmEmail({Key key, this.id, this.email, this.phoneNumber}) : super(key: key); @override _ConfirmEmailState createState() => _ConfirmEmailState(); } class _ConfirmEmailState extends State { final TextEditingController _sms = new TextEditingController(); bool _isLoading = false; final _formKey = GlobalKey(); @override void initState() { super.initState(); } _confimEmail() async { UserModel userModel = Provider.of(context); if (!_formKey.currentState.validate()) { return; } setState(() { _isLoading = true; }); try { await userModel.confirmEmail( widget.id, widget.email, widget.phoneNumber, _sms.text); Navigator.pushNamedAndRemoveUntil(context, "/home", (r) => false); } catch (e) { showMsgDialog(context, "Error", e.toString()); } Future.delayed(Duration(seconds: 1), () { if (mounted) { setState(() { _isLoading = false; }); } }); } @override Widget build(BuildContext context) { final smsInput = TextFormField( controller: _sms, keyboardType: TextInputType.number, autofocus: false, decoration: new InputDecoration( labelText: widget.email == null ? AppTranslations.of(context).text("sms.sms") : AppTranslations.of(context).text("email.code"), labelStyle: labelStyle, hintText: 'eg. 123456', icon: Icon( Icons.lock, color: primaryColor, )), validator: (value) { if (value.isEmpty) { return widget.email == null ? AppTranslations.of(context).text("sms.empty") : AppTranslations.of(context).text("email.code_empty"); } return null; }, ); final enterButton = Padding( padding: EdgeInsets.symmetric(vertical: 16.0), child: RaisedButton( onPressed: () => _confimEmail(), padding: EdgeInsets.all(12), color: primaryColor, child: Text(AppTranslations.of(context).text("sms.enter"), style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), ), ); return LocalProgress( inAsyncCall: _isLoading, child: Scaffold( appBar: AppBar( title: Text(widget.email == null ? AppTranslations.of(context).text("input_sms") : AppTranslations.of(context).text("email.input")), backgroundColor: primaryColor, ), body: Center( child: ListView( shrinkWrap: true, padding: EdgeInsets.only(left: 24.0, right: 24.0), children: [ Form(key: _formKey, child: smsInput), SizedBox(height: 8.0), enterButton, ], ), ), ), ); } }