Метод localeOf
Метод localeOf виджета
Localizations он принимает context и возвращает
Locale.
Без предка Flutter выбросит ошибку.
Синтаксис
Localizations.localeOf(context)
Параметры
| Параметр | Описание |
|---|---|
context |
BuildContext виджета под Localizations.
|
Пример
Давайте покажем язык на экране:
import 'package:flutter/material.dart';
class LangChip extends StatelessWidget
{
const LangChip({super.key});
@override
Widget build(BuildContext context)
{
var loc = Localizations.localeOf(context);
return Text(loc.languageCode);
}
}
void main()
{
runApp(
MaterialApp(
locale: const Locale('en'),
home: Scaffold(
body: Center(
child: LangChip(),
),
),
),
);
}
На экране по центру будет 'en'.
Пример
Давайте сравнить locale до и после override:
import 'package:flutter/material.dart';
class PairLocales extends StatelessWidget
{
const PairLocales({super.key});
@override
Widget build(BuildContext context)
{
var outer = Localizations.localeOf(context).languageCode;
return Localizations.override(
context: context,
locale: const Locale('de'),
child: Builder(
builder: (innerContext) {
var inner =
Localizations.localeOf(innerContext).languageCode;
return Text('$outer / $inner');
},
),
);
}
}
void main()
{
runApp(
MaterialApp(
locale: const Locale('en'),
home: Scaffold(
body: Center(
child: PairLocales(),
),
),
),
);
}
На экране строка 'en / de': снаружи английская локаль, внутри override - немецкая.
Смотрите также
-
метод
override,
который подменяетLocaleдля поддерева -
класс
Locale,
который возвращаетlocaleOf -
виджет
Localizations,
который хранитLocaleв дереве -
метод
MaterialLocalizations.of,
который читает переводыMaterialдля той же локали