flutter определение локализации
В телефоне в настройках установлено два языка: английский и русский. В данный момент выбран язык русский.
1) определение локали в Kotlin -> ru_Ru -> правильно
textView.text = resources.configuration.locale.toString()
2) определение локали во Flutter -> en_EN -> не правильно
Localizations.localeOf(context).toString()
3) определение локали во Flutter -> ru_Ru -> правильно
import 'dart:ui' as ui;
ui.window.locale.toString()
Почему 2 вариант не правильно показывает локаль? Спасибо.
полный код
import 'package:flutter/material.dart';
import 'dart:ui' as ui;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Name App',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Name Page'),
),
body: MyHomePage(),
),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
Align(
alignment: Alignment.center,
child: Text(
'${Localizations.localeOf(context).toString()}\n${ui.window.locale.toString()}',
style: TextStyle(
color: Colors.pink,
fontSize: 36.0,
),
),
),
],
);
}
}
Ответы (1 шт):
Defines the Locale for its child and the localized resources that the child depends on.
Потому что вариант 2 используется для предоставление локализации виджетам ниже этого виджета в дереве (child). То есть нужна для создания перевода в приложении. Делаеться это посредством Localizations и Localizations.override (используются для ситуаций, когда часть приложения должна быть локализованной для другого языка), а по умолчанию в locale стоит en_US.