Flutter 日期选择控件使用实战


日期选择是 App 开发中的常见功能,本文我们将学习如何在 Flutter 中使用日期选择控件。

日历控件显示的几种方式

flutter 包含日历和时间控件,有以下几种:

  1. DayPicker:已弃用。v1.15.3之后改用 CalendarDatePicker。
  2. CalendarDatePicker:1.5版后面的日期选择控件,替代了 YearPicker、MonthPicker、DayPicker。
  3. CupertinoDatePicker、CupertinoTimerPicker:是 iOS 风格的 DatePickerView 和 TimePickerView 的日期时间选择器。
  4. showDatePicker:弹出日期选择。
  5. showTimePicker:弹出时间选择。

其中,showDatePicker、showTimePicker 是一个函数而不是一个控件。

本文我们重点介绍日期选择器,在 flutter 开发中,通常最简单快速的方法是使用 showDatePicker 来显示日期弹窗

CalendarDatePicker 介绍

这里对 CalendarDatePicker 控件做一个简单介绍,因为 showDatePicker 的日期选择弹窗的内部就是用 CalendarDatePicker 来实现的。只不过 showDatePicker 帮我们做了封装,把生成的 CalendarDatePicker 对象,封装到了一个 Dialog 弹窗中,以方便外部调用。

CalendarDatePicker 主要属性:

  • initialDate:初始化选中日期。
  • firstDate:可选的最早日期。
  • lastDate:可选的最晚日期。
  • currentDate:当前选中日期
  • onDateChanged:选中日期改变回调函数
  • onDisplayedMonthChanged:月份改变回调函数
  • initialCalendarMode:日期选择器样式
  • selectableDayPredicate:筛选日期可不可点回调函数

好了,我们重点来看 showDatePicker 函数。

showDatePicker

showDatePicker 是 flutter 封装的显示日期选择器的一个函数调用。

showDatePicker 主要参数
  • initialDate:初始化选中的日期。
  • firstDate:可选的最早日期。
  • lastDate:可选的最晚日期。
  • initialDatePickerMode:day:初始化显示天,year:初始化先选择年。
  • textDirection:文本方向。
  • initialDatePickerMode:值为 DatePickerMode.day 与 DatePickerMode.year 两种,分别是日期和年份选择。

调起日期选择器的方法 showDatePicker 的返回值是 Future,Future 是一个异步类型,因此 showDatePicker 是一个异步方法。我们在日期选择器选则之后,想要知道被选择的日期,以方便记录,这个过程将以2个实例讲解。

showDatePicker 实战1

要获取异步方法里面的数据,有两种方式。第一种方式是直接在异步方法的后面直接点语法调用 then。

