архитектура трепетания: получить экземпляр Localizations без контекста или получить экземпляр из MaterialApp перед инициализацией любой страницы в приложении - PullRequest
0 голосов
/ 14 февраля 2020

Справочная информация:

Я определил «интернационализацию» в соответствии с официальным указанием .

. Я могу получить объект 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 без помощь «контекста» ???

...