flutter 年月日_Flutter 日期时间DatePicker控件及国际化-程序员宅基地

技术标签: flutter 年月日  

一枚

有态度

的程序员

注意:无特殊说明,Flutter版本及Dart版本如下:

Flutter版本:1.12.13+hotfix.5

Dart版本:2.7.0

DatePicker

Flutter并没有DatePicker这个控件,需要使用showDatePicker方法弹出日期选择控件,基本用法如下:

RaisedButton(

onPressed: () async {

var result = await showDatePicker(

context: context,

initialDate: DateTime.now(),

firstDate: DateTime(2020),

lastDate: DateTime(2021));

print('$result');

},

)

initialDate初始化时间,通常情况下设置为当前时间。

firstDate表示开始时间,设置后,选择器不能选择小于此值的时间。

lastDate表示结束时间,设置后,选择器不能选择大于此值的时间。

showDatePicker方法是Future方法,点击日期选择控件的“确定按钮后,返回选择的日期。

效果如下:

selectableDayPredicate参数控制可选日期,返回true表示日期可选,用法如下:

showDatePicker(

selectableDayPredicate: (DateTime day) {

return day.difference(DateTime.now()).inDays < 2;

},

...

)

表示后天之前的时间可选,效果如下:

19日及以后的日期变为灰色,不可选状态。

builder参数用于设置设置子控件,比如设置深色主题用法如下:

showDatePicker(

builder: (context, child) {

return Theme(

data: ThemeData.dark(),

child: child,

);

},

...

)

效果如下:

中文支持

增加国际化处理,在pubspec.yaml添加支持:

dependencies:

flutter:

sdk: flutter

flutter_localizations:

sdk: flutter

在顶级控件MaterialApp添加国际化支持:

MaterialApp(

localizationsDelegates: [

GlobalMaterialLocalizations.delegate,

GlobalWidgetsLocalizations.delegate,

],

supportedLocales: [

const Locale('zh', 'CH'),

const Locale('en', 'US'),

],

locale: Locale('zh'),

...

)

设置showDatePicker的local参数如下:

showDatePicker(

locale: Locale('zh'),

...

)

效果如下:

TimePicker

TimePicker和DatePicker一样,需要使用showTimePicker方法,用法如下:

RaisedButton(

onPressed: () async {

showTimePicker(

context: context, initialTime: TimeOfDay.now());

},

)

效果如下:

builder参数用于控制子控件,可以向DatePicker一样设置深色主题,还可以设置其显示24小时,用法如下:

showTimePicker(

context: context,

initialTime: TimeOfDay.now(),

builder: (context, child) {

return MediaQuery(

data: MediaQuery.of(context)

.copyWith(alwaysUse24HourFormat: true),

child: child,

);

});

效果如下:

中文支持

添加国际化支持,步骤同DatePicker中文支持,但showTimePicker并没有local参数,使用builder参数设置,如下:

showTimePicker(

context: context,

initialTime: TimeOfDay.now(),

builder: (context, child) {

return Localizations(

locale: const Locale('zh'),

child: child,

delegates: [

GlobalMaterialLocalizations.delegate,

GlobalWidgetsLocalizations.delegate,

]

);

});

效果如下:

CupertinoDatePicker

ios风格的日期选择器,用法如下:

var _dateTime = DateTime.now();

CupertinoDatePicker(

initialDateTime: _dateTime,

onDateTimeChanged: (date) {

setState(() {

_dateTime = date;

});

},

)

效果如下:

mode参数设置日期的格式:

time:只显示时间,效果:4 | 14 | PM

date:只显示日期,效果:July | 13 | 2012

dateAndTime:时间和日期都显示,效果: Fri Jul 13 | 4 | 14 | PM

设置最大日期和最小日期:

CupertinoDatePicker(

minimumDate: DateTime.now().add(Duration(days: -1)),

maximumDate: DateTime.now().add(Duration(days: 1)),

...

)

效果如下:

使用24小时制:

