Flutter — Перевод oninit

#flutter #internationalization

#флаттер #интернационализация

Вопрос:

Класс 1

 @override
      void initState() {
        super.initState();
        text =DemoLocalizations.of(context).trans('connection');
      }
  

Класс 2 (демолокализации)

  Future<bool> load() async {

    String data = await rootBundle.loadString('locale/i18n_${locale.languageCode}.json');
    Map<String, dynamic> _result = json.decode(data);

    this._sentences = new Map();
    _result.forEach((String key, dynamic value) {
      this._sentences[key] = value.toString();
    });

    return true;
  }
  

Возврат

введите описание изображения здесь

Итак, вопрос в следующем: как я могу загрузить пользовательскую строку (интернационализация) при загрузке экрана (oninit)?

Ответ №1:

Используйте didChangeDependencies вместо initState .
Он вызывается один раз после создания виджета и еще раз при изменении состояния демолокализаций.