Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
722 of 1024 menu
◀ ▶

Метод override

Метод override виджета Localizations он принимает context, новую Locale и child. Делегаты берут из существующего Localizations, меняется только язык для части экрана.

Синтаксис

Localizations.override( context: context, locale: const Locale('de'), child: child, )

Параметры

Параметр Описание
context BuildContext, из которого читают delegates.
locale Новая локаль для child. Тип Locale.
child Поддерево с подменённой локалью.

Пример

Давайте покажем немецкую локаль только в одном блоке:

import 'package:flutter/material.dart'; class MixedLocale extends StatelessWidget { const MixedLocale({super.key}); @override Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( Localizations.localeOf(context).languageCode, ), Localizations.override( context: context, locale: const Locale('de'), child: Builder( builder: (ctx) { return Text( Localizations.localeOf(ctx).languageCode, ); }, ), ), ], ); } } void main() { runApp( MaterialApp( locale: const Locale('en'), home: Scaffold( body: Center( child: MixedLocale(), ), ), ), ); }

На экране сверху 'en', снизу после override - 'de'.

Пример

Давайте вернуть null в locale и снова взять язык приложения:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( locale: const Locale('en'), home: Scaffold( body: Builder( builder: (context) { return Localizations.override( context: context, locale: null, child: Builder( builder: (ctx) { var code = Localizations.localeOf(ctx).languageCode; return Center(child: Text(code)); }, ), ); }, ), ), ), ); }

На экране по центру снова 'en', как у корневого MaterialApp.

Смотрите также

  • метод localeOf,
    который читает Locale после override
  • виджет Localizations,
    который override временно заменяет
  • класс Locale,
    который передают в override
  • класс GlobalWidgetsLocalizations,
    чьи строки подхватят новую локаль
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить