如何更改CupertinoDatePicker显示语言?

我关注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 Widget还没有完全本地化。但是您可以编写自己的本地化配置类,并将其添加到我的代码中“

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();

}

以上是 如何更改CupertinoDatePicker显示语言? 的全部内容, 来源链接: utcz.com/qa/429236.html

回到顶部