import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:fcs/model/language_model.dart'; import 'package:fcs/model/main_model.dart'; import 'package:fcs/model/shared_pref.dart'; import 'package:fcs/model/user_model.dart'; import 'package:fcs/fcs/common/theme.dart'; import 'package:fcs/vo/user.dart'; import 'package:fcs/widget/local_text.dart'; import 'package:fcs/widget/localization/app_translations.dart'; import 'package:fcs/widget/progress.dart'; import 'confirm_email.dart'; import 'util.dart'; class EmailPage extends StatefulWidget { final User user; EmailPage({this.user}); @override _EmailPageState createState() => _EmailPageState(); } class _EmailPageState extends State { final TextEditingController _email = new TextEditingController(); bool _isLoading = false; final _formKey = GlobalKey(); @override void initState() { super.initState(); if (widget.user != null) { _email.text = widget.user.email; } } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { MainModel mainModel = Provider.of(context); var languageModel = Provider.of(context); final emailInput = TextFormField( controller: _email, autofocus: false, decoration: new InputDecoration( enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.grey, width: 1.0)), focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.grey, width: 1.0)), labelText: AppTranslations.of(context).text("login.email"), labelStyle: labelStyle, icon: Icon( Icons.email, color: primaryColor, )), validator: (value) { if (value.isEmpty) { return AppTranslations.of(context).text("login.email.empty"); } return null; }, ); final enterButton = Padding( padding: EdgeInsets.symmetric(vertical: 16.0), child: RaisedButton( onPressed: () => _add(mainModel), padding: EdgeInsets.all(10), color: primaryColor, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(7), ), child: Text(AppTranslations.of(context).text("login.email.add"), style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)), ), ); final skipButton = Container( child: InkWell( onTap: () { SharedPref.saveSkippedRecoverEmail(true); Navigator.pushNamedAndRemoveUntil( context, "/welcome", (r) => false); }, child: Row( mainAxisAlignment: MainAxisAlignment.end, children: [ Text( AppTranslations.of(context).text("login.email.skip"), style: languageModel.isEng ? TextStyle(fontSize: 18, fontFamily: 'WorkSansMedium') : TextStyle(fontSize: 18, fontFamily: 'MyanmarUnicode'), ), Container( padding: EdgeInsets.only(top: 4), child: Icon( Icons.skip_next, size: 30, )), ], )), ); return LocalProgress( inAsyncCall: _isLoading, child: Scaffold( appBar: AppBar( title: LocalText( context, 'login.email.title', fontSize: 20, color: Colors.white, ), backgroundColor: primaryColor, ), body: Center( child: ListView( shrinkWrap: true, padding: EdgeInsets.only(left: 24.0, right: 24.0), children: [ Form(key: _formKey, child: emailInput), SizedBox(height: 8.0), enterButton, widget.user != null ? Container() : skipButton ], ), ), ), ); } Future _add(MainModel mainModel) async { if (!_formKey.currentState.validate()) { return; } setState(() { _isLoading = true; }); try { UserModel userModel = Provider.of(context); await userModel.addEmail(mainModel.user.phoneNumber, _email.text); Navigator.push( context, MaterialPageRoute( builder: (context) => ConfirmEmail( id: mainModel.user.phoneNumber, email: _email.text, ))); } catch (e) { showMsgDialog(context, "Error", e.toString()); } finally { setState(() { _isLoading = false; }); } } }