发布时间: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),一起学习,一起进步,生活不止眼前的苟且,还有诗和《远方》。
当然我也非常希望您关注我个人的公众号,里面有各种福利等着大家哦。
QQ国际版官方版
47.57 MB
云译通国际工程版 v2.4.0.2 官方版
29.33MB
儿童上网(上网时间控制管理工具) v1.0.3.18 绿色版
4.6M
支付宝数字证书控件
1.44 MB
效能时间管理下载
15.5MB
民生银行网银控件 v1.0.0.0
2.68 MB
电脑时间同步器下载
895K
财付通安全控件官方最新版
15.84 MB
迅游网游加速器国际版 V2.0.0.910 官方版
8.4M
CAD Viewer下载
37.83M
Desktopcal桌面日历
3.42 MB
NewFileTime下载
186KB
SpreadJS下载
276.5M
regsvr32.exe下载
0.01MB
腾讯QQ英文版 V1.91.1369
46.78M
2020-02-17
六月新游戏推介
如何安装卸载小红伞杀毒软件
IdeaPad Y510在windows XP中如何使用声卡的混音功能
Windows 8系统关闭触控屏的方法
您的游戏环境异常,请重启机器后再试(警告码0.5.540)
Linux网站压力测试工具webbench
OpenResty json 删除转义符
如何进入BIOS
Ubuntu 14.04安装Pritunl VPN服务器(带控制面板)