CupertinoDatePicker(

use24hFormat: true,

...

)

CupertinoTimerPicker

CupertinoTimerPicker 是ios风格的时间选择器,基本用法如下:

CupertinoTimerPicker(

onTimerDurationChanged: (Duration duration){

},

)

效果如下:

设置只显示小时和分钟:

CupertinoTimerPicker(

mode: CupertinoTimerPickerMode.hm,

...

)

默认情况下,CupertinoTimerPicker显示0:0:0,设置显示当前时间:

var now = DateTime.now();

return Container(

height: 200,

child: CupertinoTimerPicker(

initialTimerDuration: Duration(hours: now.hour,minutes: now.minute,seconds: now.second),

onTimerDurationChanged: (Duration duration) {},

),

);

欢迎加入Flutter的微信交流群(mqd_zzy),一起学习,一起进步,生活不止眼前的苟且,还有诗和《远方》。

今天的文章对大家是否有帮助?如果有,请在文章底部留言和点赞,以表示对我的支持,你们的留言、点赞和转发关注是我持续更新的动力!

更多相关阅读:

老孟

一枚有态度的程序员

戳原文,查看Flutter系列总览

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39732316/article/details/111949897

智能推荐

2021-06-20Linux安装yum报错_设置更新进程 loading mirror speeds from cached hostfile -程序员宅基地

文章浏览阅读347次。Linux安装yum报错安装 yum install gcc-c++yum install gcc-c++Loaded plugins: fastestmirror, refresh-packagekit, securitySetting up Install ProcessLoading mirror speeds from cached hostfileYumRepo Error: All mirror URLs are not using ftp, http[s] or file.Eg_设置更新进程 loading mirror speeds from cached hostfile yumrepo error: all m

重排重绘-程序员宅基地

文章浏览阅读835次。重排reflow:DOM的变化影响到了元素的宽高,导致浏览器要重新计算元素的宽高(影响到页面布局),甚至影响到渲染数中的某些部分就需要重新渲染。改变窗口大小、文字大小、内容变化、浏览器窗口大小、style属性的改变等会导致重排。重排一定会导致重绘。重绘不一定导致重排。重绘repaint:一个元素的外观发生了改变,但是没有改变元素的宽高,比如改变元素的背景色、outline、visibility...

初识R语言——用R处理矩阵的运算【随机数矩阵&所有元素求和】_r语言生成随机数矩阵-程序员宅基地

