Flutter DateTimeRange 日期时间范围选择器

深藏阁楼爱情的钟 2023-10-07 16:27 104阅读 0赞

在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。

如果你有兴趣 你可以关注一下公众号 biglead 来获取最新的学习资料。

  • Flutter 从入门 到精通系列文章在这里
  • 当然也必需是要有源码的 在这里了
  • github 有点慢

在这里插入图片描述


1 中文环境

在你的Flutter项目配置文件中添加语言国际化支持

  1. dependencies:
  2. flutter:
  3. sdk: flutter
  4. flutter_localizations:
  5. sdk: flutter

然后在你的 Flutter 项目中的入口文件处配置中文环境,代码如下:

  1. main() {
  2. runApp(MaterialApp(
  3. //不显示 debug标签
  4. debugShowCheckedModeBanner: false,
  5. //当前运行环境配置
  6. locale: Locale("zh","CH"),
  7. //程序支持的语言环境配置
  8. supportedLocales: [Locale("zh","CH")],
  9. //Material 风格代理配置
  10. localizationsDelegates: [
  11. GlobalMaterialLocalizations.delegate,
  12. GlobalWidgetsLocalizations.delegate,
  13. ],
  14. //显示的首页面
  15. home: DemoDateRangPage(),
  16. ));
  17. }
  • Locale类是用来识别用户的语言环境
  • GlobalMaterialLocalizations.delegate 为Material Components库提供了本地化的字符串
2 显示日期范围选择器

本次 Demo 是点击一个按钮显示一个日期范围选择器,页面 DemoDateRangPage 代码如下

  1. class _DemoDateRangPageState extends State<DemoDateRangPage> {
  2. String _dateSelectText;
  3. @override
  4. Widget build(BuildContext context) {
  5. return Scaffold(
  6. appBar: AppBar(
  7. title: Text("日期范围选择"),
  8. ),
  9. body: Center(
  10. child: Text("当前选择 $_dateSelectText"),
  11. ),
  12. floatingActionButton: FloatingActionButton(
  13. onPressed: () {
  14. showDateSelect();
  15. },
  16. child: Icon(Icons.select_all),
  17. ),
  18. );
  19. }
  20. void showDateSelect() async {
  21. //获取当前的时间
  22. DateTime start = DateTime.now();
  23. //在当前的时间上多添加4天
  24. DateTime end = DateTime(start.year,start.month,start.day+4);
  25. //显示时间选择器
  26. DateTimeRange selectTimeRange = await showDateRangePicker(
  27. //语言环境
  28. locale: Locale("zh","CH"),
  29. context: context,
  30. //开始时间
  31. firstDate: DateTime(2020, 1),
  32. //结束时间
  33. lastDate: DateTime(2022, 1),
  34. cancelText: "取消",
  35. confirmText: "确定",
  36. //初始的时间范围选择
  37. initialDateRange: DateTimeRange(start: start, end: end)
  38. );
  39. //结果
  40. _dateSelectText = selectTimeRange.toString();
  41. //选择结果中的开始时间
  42. DateTime selectStart = selectTimeRange.start;
  43. //选择结果中的结束时间
  44. DateTime selectEnd = selectTimeRange.end;
  45. setState(() {
  46. });
  47. }

完毕

不局限于思维,不局限语言限制,才是编程的最高境界。

以小编的性格,肯定是要录制一套视频的,随后会上传

有兴趣 你可以关注一下公众号 biglead 来获取最新的学习资料

发表评论

表情:
评论列表 (有 0 条评论,104人围观)

还没有评论,来说两句吧...

相关阅读