архитектура flutter: получить экземпляр Localizations без контекста или получить экземпляр из MaterialApp перед инициализацией любой страницы в приложении
Задний план:
Я определил "интернационализацию" в соответствии с официальными рекомендациями.
Я могу получить Localization
объект из любого моего метода сборки, вызвав
final AppLocalizations appLocalizations = AppLocalizations.of(context);
который определяется как
static AppLocalizations of(BuildContext context) {
return Localizations.of<AppLocalizations>(context, AppLocalizations);
}
Пока все хорошо, все в порядке.
Проблема:
Я хочу составить список локализованных элементов.
List<Data> setupDataList(AppLocalizations appLocalizations) {
final List<Data> dataList = <Data>[
Data(
code: Data.admitDate,
name: appLocalizations.labelAdmitDate(),
),
Data(
code: Data.patientName,
name: appLocalizations.labelPatientName(),
),
];
return dataList;
}
а в методе сборки я вызываю указанный выше метод для создания локализованного списка, как показано ниже.
Widget build(BuildContext context) {
final AppLocalizations appLocalizations = AppLocalizations.of(context);
///constructs the list here each time the build method gets called.
///I am doing this only because I can't get the AppLocalization object from the initState method
///using AppLocalizations.of(context).
///Is there any other way to improve this logic????
final List<Data> dataList = setupDataList(appLocalizations);
//...
//return Widget that uses DataList list object.
}
Есть ли способ получить объект AppLocalization без помощи "контекста"???