android 日期国际化,Flutter 日期时间DatePicker控件及国际化

5b237f44de6335c1830bfe28105ec02d.png

注意:无特殊说明,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方法,点击日期选择控件的“确定按钮后,返回选择的日期。

效果如下:

f4e6ff99da1b193cd1dddce48d1e4921.png

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

showdatepicker(

selectabledaypredicate: (datetime day) {

return day.difference(datetime.now()).indays < 2;

},

...

)

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

e98c496a8bedde308f9d6d697cbedef4.png

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

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

showdatepicker(

builder: (context, child) {

return theme(

data: themedata.dark(),

child: child,

);

},

...

)

效果如下:

6f21b751af50ce366fea88665aef00d9.png

中文支持

增加国际化处理,在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'),

...

)

效果如下:

9d766a799e8a25a0ba074f08b1bf98b9.png

timepicker

timepicker和datepicker一样,需要使用showtimepicker方法,用法如下:

raisedbutton(

onpressed: () async {

showtimepicker(

context: context, initialtime: timeofday.now());

},

)

效果如下:

106e59db5f7d40c1ec814b1cc7c956ae.png

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

showtimepicker(

context: context,

initialtime: timeofday.now(),

builder: (context, child) {

return mediaquery(

data: mediaquery.of(context)

.copywith(alwaysuse24hourformat: true),

child: child,

);

});

效果如下:

89f724cf5499e43e82508a6e34ad0200.png

中文支持

添加国际化支持,步骤同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,

]

);

});

效果如下:

d5eafe806e9f30196d48c216333960d5.png

cupertinodatepicker

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

var _datetime = datetime.now();

cupertinodatepicker(

initialdatetime: _datetime,

ondatetimechanged: (date) {

setstate(() {

_datetime = date;

});

},

)

效果如下:

34b154c633ea2f9db2c19092a150c2a4.png

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)),

...

)

效果如下:

2099ae8f18337d0e2b5cad74766130d8.png

使用24小时制:

cupertinodatepicker(

use24hformat: true,

...

)

cupertinotimerpicker

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

cupertinotimerpicker(

ontimerdurationchanged: (duration duration){

},

)

效果如下:

dbb37de5999ecbeae8e665b8b24998e9.png

设置只显示小时和分钟:

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),一起学习,一起进步,生活不止眼前的苟且,还有诗和《远方》。

当然我也非常希望您关注我个人的公众号,里面有各种福利等着大家哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值