diff --git a/lib/extension/my_cupertino_localizations.dart b/lib/extension/my_cupertino_localizations.dart new file mode 100644 index 0000000..0041e01 --- /dev/null +++ b/lib/extension/my_cupertino_localizations.dart @@ -0,0 +1,185 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; + +import 'package:flutter/cupertino.dart'; + +class MyCupertinoLocalizations implements CupertinoLocalizations { + final CupertinoLocalizations _base; + MyCupertinoLocalizations(this._base); + + // ✅ 只改这里:月份改阿拉伯数字 + @override + String datePickerMonth(int monthIndex) => '$monthIndex月'; + + // ✅ 关键:日期顺序等必须继续用 zh_CN 的实现 + @override + DatePickerDateOrder get datePickerDateOrder => _base.datePickerDateOrder; + + @override + DatePickerDateTimeOrder get datePickerDateTimeOrder => _base.datePickerDateTimeOrder; + + // ——下面全部转发给 _base(只列一部分示例,其余用 IDE 一键生成)—— + @override + String get todayLabel => _base.todayLabel; + + @override + String get alertDialogLabel => _base.alertDialogLabel; + + @override + String get anteMeridiemAbbreviation => _base.anteMeridiemAbbreviation; + + @override + String get postMeridiemAbbreviation => _base.postMeridiemAbbreviation; + + @override + String get copyButtonLabel => _base.copyButtonLabel; + + @override + String get cutButtonLabel => _base.cutButtonLabel; + + @override + String get pasteButtonLabel => _base.pasteButtonLabel; + + @override + String get selectAllButtonLabel => _base.selectAllButtonLabel; + + @override + String get modalBarrierDismissLabel => _base.modalBarrierDismissLabel; + + @override + String tabSemanticsLabel({required int tabIndex, required int tabCount}) => + _base.tabSemanticsLabel(tabIndex: tabIndex, tabCount: tabCount); + + @override + String datePickerDayOfMonth(int dayIndex, [int? weekDay]) => + _base.datePickerDayOfMonth(dayIndex, weekDay); + + @override + String datePickerYear(int yearIndex) => _base.datePickerYear(yearIndex); + + @override + String datePickerMediumDate(DateTime date) => _base.datePickerMediumDate(date); + + @override + String datePickerHour(int hour) => _base.datePickerHour(hour); + + @override + String datePickerMinute(int minute) => _base.datePickerMinute(minute); + + @override + String? datePickerHourSemanticsLabel(int hour) => + _base.datePickerHourSemanticsLabel(hour); + + @override + String? datePickerMinuteSemanticsLabel(int minute) => + _base.datePickerMinuteSemanticsLabel(minute); + + @override + String get searchTextFieldPlaceholderLabel => _base.searchTextFieldPlaceholderLabel; + + @override + String get cancelButtonLabel => _base.cancelButtonLabel; + + @override + // TODO: implement backButtonLabel + String get backButtonLabel => throw UnimplementedError(); + + @override + // TODO: implement clearButtonLabel + String get clearButtonLabel => throw UnimplementedError(); + + @override + String datePickerStandaloneMonth(int monthIndex) { + // TODO: implement datePickerStandaloneMonth + throw UnimplementedError(); + } + + @override + // TODO: implement lookUpButtonLabel + String get lookUpButtonLabel => throw UnimplementedError(); + + @override + // TODO: implement menuDismissLabel + String get menuDismissLabel => throw UnimplementedError(); + + @override + // TODO: implement noSpellCheckReplacementsLabel + String get noSpellCheckReplacementsLabel => throw UnimplementedError(); + + @override + // TODO: implement searchWebButtonLabel + String get searchWebButtonLabel => throw UnimplementedError(); + + @override + // TODO: implement shareButtonLabel + String get shareButtonLabel => throw UnimplementedError(); + + @override + String timerPickerHour(int hour) { + // TODO: implement timerPickerHour + throw UnimplementedError(); + } + + @override + String? timerPickerHourLabel(int hour) { + // TODO: implement timerPickerHourLabel + throw UnimplementedError(); + } + + @override + // TODO: implement timerPickerHourLabels + List get timerPickerHourLabels => throw UnimplementedError(); + + @override + String timerPickerMinute(int minute) { + // TODO: implement timerPickerMinute + throw UnimplementedError(); + } + + @override + String? timerPickerMinuteLabel(int minute) { + // TODO: implement timerPickerMinuteLabel + throw UnimplementedError(); + } + + @override + // TODO: implement timerPickerMinuteLabels + List get timerPickerMinuteLabels => throw UnimplementedError(); + + @override + String timerPickerSecond(int second) { + // TODO: implement timerPickerSecond + throw UnimplementedError(); + } + + @override + String? timerPickerSecondLabel(int second) { + // TODO: implement timerPickerSecondLabel + throw UnimplementedError(); + } + + @override + // TODO: implement timerPickerSecondLabels + List get timerPickerSecondLabels => throw UnimplementedError(); + +// …其余所有成员:全部 `=> _base.xxx` +} + + +class ChineseArabicMonthDelegate extends LocalizationsDelegate { + const ChineseArabicMonthDelegate(); + + @override + bool isSupported(Locale locale) => locale.languageCode == 'zh'; + + @override + Future load(Locale locale) async { + // 这里的 GlobalCupertinoLocalizations.delegate 是 Flutter 官方提供的中文实现 + // 我们先加载它,然后用我们的类包装一层 + final CupertinoLocalizations delegate = await GlobalCupertinoLocalizations.delegate.load(locale); + return MyCupertinoLocalizations(delegate); + } + + @override + bool shouldReload(ChineseArabicMonthDelegate old) => false; +} diff --git a/lib/main.dart b/lib/main.dart index 4f2b952..61cbb96 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -20,6 +20,8 @@ import 'package:fluwx/fluwx.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; +import 'extension/my_cupertino_localizations.dart'; + void main() async { // 设置全局错误处理 FlutterError.onError = (FlutterErrorDetails details) { @@ -94,6 +96,7 @@ void main() async { /// 国际化配置 代理 localizationsDelegates: const [ + ChineseArabicMonthDelegate(), GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, // iOS diff --git a/lib/pages/mine/edit_info_page.dart b/lib/pages/mine/edit_info_page.dart index 666f479..681110a 100644 --- a/lib/pages/mine/edit_info_page.dart +++ b/lib/pages/mine/edit_info_page.dart @@ -564,9 +564,9 @@ class _EditInfoPageState extends State { ) ], ).onTap((){ - if(controller.userData.value?.identityCard != null && controller.userData.value?.identityCard != ""){ - return; - } + // if(controller.userData.value?.identityCard != null && controller.userData.value?.identityCard != ""){ + // return; + // } _showDatePicker(controller); }), ],