| import 'package:flutter/material.dart'; | |||||
| import 'package:get/get.dart'; | |||||
| class Utils { | |||||
| static void showSnackBarSuccess({String message}) { | |||||
| if (Get.isSnackbarOpen) Get.back(); | |||||
| Get.snackbar(null, message, | |||||
| icon: Icon( | |||||
| Icons.done, | |||||
| color: Colors.white, | |||||
| ), | |||||
| snackPosition: SnackPosition.BOTTOM, | |||||
| backgroundColor: Colors.green); | |||||
| } | |||||
| static void showSnackBarError({String message}) { | |||||
| if (Get.isSnackbarOpen) Get.back(); | |||||
| Get.snackbar(null, message, | |||||
| icon: Icon( | |||||
| Icons.error, | |||||
| color: Colors.white, | |||||
| ), | |||||
| snackPosition: SnackPosition.BOTTOM, | |||||
| backgroundColor: Colors.red); | |||||
| } | |||||
| } |
| import 'package:farm_tpf/utils/const_string.dart'; | import 'package:farm_tpf/utils/const_string.dart'; | ||||
| import 'package:farm_tpf/utils/const_style.dart'; | import 'package:farm_tpf/utils/const_style.dart'; | ||||
| import 'package:farm_tpf/utils/pref.dart'; | import 'package:farm_tpf/utils/pref.dart'; | ||||
| import 'package:farm_tpf/utils/validators.dart'; | |||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_bloc/flutter_bloc.dart'; | import 'package:flutter_bloc/flutter_bloc.dart'; | ||||
| import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; | import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | |||||
| import 'package:get/get.dart'; | import 'package:get/get.dart'; | ||||
| import 'package:intl/intl.dart'; | import 'package:intl/intl.dart'; | ||||
| import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | import 'package:keyboard_dismisser/keyboard_dismisser.dart'; |
| import 'package:farm_tpf/utils/const_string.dart'; | import 'package:farm_tpf/utils/const_string.dart'; | ||||
| import 'package:farm_tpf/utils/const_style.dart'; | import 'package:farm_tpf/utils/const_style.dart'; | ||||
| import 'package:farm_tpf/utils/pref.dart'; | import 'package:farm_tpf/utils/pref.dart'; | ||||
| import 'package:farm_tpf/utils/validators.dart'; | |||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_bloc/flutter_bloc.dart'; | import 'package:flutter_bloc/flutter_bloc.dart'; | ||||
| import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; | import 'package:flutter_datetime_picker/flutter_datetime_picker.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | |||||
| import 'package:get/get.dart'; | import 'package:get/get.dart'; | ||||
| import 'package:intl/intl.dart'; | import 'package:intl/intl.dart'; | ||||
| import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | import 'package:keyboard_dismisser/keyboard_dismisser.dart'; |
| import 'package:farm_tpf/data/repository/user_repository.dart'; | import 'package:farm_tpf/data/repository/user_repository.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_loading.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/custom_widgets/widget_toast.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_utils.dart'; | |||||
| import 'package:farm_tpf/utils/const_color.dart'; | import 'package:farm_tpf/utils/const_color.dart'; | ||||
| import 'package:farm_tpf/utils/validators.dart'; | import 'package:farm_tpf/utils/validators.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | |||||
| import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | ||||
| class ForgotPasswordScreen extends StatefulWidget { | class ForgotPasswordScreen extends StatefulWidget { | ||||
| bool _autoValidate = false; | bool _autoValidate = false; | ||||
| TextEditingController _emailController = TextEditingController(); | TextEditingController _emailController = TextEditingController(); | ||||
| String _email = ""; | String _email = ""; | ||||
| FlutterToast flutterToast; | |||||
| @override | @override | ||||
| void initState() { | void initState() { | ||||
| super.initState(); | super.initState(); | ||||
| flutterToast = FlutterToast(context); | |||||
| } | } | ||||
| _validateInputs() async { | _validateInputs() async { | ||||
| LoadingDialog.showLoadingDialog(context); | LoadingDialog.showLoadingDialog(context); | ||||
| _userRepository.forgotPassword(_email).then((value) { | _userRepository.forgotPassword(_email).then((value) { | ||||
| LoadingDialog.hideLoadingDialog(context); | LoadingDialog.hideLoadingDialog(context); | ||||
| flutterToast.showToast( | |||||
| child: WidgetToast(message: "Gửi email thành công.")); | |||||
| Utils.showSnackBarSuccess(message: "Gửi email thành công"); | |||||
| Navigator.pop(context); | Navigator.pop(context); | ||||
| }).catchError((error) { | }).catchError((error) { | ||||
| _scaffoldKey.currentState.showSnackBar(SnackBar( | |||||
| content: Row( | |||||
| mainAxisAlignment: MainAxisAlignment.spaceBetween, | |||||
| children: <Widget>[ | |||||
| Text('Email không tồn tại.'), | |||||
| Icon(Icons.error), | |||||
| ], | |||||
| ), | |||||
| backgroundColor: Colors.red, | |||||
| duration: Duration(seconds: 3), | |||||
| )); | |||||
| LoadingDialog.hideLoadingDialog(context); | LoadingDialog.hideLoadingDialog(context); | ||||
| Utils.showSnackBarError(message: 'Email không tồn tại'); | |||||
| }); | }); | ||||
| } else { | } else { | ||||
| _autoValidate = true; | _autoValidate = true; |
| import 'package:farm_tpf/presentation/custom_widgets/loading_list_page.dart'; | import 'package:farm_tpf/presentation/custom_widgets/loading_list_page.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_loading.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/custom_widgets/widget_toast.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_utils.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/plot_detail/bloc_plot_information.dart'; | import 'package:farm_tpf/presentation/screens/plot_detail/bloc_plot_information.dart'; | ||||
| import 'package:farm_tpf/utils/const_color.dart'; | import 'package:farm_tpf/utils/const_color.dart'; | ||||
| import 'package:farm_tpf/utils/const_string.dart'; | import 'package:farm_tpf/utils/const_string.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | |||||
| import 'package:get/get.dart'; | import 'package:get/get.dart'; | ||||
| import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | ||||
| import 'package:farm_tpf/utils/formatter.dart'; | import 'package:farm_tpf/utils/formatter.dart'; | ||||
| TextEditingController _areaController = TextEditingController(); | TextEditingController _areaController = TextEditingController(); | ||||
| TextEditingController _descriptionController = TextEditingController(); | TextEditingController _descriptionController = TextEditingController(); | ||||
| FlutterToast flutterToast; | |||||
| bool _autoValidate = false; | bool _autoValidate = false; | ||||
| TbCropDTO _crop = TbCropDTO(); | TbCropDTO _crop = TbCropDTO(); | ||||
| final controller = Get.put(DescriptionChangeControler()); | final controller = Get.put(DescriptionChangeControler()); | ||||
| @override | @override | ||||
| void initState() { | void initState() { | ||||
| super.initState(); | super.initState(); | ||||
| flutterToast = FlutterToast(context); | |||||
| getPlotInfoBloc.getPlotInfo(widget.cropId, (data) { | getPlotInfoBloc.getPlotInfo(widget.cropId, (data) { | ||||
| var result = data as CropPlot; | var result = data as CropPlot; | ||||
| _crop = result.tbCropDTO; | _crop = result.tbCropDTO; | ||||
| LoadingDialog.showLoadingDialog(context); | LoadingDialog.showLoadingDialog(context); | ||||
| _repository.updatePlot(_crop).then((value) { | _repository.updatePlot(_crop).then((value) { | ||||
| LoadingDialog.hideLoadingDialog(context); | LoadingDialog.hideLoadingDialog(context); | ||||
| flutterToast.showToast( | |||||
| child: WidgetToast(message: label_update_success)); | |||||
| Utils.showSnackBarSuccess(message: label_update_success); | |||||
| controller.initValue(); | controller.initValue(); | ||||
| }).catchError((error) { | }).catchError((error) { | ||||
| _scaffoldKey.currentState.showSnackBar(SnackBar( | |||||
| content: Row( | |||||
| mainAxisAlignment: MainAxisAlignment.spaceBetween, | |||||
| children: <Widget>[ | |||||
| Flexible(child: Text(AppException.handleError(error))), | |||||
| Icon(Icons.error), | |||||
| ], | |||||
| ), | |||||
| backgroundColor: Colors.red, | |||||
| duration: Duration(seconds: 3), | |||||
| )); | |||||
| LoadingDialog.hideLoadingDialog(context); | LoadingDialog.hideLoadingDialog(context); | ||||
| Utils.showSnackBarError(message: AppException.handleError(error)); | |||||
| }); | }); | ||||
| } else { | } else { | ||||
| _autoValidate = true; | _autoValidate = true; |
| import 'package:farm_tpf/data/repository/user_repository.dart'; | import 'package:farm_tpf/data/repository/user_repository.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_loading.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/custom_widgets/widget_toast.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_utils.dart'; | |||||
| import 'package:farm_tpf/utils/const_color.dart'; | import 'package:farm_tpf/utils/const_color.dart'; | ||||
| import 'package:farm_tpf/utils/validators.dart'; | import 'package:farm_tpf/utils/validators.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | |||||
| import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | ||||
| class ChangePasswordScreen extends StatefulWidget { | class ChangePasswordScreen extends StatefulWidget { | ||||
| final _repository = UserRepository(); | final _repository = UserRepository(); | ||||
| GlobalKey<FormState> _formKey = GlobalKey(); | GlobalKey<FormState> _formKey = GlobalKey(); | ||||
| bool _autoValidate = false; | bool _autoValidate = false; | ||||
| FlutterToast flutterToast; | |||||
| Password _password = Password(); | Password _password = Password(); | ||||
| TextEditingController _currentPasswordController = TextEditingController(); | TextEditingController _currentPasswordController = TextEditingController(); | ||||
| @override | @override | ||||
| void initState() { | void initState() { | ||||
| super.initState(); | super.initState(); | ||||
| flutterToast = FlutterToast(context); | |||||
| } | } | ||||
| _validateInputs() async { | _validateInputs() async { | ||||
| LoadingDialog.showLoadingDialog(context); | LoadingDialog.showLoadingDialog(context); | ||||
| _repository.changePassword(_password).then((value) { | _repository.changePassword(_password).then((value) { | ||||
| LoadingDialog.hideLoadingDialog(context); | LoadingDialog.hideLoadingDialog(context); | ||||
| flutterToast.showToast( | |||||
| child: WidgetToast(message: "Cập nhật thành công")); | |||||
| Navigator.pop(context); | Navigator.pop(context); | ||||
| Utils.showSnackBarSuccess(message: "Cập nhật thành công"); | |||||
| }).catchError((onError) { | }).catchError((onError) { | ||||
| var errorMessage = AppException.handleError(onError, | |||||
| customMessageError: "Sai mật khẩu hiện tại"); | |||||
| _scaffoldKey.currentState.showSnackBar(SnackBar( | |||||
| content: Row( | |||||
| mainAxisAlignment: MainAxisAlignment.spaceBetween, | |||||
| children: <Widget>[ | |||||
| Flexible( | |||||
| child: Text(errorMessage), | |||||
| ), | |||||
| Icon(Icons.error), | |||||
| ], | |||||
| ), | |||||
| backgroundColor: Colors.red, | |||||
| duration: Duration(seconds: 3), | |||||
| )); | |||||
| LoadingDialog.hideLoadingDialog(context); | LoadingDialog.hideLoadingDialog(context); | ||||
| Utils.showSnackBarError( | |||||
| message: AppException.handleError(onError, | |||||
| customMessageError: "Sai mật khẩu hiện tại")); | |||||
| }); | }); | ||||
| } else { | } else { | ||||
| _autoValidate = true; | _autoValidate = true; |
| import 'package:farm_tpf/data/repository/user_repository.dart'; | import 'package:farm_tpf/data/repository/user_repository.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_loading.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/custom_widgets/widget_toast.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_utils.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/state_management_helper/change_supply.dart'; | import 'package:farm_tpf/presentation/screens/actions/state_management_helper/change_supply.dart'; | ||||
| import 'package:farm_tpf/presentation/screens/location_unit/sc_location.dart'; | import 'package:farm_tpf/presentation/screens/location_unit/sc_location.dart'; | ||||
| import 'package:farm_tpf/presentation/screens/profile/controller/check_change_another_dropdown.dart'; | import 'package:farm_tpf/presentation/screens/profile/controller/check_change_another_dropdown.dart'; | ||||
| import 'package:farm_tpf/utils/const_style.dart'; | import 'package:farm_tpf/utils/const_style.dart'; | ||||
| import 'package:farm_tpf/utils/validators.dart'; | import 'package:farm_tpf/utils/validators.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | |||||
| import 'package:get/get.dart'; | import 'package:get/get.dart'; | ||||
| import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | ||||
| import 'package:package_info/package_info.dart'; | import 'package:package_info/package_info.dart'; | ||||
| final _repository = UserRepository(); | final _repository = UserRepository(); | ||||
| GlobalKey<FormState> _formKey = GlobalKey(); | GlobalKey<FormState> _formKey = GlobalKey(); | ||||
| bool _autoValidate = false; | bool _autoValidate = false; | ||||
| FlutterToast flutterToast; | |||||
| Account _account = Account(); | Account _account = Account(); | ||||
| TextEditingController _userNameController = TextEditingController(); | TextEditingController _userNameController = TextEditingController(); | ||||
| super.initState(); | super.initState(); | ||||
| checkChangeLocation.initValue(); | checkChangeLocation.initValue(); | ||||
| _initPackageInfo(); | _initPackageInfo(); | ||||
| flutterToast = FlutterToast(context); | |||||
| getAccountBloc.getAccount((data) { | getAccountBloc.getAccount((data) { | ||||
| _account = data; | _account = data; | ||||
| _userNameController.text = _account.login; | _userNameController.text = _account.login; | ||||
| checkChangeLocation.changeWardByIdAndName( | checkChangeLocation.changeWardByIdAndName( | ||||
| _account.wardId, _account.wardName); | _account.wardId, _account.wardName); | ||||
| }, (err) { | }, (err) { | ||||
| flutterToast.showToast(child: WidgetToast(message: "Lỗi tải dữ liệu")); | |||||
| Utils.showSnackBarError(message: "Lỗi tải dữ liệu"); | |||||
| }); | }); | ||||
| } | } | ||||
| LoadingDialog.showLoadingDialog(_scaffoldKey.currentContext); | LoadingDialog.showLoadingDialog(_scaffoldKey.currentContext); | ||||
| _repository.updateProfile(_account).then((value) { | _repository.updateProfile(_account).then((value) { | ||||
| LoadingDialog.hideLoadingDialog(_scaffoldKey.currentContext); | 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), | |||||
| )); | |||||
| Utils.showSnackBarSuccess(message: 'Cập nhật thành công.'); | |||||
| }).catchError((onError) { | }).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), | |||||
| )); | |||||
| Utils.showSnackBarError(message: 'Cập nhật không thành công.'); | |||||
| LoadingDialog.hideLoadingDialog(_scaffoldKey.currentContext); | LoadingDialog.hideLoadingDialog(_scaffoldKey.currentContext); | ||||
| print("error"); | print("error"); | ||||
| }); | }); |
| description: flutter | description: flutter | ||||
| source: sdk | source: sdk | ||||
| version: "0.0.0" | version: "0.0.0" | ||||
| fluttertoast: | |||||
| dependency: "direct main" | |||||
| description: | |||||
| name: fluttertoast | |||||
| url: "https://pub.dartlang.org" | |||||
| source: hosted | |||||
| version: "6.0.1" | |||||
| font_awesome_flutter: | font_awesome_flutter: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: |
| dio_http_cache: ^0.2.9 | dio_http_cache: ^0.2.9 | ||||
| formz: ^0.3.0 | formz: ^0.3.0 | ||||
| keyboard_dismisser: ^1.0.2 | keyboard_dismisser: ^1.0.2 | ||||
| fluttertoast: ^6.0.1 | |||||
| pattern_formatter: ^1.0.2 | pattern_formatter: ^1.0.2 | ||||
| rxdart: ^0.23.0 | rxdart: ^0.23.0 | ||||
| barcode_scan: ^3.0.1 | barcode_scan: ^3.0.1 |