我知道如何通过向MaterialApp小部件添加localizationsDelegates和supportedLocales来向应用程序添加本地化。本地化我的应用程序运行得很好。
我正在创建一个Flutter包,可以在其他Flutter应用程序中使用。包中的一些小部件需要本地化文本,比如一些错误消息和按钮标签。该包包含它自己的所有本地化字符串。如何在没有MaterialApp的情况下本地化包中的字符串?
发布于 2021-05-12 10:04:40
在没有使用MaterialApp的情况下,我以这种方式使用Localizations
小部件进行测试:
一个简单的演示小部件:
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小部件。
https://stackoverflow.com/questions/58328155
复制相似问题