flutter - 如何在库比蒂诺日期选择器字段中显示初始日期
问题描述
这是一个带有库比蒂诺日期选择器的小表格。我想在表格上显示初始日期。点击文本字段时,它将显示一个日期选择器,一旦选择了新日期,它将显示新日期
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
const double _kPickerSheetHeight = 216.0;
class AddCashPage extends StatefulWidget {
@override
_AddCashPageState createState() => _AddCashPageState();
}
class _AddCashPageState extends State<AddCashPage> {
final _formKey = GlobalKey<FormState>();
DateTime date = DateTime.now();
DateTime newDateTime;
@override
Widget build(BuildContext context) {
return Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Form(
key: _formKey,
child: buildTextFormField(),
),
],
),
);
}
Widget buildTextFormField() {
return Column(
children: <Widget>[
GestureDetector(
onTap: () {
showCupertinoModalPopup<void>(
context: context,
builder: (BuildContext context) {
return _buildBottomPicker(
CupertinoDatePicker(
mode: CupertinoDatePickerMode.date,
initialDateTime: date,
onDateTimeChanged: (DateTime addSelectedDate) {
setState(() {
this.newDateTime = addSelectedDate;
date = newDateTime;
});
},
),
);
},
);
},
child: _buildMenu(
<Widget>[
//Show initial date here
Text(
DateFormat.yMMMMd().format(newDateTime),
),
],
),
),
],
);
}
}
我已经添加 date = newDateTime;
并且setState
仍然Text(DateFormat.yMMMMd().format(newDateTime),)
显示为空。我正在考虑使用三元运算符,或者有更好的方法吗
解决方案
使用该initState
方法设置初始值newDateTime
void initState() {
super.initState();
newDateTime = DateTime.now();
}
推荐阅读
- javascript - 如何将字符串转换为插值字符串?
- c# - 从今天开始查找接下来的 5 个工作日
- jquery - querySelector 是否比 jQuery 更老更快?
- c# - 在泛型中转换为基类不起作用
- request - Wpf Prism Resize 交互窗口
- android - 在 Google Play 商店中为特定的 Google 帐户分发私有应用程序
- python - Python - 创建一列等于另一列的值,但如果第一列中出现两个连续值,则使新列等于 0
- java - 我无法从用户那里获得输入作为 java 中的浮点数
- java - 在控制台中提供数据时跳过第一个字符串输入
- c++ - Qt 的正则表达式与预期不匹配