#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-файл.