赞
踩
在使用flutter
自动的日历选择组件CupertinoDatePicker
的时候,flutter
默认帮助我们做了国际化显示, 比如us
,年月日,月份是January
…
而有时候我们想使用US
,但又不想使用单词,我查看了官方API
文档没有找到相关开放的配置。
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December',
经过分析国际化配置CupertinoLocalizations,发现有DefaultCupertinoLocalizations
和 GlobalCupertinoLocalizations
CupertinoLocalizationAm
相关抽象类和实现类,
所以解决方法应运而生,就是extends
这个默认实现类,重写想要的返回值,经过实践是可行,
下面粘贴一下相关代码,供大家参考:
先建一个实现类,MyDefaultCupertinoLocalizations.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
class MyDefaultCupertinoLocalizations extends DefaultCupertinoLocalizations {
static const List<String> _months = <String>[
'01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11',
'12',
];
@override
String datePickerMonth(int monthIndex) => _months[monthIndex - 1];
static Future<CupertinoLocalizations> load(Locale locale) {
return SynchronousFuture<CupertinoLocalizations>(
MyDefaultCupertinoLocalizations());
}
static const LocalizationsDelegate<CupertinoLocalizations> delegate =
_CupertinoLocalizationsDelegate();
}
class _CupertinoLocalizationsDelegate
extends LocalizationsDelegate<CupertinoLocalizations> {
const _CupertinoLocalizationsDelegate();
@override
bool isSupported(Locale locale) => locale.languageCode == 'en';
@override
Future<CupertinoLocalizations> load(Locale locale) =>
MyDefaultCupertinoLocalizations.load(locale);
@override
bool shouldReload(_CupertinoLocalizationsDelegate old) => false;
@override
String toString() => 'MyDefaultCupertinoLocalizations.delegate(en_US)';
}
在日历组件里配置这个类,就可以了,本文也到此结束,有问题可评论区讨论。
Localizations.override(
context: context,
locale: const Locale('en'),
delegates: [ MyDefaultCupertinoLocalizations.delegate,
],
child: CupertinoDatePicker(
initialDateTime: initialDateTime,
minimumYear: minimumYear,
maximumYear: maximumYear,
maximumDate: maximumDate,
minimumDate: minimumDate,
dateOrder: DatePickerDateOrder.dmy,
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (newDateTimes) {
newDateTime = newDateTimes;
},
),
),
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。