不使用MaterialApp如何为小部件添加本地化?

6

我知道如何通过在MaterialApp小部件添加localizationsDelegates和supportedLocales来为应用程序添加本地化。我的应用程序本地化工作很好。

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


嗨,伙计,你解决了这个问题吗?我也需要做这件事。 - Chris
你好!我有同样的问题。有解决方案吗? - kyu
1个回答

0

我已经这样使用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,则可以使用本地化小部件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接