【问题标题】:passing dynamic strings to AppLocalizations.of(context)! in Flutter将动态字符串传递给 AppLocalizations.of(context)!在颤振中
【发布时间】:2022-10-21 01:31:48
【问题描述】:

现在我使用 Flutter 在 App 中工作,我有 4 种不同的语言,我使用 json(arb 文件)进行本地化(翻译)

我需要传递不同的字符串值,应用程序使用 API 获取它们,如下面的示例所示

AppLocalizations.of(context)!snapshot.data![index].state_pickup[0]

但是"AppLocalizations.of(context)!" 不会从snapshot.data![index].state_pickup[0] 获取返回数据,而是将其作为字符串查找并尝试在 AppLocalization.dart 类中搜索匹配字符串名称?

知道如何将动态字符串参数传递给AppLocalizations.of(context)!吗?

【问题讨论】:

    标签: flutter fetch-api snapshot flutter-futurebuilder applocalizations


    【解决方案1】:

    您正在尝试做的事情,在运行时通过其名称调用方法,称为反射和this is not supported by Flutter natively(尽管有一些包试图模拟这一点,但我没有使用它们的经验)。

    对您有用的方法是手动将您的值从 API 映射到来自AppLocalizations.of(context) 的相应方法,即使它可能很乏味。

    String localizedString = getLocalizedString(snapshot.data![index].state_pickup[0], context);
    
    String getLocalizedString(String key, BuildContext context) {
      switch (key) {
        case "possible_api_value_1":
          return AppLocalizations.of(context)!.possibleApiValue1;
        case "possible_api_value_2":
           return AppLocalizations.of(context)!.possibleApiValue2;
          ...
         }
    

    【讨论】:

    • 谢谢,我别无选择,希望找到更实用的解决方案,因为我有很多动态文本需要翻译成4种语言!
    • @HusamAlhwadi 你有没有想出一个不那么乏味的解决方案?我现在和你一样的困境。
    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 2017-11-09
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多