2020-03-19 21:50:32
注意:无特殊说明,Flutter版本及Dart版本如下:
Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0
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和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: <LocalizationsDelegate>[
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
]
);
});
效果如下:
ios风格的日期选择器,用法如下:
var _dateTime = DateTime.now();
CupertinoDatePicker(
initialDateTime: _dateTime,
onDateTimeChanged: (date) {
setState(() {
_dateTime = date;
});
},
)
效果如下:
mode
参数设置日期的格式:
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 是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 拖拽控件Draggable看这一篇就够了
04-17
Flutter Weekly Issue 47
06-22
Flutter 裁剪类组件 最全总结
04-12
强大的Flutter App升级功能
06-07
Linux date显示或设定系统的日期与时间命令详解
04-04
Linux rdate显示其他主机的日期与时间命令详解
06-05
CentOS 7 时间同步
03-25
Linux系统SureHA 2.0集群磁盘资源/镜像磁盘资源FSCK设置导致启动时间过长的解决办法
05-18
MEMCACHED的时间设置
02-16
R520 G6X机型板载SAS RAID配置rebuild时间过长
02-24
Rescue and Recovery软件会长时间没有反应或者报错
07-13
Windows关机慢或时间很长
03-03
两块36G硬盘创建一个新的RAID1,build完成需要多少时间?
07-10
使用zabbix根据时间监控多行格式的日志
04-03
安全控件无法安装
05-21
采用NVIDIA独立显示方案笔记本通过PowerMizer调节延长电池续航时间
06-18
Win10系统下使用IE11提示flash未安装
06-05
和平精英:发现飞机外有一顶帽子,点击拾取后,可以获得特权!
05-27
爱酱游话说:六月玩什么?旅游种地做作业,还有打恶魔城
05-29
CADViewerX图纸浏览控件 v6.3.0 官方版
37.83M
下载NewFileTime(文件时间修改软件) v3.99 中文版
186KB
下载QQ国际版官方版
47.57 MB
下载SpreadJS(电子表格控件) v13.1.4 中文版
276.5M
下载regsvr32.exe(动态链接库和ActiveX控件)2021 免费版
0.01MB
下载儿童上网(上网时间控制管理工具) v1.0.3.18 绿色版
4.6M
下载支付宝数字证书控件
1.44 MB
下载效能时间管理破解版(附注册码) v5.50
15.5MB
下载民生银行网银控件
2.68 MB
下载电脑时间同步器 v1.01 官方版
895K
下载财付通安全控件(for Win7/Vista) v2.0.2.9
15.84 MB
下载Desktopcal桌面日历 v2.2.32.4330
3.42 MB
下载云译通下载
29.33MB
下载腾讯QQ英文版 V1.91.1369
46.78M
下载迅游加速器下载
8.4M
下载