使用 then 获得返回值:

    _showDatePicker() async {showDatePicker(context: context,initialDate: _selectedDate, //初始化选中的日期firstDate: DateTime(1986), //可选的最早日期lastDate: DateTime(2022), //可选的最晚日期).then((value) {setState(() {//将选中的值传递出来this._date = value;});});}
showDatePicker 实战2

第二种方式是采取 async+await 的方式。

实现如下:

  _showDataPicker(int type) async {var picker = await showDatePicker(context: context,initialDate: DateTime.now(),firstDate: DateTime(1986),lastDate: DateTime(DateTime.now().year+2),locale: Locale("zh"));//这里使用了国际化setState(() {if(picker != null){_timeTxt.text = dataFormat.formatDate(picker, ['yyyy', '-', 'mm', '-', 'dd']);}});

日期选择器的国际化

使用上面的例子,我们就可以显示出日期选择器控件了,然而这里还有一个问题需要解决:日期选择器中的文本都是英文的,并没有随着我们的系统而改变。那么我们如何将它改为中文显示呢?

想要显示成中文,这就需要国际化设置了,请参考前文《Flutter 日历组件如何支持中文(国际化)》即可。

效果如下:


**PS:更多精彩内容,请查看 --> 《Flutter 开发》
**PS:更多精彩内容,请查看 --> 《Flutter 开发》
**PS:更多精彩内容,请查看 --> 《Flutter 开发》

Flutter 日期选择控件使用实战相关推荐

  1. [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)

    前言 在 [Ext JS 4] 实战之 带week(星期)的日期选择控件(二) 的最后,有提到一个解决方案. 不过这方案有一个条件  ==> "2. 每年的周数从(1-52), 如果超 ...

  2. [Ext JS 4] 实战之 带week(星期)的日期选择控件(二)

    前言 JavaScript 中的日期和时间 [Ext JS 4] 实战之 带week(星期)的日期选择控件(一) 如对本篇的一些预备知识需详尽了解,可参考以上两篇. Javascript 有提供Dat ...

  3. extjs 月份选择控件_Ext JS 4实现带week(星期)的日期选择控件(实战二)

    前言 JavaScript 中的日期和时间 Ext JS 4实现带week(星期)的日期选择控件(实战一) 如对本篇的一些预备知识需详尽了解,可参考以上两篇. Javascript 有提供Date 对 ...

  4. js 跨域的问题 (同一个主域名不同的二级域名下的跨域问题) 解决 WdatePicker.js my97日期选择控件

    js 跨域的问题 (同一个主域名不同的二级域名下的跨域问题) 解决 WdatePicker.js my97日期选择控件 参考文章: (1)js 跨域的问题 (同一个主域名不同的二级域名下的跨域问题) ...

  5. 【C#】wpf自定义calendar日期选择控件的样式

    原文:[C#]wpf自定义calendar日期选择控件的样式 首先上图看下样式 原理 总览 ItemsControl内容的生成 实现 界面的实现 后台ViewModel的实现 首先上图,看下样式 原理 ...

  6. Swing的日期选择控件DatePicker

    Swing的日期选择控件 依赖的包 图片示例 示例代码段 设置日期控件的值 验证代码 结论 依赖的包 下载DatePicker.jar 图片示例 示例代码段 JLabel dateJLabel = n ...

  7. ExtJS6.0扩展日期选择控件为也可以选择时间

    PS:ExtJS自带的日期选择控件只能够选择日期,但是现在的需求需要精确到秒,所以在网上搜索了一些例子(大部分是4.0的)作为参考,然后改出了6.0可用的一个日期时间选择控件. 1.找到extjs6. ...

  8. java界面日期选择控件,JavaFX界面设计之时间选择器(1)

    本章我们主要介绍javafX时间选择器的使用,描述了DatePicker控件的基本特性. javaFX的DatePicker控件可以让我们从一个给定的日历中选择一天,主要用于网站或应用中需要用户输入一 ...

  9. java 的日期选择控件_Java日期选择控件

    一起学习 一次项目研发中需要日期时间选择控件, 网上提供的不多, 且质量一般, 所以只好自己做,参考了 网上某位同学的 作品 Jave 日期选择控件 DateChooser . 目前的代码将日期时间选 ...

  10. [Ext JS 4] 实战之 带week(星期)的日期选择控件

    前言 Ext JS 3 和 Ext JS 4中都有提供日期选择的组件(当然早期版本也有). 但是有一些日期选择的需求是要看到星期,就是日期中的哪一天是这一年的第几周. 遗憾的是Ext js 并没有提供 ...

最新文章

  1. andriod之log打印
  2. C++中虚函数与多态实现
  3. win11怎么改任务栏大小
  4. java技术突破要点
  5. 电脑的基础知识_电脑计算机网络基础知识
  6. 小米wifi 苹果驱动安装教程macOS Mojave 10.14,Sierra 10.12测试通过
  7. 一种电力线宽带载波系统采样频偏的估计方法
  8. 【程序员(媛)国人之光】知(美)识(色)贩卖贴】非标题党】
  9. 【嵌入式】7段数码管电路原理
  10. 卧槽!微信居然有“隐身功能”了!
  11. Process-wide API spying - an ultimate hack 摘要翻译(二)
  12. MFC程序的生死因果
  13. 汇川使用笔记1:汇川AM402-PLC固件版本升级
  14. css实现图片自动渐变切换、element-plus 的修改el-table的(边框线为虚线、表头样式)
  15. ! LaTeX Error: File xxx.sty not found-统一解决办法
  16. 计算机软件产业分析,中国工业软件产业链上中下游布局分析及企业一览(附图表)...
  17. 第三届国际金融科技论坛开幕,神州信息专家参与蓉城“论道”
  18. 游戏开发中的物理介绍
  19. 什么是ui设计培训?ui培训课程难学吗?
  20. 数学建模算法总结——04层次分析法

热门文章

  1. CentOS 下安装Nginx 0.8.30 + PHP 5.3.1+MySQL 5.5.0
  2. No6. 字符串比较compareString
  3. android. 绘制矩形,Android可绘制形状:将矩形变为方形
  4. RV64和ARM64栈结构差异
  5. android 编译 电脑卡,Android Studio 编译卡慢、卡顿的几种解决方案
  6. 广东石油化工学院计算机组成原理报告封面,计算机组成原理报告2
  7. requests,path—站长素材
  8. I Took The SAT Again After 41 Years
  9. 机器学习_特征工程和文本特征的提取
  10. 迄今为止最优的Eclipse运行性能调优 ,含eclipse.ini