我知道如何通过在MaterialApp小部件添加localizationsDelegates和supportedLocales来为应用程序添加本地化。我的应用程序本地化工作很好。
我正在创建一个可以在其他Flutter应用程序中使用的Flutter包。该包中的一些小部件需要具有本地化文本,例如某些错误消息和按钮标签。该包包含所有自己的本地化字符串。我如何在没有MaterialApp的情况下本地化我的包中的字符串?
我知道如何通过在MaterialApp小部件添加localizationsDelegates和supportedLocales来为应用程序添加本地化。我的应用程序本地化工作很好。
我正在创建一个可以在其他Flutter应用程序中使用的Flutter包。该包中的一些小部件需要具有本地化文本,例如某些错误消息和按钮标签。该包包含所有自己的本地化字符串。我如何在没有MaterialApp的情况下本地化我的包中的字符串?
我已经这样使用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
,则可以使用本地化小部件。