【发布时间】:2020-07-09 04:25:46
【问题描述】:
我基本上是在尝试为我的应用创建一个注册屏幕。我已经为其他数据包含了所有其他 TextFormField。但是,我现在卡在日期输入部分,我设法创建了一个 TextFormField 包裹在一个 GestureDetector 中,一旦点击 TextFormField,它将打开一个日期选择器来选择一个日期。我的问题是我想用日期选择器中选择的日期设置日期TextFormField 的值,我不知道为什么我拥有的代码非常不一致,有时它确实显示日期和其他时候它不会更新并继续显示hintText,而且由于在点击该字段时会弹出一个日期选择器,我如何在关注日期字段时禁用键盘显示。
class DateState extends StatefulWidget {
const DateState({
Key key,
}) : super(key: key);
@override
_DateState createState() => _DateState();
}
class _DateState extends State<DateState> {
DateTime selectedDate = DateTime.now();
Future<Null> _selectDate(BuildContext context) async {
final DateTime picked = await showDatePicker(
context: context,
initialDate: selectedDate,
firstDate: DateTime(1950),
lastDate: DateTime.now());
if (picked != null && picked != selectedDate)
setState(() {
selectedDate = picked;
});
}
@override
Widget build(BuildContext context) {
var dateValue = TextEditingController();
return DateFieldContainer(
child: GestureDetector(
child: TextFormField(
controller: dateValue,
onTap: () {
_selectDate(context);
dateValue.text = "${selectedDate.toLocal()}".split(' ')[0];
},
decoration: InputDecoration(
hintText: "Select Date",
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: PrimaryColor),
),
),
),
),
);
}
}
【问题讨论】:
标签: flutter