архитектура 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 без помощи "контекста"???

0 ответов

Другие вопросы по тегам