|
- import 'package:farm_tpf/utils/validators.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';
- import 'package:get/get.dart';
- import 'package:get/get_state_manager/get_state_manager.dart';
- import 'package:farm_tpf/utils/formatter.dart';
-
- import 'widget_field_time_picker.dart';
-
- class FieldDateWidget extends StatefulWidget {
- final String hint;
- final String value;
- final Function(DateTime) onPressed;
- final String tag;
- final void Function(String) validator;
- final bool isValidated;
- FieldDateWidget(
- {@required this.hint,
- @required this.tag,
- this.value,
- @required this.onPressed,
- this.validator,
- this.isValidated});
-
- @override
- _FieldDateWidgetState createState() => _FieldDateWidgetState();
- }
-
- class _FieldDateWidgetState extends State<FieldDateWidget> {
- ChangeDateTimePicker controller;
- final textController = TextEditingController();
- var isShowError = false;
-
- @override
- void initState() {
- super.initState();
- controller = Get.put(ChangeDateTimePicker(), tag: widget.tag);
- textController.addListener(() {
- print('object');
- });
- }
-
- @override
- Widget build(BuildContext context) {
- return GetBuilder<ChangeDateTimePicker>(
- tag: widget.tag,
- builder: (data) {
- return SizedBox(
- width: double.infinity,
- height: Validators.stringNotNullOrEmpty(textController.text) &&
- validators != null
- ? 65
- : widget.isValidated
- ? 85
- : 85,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Validators.stringNotNullOrEmpty(
- data?.selectedDateTime?.displayDateTime_DDMMYYYY_HHmm())
- ? Text(
- widget.hint ?? '',
- style: TextStyle(
- color: Validators.stringNotNullOrEmpty(
- textController.text) &&
- validators != null
- ? Colors.black54
- : Colors.red,
- fontSize: 13.0),
- )
- : Text(
- '',
- style: TextStyle(color: Colors.black54, fontSize: 13.0),
- ),
- SizedBox(
- width: double.infinity,
- height: 44,
- child: FlatButton(
- padding: EdgeInsets.only(
- top: 0.0, right: 0.0, bottom: 0.0, left: 0.0),
- onPressed: () {
- DatePicker.showDateTimePicker(context,
- showTitleActions: true,
- onChanged: (date) {}, onConfirm: (date) {
- controller.change(date);
- widget.onPressed(date);
- textController.text = date.toString();
- },
- currentTime: data?.selectedDateTime,
- locale: LocaleType.vi);
- },
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Container(
- padding: EdgeInsets.only(
- top: 0.0,
- right: 0.0,
- bottom: 10.5,
- left: 0.0),
- decoration: BoxDecoration(
- border: Border(
- bottom: BorderSide(
- width: 0.5,
- color: Validators.stringNotNullOrEmpty(
- textController.text) &&
- validators != null
- ? Colors.black54
- : widget.isValidated
- ? Colors.red
- : Colors.black54,
- )),
- ),
- child: Row(
- children: [
- Expanded(
- child: Validators.stringNotNullOrEmpty(data
- ?.selectedDateTime
- ?.displayDateTime_DDMMYYYY_HHmm())
- ? Text(
- data?.selectedDateTime
- ?.displayDateTime_DDMMYYYY_HHmm(),
- style: TextStyle(
- fontSize: 16.0,
- color: Colors.black))
- : Text(widget.hint,
- style: TextStyle(
- fontSize: 16.0,
- color: Colors.black54)),
- ),
- Icon(
- Icons.date_range,
- color: Colors.grey,
- ),
- ],
- ))
- ],
- )),
- ),
- Validators.stringNotNullOrEmpty(textController.text) &&
- validators != null
- ? SizedBox()
- : Text(
- widget.isValidated
- ? 'Vui lòng nhập ${widget.hint}'
- : '',
- style: TextStyle(
- fontSize: 12.0,
- color: Colors.red,
- fontWeight: FontWeight.normal),
- textAlign: TextAlign.left,
- ),
- Container(
- height: 0,
- child: TextFormField(
- style: TextStyle(color: Colors.white),
- decoration: InputDecoration(
- border: InputBorder.none,
- labelStyle: TextStyle(color: Colors.white)),
- validator: widget.validator,
- controller: textController,
- ),
- )
- ],
- ),
- );
- });
- }
- }
|