文章浏览阅读2.6w次,点赞4次,收藏35次。&nbsp;&nbsp;&nbsp;&nbsp;R语言在处理矩阵运算的时候较java和python来说更加容易,因为R语言本身就是一个统计学使用的软件。再已有的运用R进行的研究中,矩阵是比较常用的一种计算方法,下面对本次编程中矩阵的使用方法做一个总结。1、产生一个服从泊松分布的随机数矩阵&nbsp;&nbsp;&nbsp;&nbsp;首先,产生一组服从泊松分布的随机数:rpois(M,..._r语言生成随机数矩阵

db migrate mysql,在MySQL中使用rake db:migrate命令在Rails中创建表的主键问题-程序员宅基地

文章浏览阅读2.2k次。My version of rails is 4.0.0, my version of mysql is Ver 14.14 Distrib 5.7.9, for Win64 (x86_64). I am operating of an older version of rails as I was getting some clashes with the mysql as per my pre...

Linux 性能监控-程序员宅基地

文章浏览阅读701次。公司有个测试服务器,上面跑了几个应用和一个DB。 DB被这个几个应用使用。 最近老是被挂掉。 CPU 使用率100%。搞到最后大家都不能用。 敲个命令都没反应。 TOP命令显示的是一些Oracle session占用CPU资源太多。杯具的是在服务器上连sqlplus 都进不去了,命令都没反应。 只好把服务器重启了。 重启之后再看了一下,是一个同事测试的SQL 有问题。 一条SQL 占用CPU 就3

计算消息摘要实例、各种加密实例-程序员宅基地

文章浏览阅读2.9k次。当数据(可能是一个文件,一个程序,一段文字等)从A传递到B时,通过第2和3章的加密可以保证只有拥有密钥者(B)才可读取这段信息,实现了安全性编程中内容的保密性要求。但安全性编程还要求具有不可篡改性(B接收到数据后需要确认数据在传输过程中是否被别人修改过,发生纠纷时A需要检查B是否修改过原始数据)、身份的确定性(B要能够确认数据确实是A发来的)以及不可否认性(发生纠纷时,B能够证明数据确实是由A发来_计算消息

随便推点

阅读nopcommerce startup源码-程序员宅基地

文章浏览阅读156次。创建一个asp.netcore项目,可以到到startup类有两个方法 // This method gets called by the runtime. Use t...

第一次做项目经理总结_不懂技术的项目经理如何管理项目?-程序员宅基地

文章浏览阅读175次。没有技术,哪来的项目?项目经理不懂技术,客户提需求不知该接不该接改需求被技术人员开怼,最后两边不是人难道……不懂技术的项目经理就注定要当背锅侠?请见本周百人社话题讨论1不懂技术的项目经理如何管理项目?没有团队凝聚力,哪来的项目顺利?人员不服管,干活不积极,项目一倒,PM挨刀。。那么,该如何让团队成员高效完成工作,提升团队凝聚力?团建暗藏玄机请见本周百人社话题讨论2项目团队要怎么做团建才有..._怎样有效总结啥都不懂的项目

python实现m3u8转mp4_m3u8转mp4 python_浪速之星的博客-程序员宅基地

文章浏览阅读2.5k次。需要用到两个版本的ffmpeg,文件及原码请到项目地址自取https://gitee.com/z2322739526/m3u8主要解决ts改后缀mp4后无法上传网盘播放的问题,所以需要完整处理下tomp4.py费时费电脑,转码速度大约6分钟共处理总计5分钟视频完整代码如下m3u8.pytomp4.py合并mp4.bat..._m3u8转mp4 python

pandas计算方差,平均值,分位数,中位数_pandas 统计分位数中位数-程序员宅基地

文章浏览阅读1.9w次,点赞5次,收藏31次。导入数据import pandas as pdmovie= pd.read_csv('movie.csv')movie.head()Rank Title Genre Description Director ... Runtime (Minutes) Rating Votes Revenue (Millions) Metascore 0 1 Guardians of the Galaxy Action,Adven_pandas 统计分位数中位数

[Video and Audio Data Processing] 图像的表示方法:RGB模型 vs YUV模型_色度 平面-程序员宅基地

文章浏览阅读586次。0. YUV模型介绍光的三原色是红(Red)、绿(Green)、蓝(Blue)。现代的显示器技术就是通过组合不同强度的三原色,来达成任何一种可见光的颜色。图像储存中,通过记录每个像素红绿蓝强度,来记录图像的方法,称为RGB模型 (RGB Model)常见的图片格式中,PNG和BMP这两种就是基于RGB模型的。比如说原图:分别只显示R G B通道的强度,效果如下:三个通道下,信息量和细节程度不一定是均匀分布的。比如说可以注意南小鸟脸上的红晕,在3个平面上的区分程度就不同——红色平面下几乎无从_色度 平面

南京理工大学计算机上机,南京理工大学考研计算机复试上机题目.doc_zou johnny的博客-程序员宅基地

文章浏览阅读536次。南京理工大学考研计算机复试上机题目三是近几年的南理上机题, 年上机题) (一.二.三是近几年的南理上机题,四是 09 年上机题) 《一》 一 1. 从键盘输入一个带有数字的字符串,将其中数字所在的位置输出,并把字符串小写字符变大写再输出。 例:输入 ab2cd3ef4 按回车输出 3 6 9 AB2CD3EF4 2. 验证这句话:任何一个大于 6 的偶数都可以分解为两个素数之和。要求:输入一个大于..._南理工上机操作步骤