flutter - 如何使用 timepicker 小部件显示使用 Flutter 的开始和结束时间
问题描述
我正在创建一个页面来显示开始时间和结束时间,但是当我找不到更新各个字段中时间的方法时。我只使用一个函数来构建一个时间选择器并显示时间。
这是我的时间选择器功能
Future<Null> selectedTime(BuildContext context, bool ifPickedTime) async{
_pickedTime = await showTimePicker(
context: context,
initialTime: _currentTime);
if (_pickedTime != null){
setState(() {
_currentTime = _pickedTime;
print("The picked time is: $_pickedTime");
});
}
}
这是我的小部件生成器
Widget _buildTimePick(String title, bool ifPickedTime){
return Row(
children: [
Container(
width: 80,
child: Text(
title,
style: AppStyles.textTitle,
),
),
Container(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 5),
decoration: BoxDecoration(
border: Border.all(color: MyColors.borderColor),
borderRadius: BorderRadius.circular(20),
),
child: GestureDetector(
child: Text(
"${_currentTime.format(context)}",
style: AppStyles.textBody,
),
onTap: () {
selectedTime(context, ifPickedTime);
},
),
),
],
);
}
解决方案
您可以使用 TextEditingController 更新 TextField。放入,setState
以便它可以在您选择日期时更新 TextField。经验:
final txtController = TextEditingController();
final DateTime? picked = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2000),
lastDate: DateTime(2025));
if(picked != null && picked != now) {
setState(() {
txtController.text = DateFormat('dd-MM-yyyy').format(picked); //I'm using intl package, you can use toString()
});
}
推荐阅读
- c# - 为什么 SpecFlow 3.1.97 的 [BeforeTestRun] 钩子没有执行?
- java - 错误:(3, 31) java: 无法访问 org.neo4j.configuration.GraphDatabaseSettings
- amazon-web-services - 实例关闭时触发 AWS Cloudwatch 监控警报
- java - UML 关联 - 什么是“角色”的代码等价物?
- python - python:调整绘图x轴上的值
- javascript - 将一段 javascript 代码转换为 c# 访问 API
- javafx - 将tableview数据导出到txt文件
- css - 当鼠标悬停在单元格上时突出显示单元格
- ios - 如何将渐变应用于任何视图的强调颜色 - SwiftUI
- php - 在同一列的同一张表上多次内连接