将动态字符串传递给Flutter中的AppLocalization.of(context)!

mbjcgjjk  于 2023-02-09  发布在  Flutter
关注(0)|答案(2)|浏览(184)

现在我在使用Flutter的应用程序中工作,我有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)!吗?

zlhcx6iw

zlhcx6iw1#

您所尝试做的,即在运行时通过方法的名称调用方法,称为反射,Flutter本机不支持这种方法(尽管有一些包尝试模拟这种方法,但我没有使用它们的经验)。
对您有效的方法是手动将API中的值Map到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;
      ...
     }
t98cgbkg

t98cgbkg2#

创建了一个软件包来解决这个问题,因为flutter不支持这个。如果有帮助,请投票作为答案。
阅读文档以设置https://pub.dev/packages/localization_mapper_annotation

相关问题