在不使用MaterialApp的情况下向小部件添加本地化?

时间:2019-10-10 17:23:01

标签: flutter

我了解如何通过向MaterialApp小部件添加localizationsDelegates和supportedLocales向应用程序添加本地化。本地化我的应用程序工作正常。

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

1 个答案:

答案 0 :(得分: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 在您的小部件中工作,您可以使用 Localizations 小部件。