You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
4.1KB

  1. import 'package:farm_tpf/data/repository/repository.dart';
  2. import 'package:farm_tpf/models/index.dart';
  3. import 'package:farm_tpf/utils/const_string.dart';
  4. import 'package:farm_tpf/utils/const_style.dart';
  5. import 'package:farm_tpf/utils/pref.dart';
  6. import 'package:farm_tpf/utils/validators.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
  9. import 'package:fluttertoast/fluttertoast.dart';
  10. import 'package:intl/intl.dart';
  11. class EditActionOtherScreen extends StatefulWidget {
  12. @override
  13. _EditActionOtherScreenState createState() => _EditActionOtherScreenState();
  14. }
  15. class _EditActionOtherScreenState extends State<EditActionOtherScreen> {
  16. final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
  17. final _repository = Repository();
  18. GlobalKey<FormState> _formKey = GlobalKey();
  19. bool _autoValidate = false;
  20. OtherAction _otherAction = OtherAction();
  21. var pref = LocalPref();
  22. FlutterToast flutterToast;
  23. TextEditingController _descriptionController = TextEditingController();
  24. TextEditingController _workerNameController = TextEditingController();
  25. String executeTimeView;
  26. DateTime executeTime = DateTime.now();
  27. @override
  28. void initState() {
  29. super.initState();
  30. flutterToast = FlutterToast(context);
  31. //UPDATE
  32. if (_otherAction != null) {
  33. try {
  34. executeTime = DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
  35. .parse(_otherAction.executeDate);
  36. } catch (_) {}
  37. } else {
  38. //ADD NEW
  39. var parsedExecuteDate =
  40. DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(executeTime);
  41. _otherAction.executeDate = "$parsedExecuteDate";
  42. }
  43. executeTimeView = DateFormat("dd/MM/yyyy HH:mm").format(executeTime);
  44. }
  45. Widget _btnExecuteTimePicker() {
  46. return FlatButton(
  47. padding: EdgeInsets.only(top: 0.0, right: 0.0, bottom: 0.0, left: 0.0),
  48. onPressed: () {
  49. DatePicker.showDateTimePicker(context,
  50. showTitleActions: true, onChanged: (date) {}, onConfirm: (date) {
  51. setState(() {
  52. var parsedDate =
  53. DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(date);
  54. _otherAction.executeDate = "$parsedDate";
  55. executeTimeView = DateFormat("dd/MM/yyyy HH:mm").format(date);
  56. });
  57. }, currentTime: executeTime, locale: LocaleType.vi);
  58. },
  59. child: Container(
  60. padding:
  61. EdgeInsets.only(top: 0.0, right: 0.0, bottom: 10.5, left: 0.0),
  62. decoration: BoxDecoration(
  63. border: kBorderTextField,
  64. ),
  65. child: Row(
  66. children: [
  67. Expanded(
  68. child: Text(
  69. //TODO: check condition
  70. executeTimeView == null ? "$executeTime" : executeTimeView,
  71. style: TextStyle(fontSize: 15.0, color: Colors.black54),
  72. )),
  73. Icon(
  74. Icons.date_range,
  75. color: Colors.blue,
  76. ),
  77. ],
  78. )));
  79. }
  80. Widget _desciptionField() {
  81. return TextFormField(
  82. keyboardType: TextInputType.text,
  83. decoration: InputDecoration(labelText: "Ghi chú"),
  84. controller: _descriptionController,
  85. onSaved: (newValue) {
  86. _otherAction.description = newValue;
  87. },
  88. );
  89. }
  90. Widget _workerNameField() {
  91. return TextFormField(
  92. keyboardType: TextInputType.text,
  93. decoration: InputDecoration(labelText: "Người thực hiện"),
  94. controller: _workerNameController,
  95. validator: (String value) {
  96. return Validators.validateNotNullOrEmpty(value, "Người thực hiện");
  97. },
  98. onSaved: (newValue) {
  99. _otherAction.workerName = newValue;
  100. },
  101. );
  102. }
  103. @override
  104. Widget build(BuildContext context) {
  105. return Scaffold(
  106. appBar: AppBar(
  107. title: Text(plot_action_other),
  108. actions: <Widget>[
  109. IconButton(
  110. icon: Icon(Icons.done),
  111. disabledColor: Colors.grey,
  112. onPressed: 1 == 1 ? null : () {})
  113. ],
  114. ),
  115. );
  116. }
  117. }