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(); @override // TODO: implement collapsedHint String get collapsedHint => throw UnimplementedError(); @override // TODO: implement expandedHint String get expandedHint => throw UnimplementedError(); @override // TODO: implement expansionTileCollapsedHint String get expansionTileCollapsedHint => throw UnimplementedError(); @override // TODO: implement expansionTileCollapsedTapHint String get expansionTileCollapsedTapHint => throw UnimplementedError(); @override // TODO: implement expansionTileExpandedHint String get expansionTileExpandedHint => throw UnimplementedError(); @override // TODO: implement expansionTileExpandedTapHint String get expansionTileExpandedTapHint => 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; }