|
- import 'package:farm_tpf/data/repository/user_repository.dart';
- import 'package:farm_tpf/models/account.dart';
- import 'package:farm_tpf/presentation/custom_widgets/widget_loading.dart';
- import 'package:farm_tpf/presentation/custom_widgets/widget_toast.dart';
- import 'package:farm_tpf/presentation/screens/profile/sc_change_password.dart';
- import 'package:farm_tpf/utils/validators.dart';
- import 'package:flutter/material.dart';
- import 'package:fluttertoast/fluttertoast.dart';
- import 'package:keyboard_dismisser/keyboard_dismisser.dart';
-
- import 'bloc_get_account.dart';
-
- class UpdateProfileScreen extends StatefulWidget {
- static Route route() {
- return MaterialPageRoute<void>(builder: (_) => UpdateProfileScreen());
- }
-
- @override
- _UpdateProfileScreenState createState() => _UpdateProfileScreenState();
- }
-
- class _UpdateProfileScreenState extends State<UpdateProfileScreen> {
- final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
- final _repository = UserRepository();
- GlobalKey<FormState> _formKey = GlobalKey();
- bool _autoValidate = false;
- FlutterToast flutterToast;
-
- Account _account = Account();
- TextEditingController _userNameController = TextEditingController();
- TextEditingController _fullNameController = TextEditingController();
- TextEditingController _emailController = TextEditingController();
- TextEditingController _addressController = TextEditingController();
-
- @override
- void initState() {
- super.initState();
- flutterToast = FlutterToast(context);
- getAccountBloc.getAccount((data) {
- _account = data;
- _userNameController.text = _account.login;
- _fullNameController.text = _account.fullName.toString();
- _emailController.text = _account.email.toString();
- _addressController.text = _account.address;
- }, (err) {
- flutterToast.showToast(child: WidgetToast(message: "Lỗi tải dữ liệu"));
- });
- }
-
- _validateInputs() async {
- if (_formKey.currentState.validate()) {
- _formKey.currentState.save();
- LoadingDialog.showLoadingDialog(_scaffoldKey.currentContext);
- _repository.updateProfile(_account).then((value) {
- LoadingDialog.hideLoadingDialog(_scaffoldKey.currentContext);
- _scaffoldKey.currentState.showSnackBar(SnackBar(
- content: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: <Widget>[
- Text('Cập nhật thành công.'),
- Icon(Icons.done),
- ],
- ),
- backgroundColor: Colors.green,
- duration: Duration(seconds: 3),
- ));
- }).catchError((onError) {
- _scaffoldKey.currentState.showSnackBar(SnackBar(
- content: Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: <Widget>[
- Text('Cập nhật không thành công.'),
- Icon(Icons.error),
- ],
- ),
- backgroundColor: Colors.red,
- duration: Duration(seconds: 3),
- ));
- LoadingDialog.hideLoadingDialog(_scaffoldKey.currentContext);
- print("error");
- });
- } else {
- _autoValidate = true;
- }
- }
-
- Widget _userNameField() {
- return TextFormField(
- keyboardType: TextInputType.text,
- enabled: false,
- decoration: InputDecoration(labelText: "Tài khoản"),
- controller: _userNameController,
- validator: (String value) {
- return Validators.validateNotNullOrEmpty(value, "Tài khoản");
- },
- onSaved: (newValue) {},
- );
- }
-
- Widget _fullNameField() {
- return TextFormField(
- keyboardType: TextInputType.text,
- decoration: InputDecoration(labelText: "Họ và tên"),
- controller: _fullNameController,
- validator: (String value) {
- return Validators.validateNotNullOrEmpty(value, "Họ và tên");
- },
- onSaved: (newValue) {
- _account.fullName = newValue;
- },
- );
- }
-
- Widget _emailField() {
- return TextFormField(
- keyboardType: TextInputType.emailAddress,
- decoration: InputDecoration(labelText: "Email"),
- controller: _emailController,
- validator: (String value) {
- return Validators.validateEmail(value);
- },
- onSaved: (newValue) {
- _account.email = newValue;
- },
- );
- }
-
- Widget _addressField() {
- return TextFormField(
- keyboardType: TextInputType.text,
- decoration: InputDecoration(labelText: "Địa chỉ"),
- controller: _addressController,
- onSaved: (newValue) {
- _account.address = newValue;
- },
- );
- }
-
- Widget _btnChangePassword() {
- return FlatButton(
- padding: EdgeInsets.only(top: 0.0, right: 0.0, bottom: 0.0, left: 0.0),
- onPressed: () {
- Navigator.push(
- context,
- MaterialPageRoute(builder: (context) => ChangePasswordScreen()),
- );
- },
- child: Container(
- padding:
- EdgeInsets.only(top: 15.0, right: 0.0, bottom: 10.5, left: 0.0),
- decoration: BoxDecoration(
- border:
- Border(bottom: BorderSide(width: 0.5, color: Colors.grey)),
- ),
- child: Row(
- children: [
- Expanded(
- child: Text(
- "Cập nhật mật khẩu".toUpperCase(),
- style: TextStyle(
- fontSize: 14.0,
- color: Colors.black,
- fontWeight: FontWeight.bold),
- )),
- Icon(Icons.arrow_forward_ios),
- ],
- )));
- }
-
- @override
- Widget build(BuildContext context) => KeyboardDismisser(
- child: Scaffold(
- appBar: AppBar(
- centerTitle: true,
- title: Text(
- "Thông tin cá nhân",
- textAlign: TextAlign.center,
- ),
- actions: <Widget>[
- IconButton(
- icon: Icon(Icons.done),
- onPressed: () {
- FocusScopeNode currentFocus = FocusScope.of(context);
- if (!currentFocus.hasPrimaryFocus) {
- currentFocus.unfocus();
- }
- _validateInputs();
- })
- ],
- ),
- key: _scaffoldKey,
- body: _buildContent()));
-
- Widget _buildContent() {
- return StreamBuilder(
- stream: getAccountBloc.actions,
- builder: (context, AsyncSnapshot<dynamic> snapshot) {
- if (snapshot.hasData) {
- return Form(
- key: _formKey,
- autovalidate: _autoValidate,
- child: SingleChildScrollView(
- padding: EdgeInsets.all(8.0),
- child: Column(
- children: <Widget>[
- _userNameField(),
- SizedBox(
- height: 8.0,
- ),
- _fullNameField(),
- SizedBox(
- height: 8.0,
- ),
- _emailField(),
- SizedBox(
- height: 16.0,
- ),
- _btnChangePassword()
- ],
- ),
- ));
- } else {
- return Center(
- child: CircularProgressIndicator(),
- );
- }
- });
- }
- }
|