- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在关注 Flutter 文档来展示 CupertinoDatePicker。但语言始终是英语。请告诉我如何更改它。
这是我的代码:
void _showDatePicker(BuildContext context, bool isYou) {
showModalBottomSheet(
context: context,
builder: (context) {
return CupertinoDatePicker(
onDateTimeChanged: (DateTime value) {
setState(() {
if (isYou) {
_dateOfBirth = value;
} else {
_dateOfBirthAnother = value;
}
});
},
initialDateTime: DateTime.now(),
mode: CupertinoDatePickerMode.date,
maximumYear: 2018,
minimumYear: 1950,
);
});
}
最佳答案
将您所需的语言添加到您的 MaterialApp(或 CupertinoApp)配置中。像这样:
return MaterialApp(
localizationsDelegates: [
// ... app-specific localization delegate[s] here
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
DefaultCupertinoLocalizations.delegate,
],
supportedLocales: [
const Locale('en', 'US'), // English
const Locale('de', 'DE'), // German
// ... other locales the app supports
], <the rest of your configuration> );
应该这样做。
不要忘记导入:
import 'package:toothscout/GermanCupertinoLocalizations.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
此外,Cupertino 小部件还没有完全本地化(目前)。但是您可以编写自己的本地化配置类并将它们添加到我的代码中的“DefaultCupertinoLocalizations.delegate”行下方。
例如,我必须创建以在德语中使用 CupertinoDatePicker 的自定义德语本地化如下所示:
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
class _CupertinoLocalizationsDelegate extends LocalizationsDelegate<CupertinoLocalizations> {
const _CupertinoLocalizationsDelegate();
@override
bool isSupported(Locale locale) => locale.languageCode == 'de';
@override
Future<CupertinoLocalizations> load(Locale locale) => GermanCupertinoLocalizations.load(locale);
@override
bool shouldReload(_CupertinoLocalizationsDelegate old) => false;
@override
String toString() => 'DefaultCupertinoLocalizations.delegate(de_DE)';
}
/// US English strings for the cupertino widgets.
class GermanCupertinoLocalizations implements CupertinoLocalizations {
/// Constructs an object that defines the cupertino widgets' localized strings
/// for US English (only).
///
/// [LocalizationsDelegate] implementations typically call the static [load]
/// function, rather than constructing this class directly.
const GermanCupertinoLocalizations();
static const List<String> _shortWeekdays = <String>[
'Mo',
'Di',
'Mi',
'Do',
'Fr',
'Sa',
'So',
];
static const List<String> _shortMonths = <String>[
'Jan',
'Feb',
'Mär',
'Apr',
'Mai',
'Jun',
'Jul',
'Aug',
'Sep',
'Okt',
'Nov',
'Dez',
];
static const List<String> _months = <String>[
'Januar',
'Februar',
'März',
'April',
'Mai',
'Juni',
'Juli',
'August',
'September',
'Oktober',
'November',
'Dezember',
];
@override
String datePickerYear(int yearIndex) => yearIndex.toString();
@override
String datePickerMonth(int monthIndex) => _months[monthIndex - 1];
@override
String datePickerDayOfMonth(int dayIndex) => dayIndex.toString();
@override
String datePickerHour(int hour) => hour.toString();
@override
String datePickerHourSemanticsLabel(int hour) => hour.toString() + " Uhr";
@override
String datePickerMinute(int minute) => minute.toString().padLeft(2, '0');
@override
String datePickerMinuteSemanticsLabel(int minute) {
if (minute == 1)
return '1 Minute';
return minute.toString() + ' Minuten';
}
@override
String datePickerMediumDate(DateTime date) {
return '${_shortWeekdays[date.weekday - DateTime.monday]} '
'${_shortMonths[date.month - DateTime.january]} '
'${date.day.toString().padRight(2)}';
}
@override
DatePickerDateOrder get datePickerDateOrder => DatePickerDateOrder.mdy;
@override
DatePickerDateTimeOrder get datePickerDateTimeOrder => DatePickerDateTimeOrder.date_time_dayPeriod;
@override
String get anteMeridiemAbbreviation => 'AM';
@override
String get postMeridiemAbbreviation => 'PM';
@override
String get alertDialogLabel => 'Info';
@override
String timerPickerHour(int hour) => hour.toString();
@override
String timerPickerMinute(int minute) => minute.toString();
@override
String timerPickerSecond(int second) => second.toString();
@override
String timerPickerHourLabel(int hour) => hour == 1 ? 'Stunde' : 'Stunden';
@override
String timerPickerMinuteLabel(int minute) => 'Min';
@override
String timerPickerSecondLabel(int second) => 'Sek';
@override
String get cutButtonLabel => 'Ausschneiden';
@override
String get copyButtonLabel => 'Kopieren';
@override
String get pasteButtonLabel => 'Einfügen';
@override
String get selectAllButtonLabel => 'Alles auswählen';
/// Creates an object that provides US English resource values for the
/// cupertino library widgets.
///
/// The [locale] parameter is ignored.
///
/// This method is typically used to create a [LocalizationsDelegate].
static Future<CupertinoLocalizations> load(Locale locale) {
return SynchronousFuture<CupertinoLocalizations>(const GermanCupertinoLocalizations());
}
/// A [LocalizationsDelegate] that uses [DefaultCupertinoLocalizations.load]
/// to create an instance of this class.
static const LocalizationsDelegate<CupertinoLocalizations> delegate = _CupertinoLocalizationsDelegate();
}
关于flutter - 如何更改 CupertinoDatePicker 显示语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53662917/
** In the minimumDate param, we can't control the minimum time. ` CupertinoDatePickerTest(
所以,我在我的应用程序中实现了一个 CupertinoDatePicker,但是当我尝试访问它时,它显示在整个屏幕上,而不仅仅是底部。 代码如下: onPressed: () { showCuper
所以,我在我的应用程序中实现了一个 CupertinoDatePicker,但是当我尝试访问它时,它显示在整个屏幕上,而不仅仅是底部。 代码如下: onPressed: () { showCuper
我创建了一个CupertinoDatePicker小部件,其初始值设置为变量。 当用户单击屏幕中的另一个小部件时,我想将选择器中的选定值更新为该变量值-但这不起作用(尽管CupertinoDatePi
我在我的应用程序中使用 CupertinoDatePicker。 Container( height: 200, padding: const EdgeInsets.all(16.0)
我正在关注 Flutter 文档来展示 CupertinoDatePicker。但语言始终是英语。请告诉我如何更改它。 这是我的代码: void _showDatePicker(BuildContex
有什么方法可以在 CupertinoDatePicker 中禁用/隐藏一周中的特定几天? 例如,我想禁用星期一、星期二和星期五。 最佳答案 目前不支持。如果您希望最好的选择是 fork 实现并添加您需
我可以设置小部件的最短日期,但是,我不希望用户能够选择过去的时间。我如何确保这一点? CupertinoDatePicker . 旁注:如何使“00”和“30”在分钟轮中只出现一次?下面是一些相关的代
我需要更改 CupertinoDatePicker 的字体大小,使其看起来更像原生字体。与 ios datepicker 相比,字体较小。对于高度为 MediaQuery.of(context).co
我在将 CupertinoDatePicker 的 minuteInterval: 属性设置为 30 时遇到问题。它应该是 60 的整数因子,所以 30 应该没问题。但我只能将它设置为 1 或 2,任
onSelectedItemChanged 在 CupertinoPicker/CupertinoDatePicker 中完美运行 但我也想在用户单击值时选择值。 目前,用户必须滚动才能选择值,据我所
我的应用程序中有 CupertinoDatePicker 以使用以下代码选择日期和时间: formatColumn( widget: Consumer( builder: (_, mcProvide
我是一名优秀的程序员,十分优秀!