Лучшая практика доступа к контексту сборки из нескольких классов для локализации приложений в Flutter?

#flutter #dart

#flutter #dart

Вопрос:

Итак, у меня есть класс, который должен генерировать некоторые слова и предложения, используя локализованные ресурсы приложения. Я обращаюсь к ним с помощью AppLocalizations.of(context).helloWorld . Класс, которому необходим доступ к этим локализованным ресурсам, инициализируется классом, который инициализируется другим классом с инициализируется вспомогательным классом базы данных с инициализируется фактическим виджетом. Проблема в том, что только у виджета есть BuildContext то, что мне нужно в моем классе генерации слов. Лучше ли просто передавать контекст сборки через все конструкторы или методы разных классов или есть лучший способ? Любой совет был бы весьма полезен 🙂

Ответ №1:

Вы можете использовать flutter intl для интернационализации, как показано на Localizations in Flutter . Лучше использовать контекст, когда он доступен.Вот как вы это сделаете.

 AppLocalization.of(context).title
or
Applocalization.current.title 
//In case buildcontext is not available. 
 

Вот ссылка на реализацию в блоге medium.
Локализация Flutter

В качестве альтернативы, я бы посоветовал вам проверить расширение VSCode (если вы используете vscode) для Flutter intl расширения и выполнить шаги по самому расширению.

Комментарии:

1. Спасибо за ответ, похоже, это именно то, что я ищу. Но я не нашел способа реализовать это на сайте, на который вы ссылались. В документе никогда не используется слово current, и оно также никогда не используется в приведенных примерах проектов. Не могли бы вы добавить ссылку на ресурс, чтобы я мог увидеть, как это реализовать в моем коде. Спасибо.

2. Отредактировал ответ. Я лично рекомендую использовать расширение Flutter intl, потому что оно генерирует файл перевода при сохранении после добавления ключа в отдельный arb-файл.