flutter - 在 Dart 中显示本地化标签的问题

标签 flutter

我无法在我的应用中设置本地化。

我正在尝试在我的应用中添加语言设置和相关的本地化。我能够设置语言选项。我正在使用“intl”插件进行国际化。我的代码在几乎所有 UI .dart 文件中看起来如下所示。

AppTranslations.of(context).accountNumber +
                    " ${accountDetails.accountNumber}",

setter/getter 设置为:

String get accountNumber => _text("account_number");

String _text(String key) {
    return _localisedValues[key] ?? _defaultLocaleValues[key];
  }

我还放置了包含 3 种不同语言的本地化标签的 json 文件。但是,定位插件似乎存在一些实例化问题。代码没有进入 getter 行。

如有任何帮助,我们将不胜感激。

最佳答案

AppTranslations.of(context) 是访问本地化标签的标准方式。你对实例化是正确的。如果程序没有转到 getter 行,则表示代码初始部分的某处存在问题。它可能在 main.dart 中。

检查您在哪里初始化 LocalStorageProvider()。如果它没有初始化,那就是问题所在。假设您使用的是 MaterialApp,请尝试以下建议: 使用 LocalStorageProvider() 包装 MaterialApp。我的意思是,在主小部件构建中,返回 LocalStorageProvider() 并将您现有的 MaterialApp() 代码作为子项传递给它。下面的示例(请忽略主题等,因为我只是从我的一个应用程序中复制了代码):

@override
  Widget build(BuildContext context) {
    LocalStorage localStorage = LocalStorage();
    return LocalStorageProvider(
      localStorage: localStorage,
      child: LocaleProvider(
        localStorage: localStorage,
        localeWrapper: LocaleWrapper(),
        child: Builder(
          builder: (context) {
            return AnimatedBuilder(
              animation: LocaleProvider.of(context).localeWrapper,
              builder: (context, _) {
                return MaterialApp(
                  onGenerateTitle: (context) =>
                      AppTranslations.of(context).appName,
                  locale: LocaleProvider.of(context).locale,
                  title: "App Title",
                  theme: ThemeData(
                    primarySwatch: Colors.blue,
                  ),
                  home: MapsDemo(),
                  localizationsDelegates: [
                    AppTranslationsDelegate(
                      LocaleProvider.of(context).supportedLanguagesCodes,
                    ),
                    GlobalMaterialLocalizations.delegate,
                    GlobalWidgetsLocalizations.delegate,
                  ],
                  supportedLocales: LocaleProvider.of(context).supportedLocales,
                );
              },
            );
          },
        ),
      ),
    );
  }

关于flutter - 在 Dart 中显示本地化标签的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57353113/

相关文章:

ios - Flutter iOS 版本和配置文件构建无法正常工作

firebase - Flutter 中 Cloud Firestore 的 FieldValue.increment

firebase - 添加 firebase 后构建 Flutter apk 时出现 Gradle 错误

Flutter 横幅广告没有粘在底部

flutter - TabBar 中的 ListView

flutter build apk --release 命令不起作用

firebase - Flutter/Dart 和 Firebase 错误消息和代码

dart - 在flutter中分享图片+文字+网址的便捷方式

android - 底部导航栏不会在 Flutter 中更改屏幕

image - Flutter CircleAvatar-将Image对象用作(背景)图像/将其类型转换为ImageProvider