【问题标题】:Add localization to Widget without using MaterialApp?在不使用 MaterialApp 的情况下向 Widget 添加本地化?
【发布时间】:2020-02-08 04:59:58
【问题描述】:

我了解如何通过向 MaterialApp 小部件添加 localizationsDelegates 和 supportedLocales 来为应用添加本地化。本地化我的应用程序运行良好。

我正在创建一个可以在其他 Flutter 应用程序中使用的 Flutter 包。包中的一些小部件需要具有本地化文本,例如一些错误消息和按钮标签。该包包含它自己的所有本地化字符串。如何在没有 MaterialApp 的情况下本地化包中的字符串?

【问题讨论】:

  • 嗨伙计,你有想过这个吗?我也需要这样做
  • 您好!我也有同样的问题。有什么解决办法吗?

标签: flutter


【解决方案1】:

我以这种方式使用Localizations 小部件进行测试,而不使用 MaterialApp:

一个简单的演示小部件:

class WidgetToTest extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    //AppLocalizations.of(context)!.hello = 'hello' in generated file
    return Text(AppLocalizations.of(context)!.hello);
  }
}

测试:

  testWidgets('test localizations widget', (tester) async {
    await tester.pumpWidget(
      Localizations(
        locale: const Locale('en'),
        delegates: AppLocalizations.localizationsDelegates,
        child: WidgetToTest(),
      )
    );
    expect(find.text('hello'), findsOneWidget);
  });

如果您只需要启用AppLocalizations 在您的小部件中工作,您可以使用Localizations 小部件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2020-05-22
    相关资源
    最近更新 更多