我了解如何通过向MaterialApp小部件添加localizationsDelegates和supportedLocales向应用程序添加本地化。本地化我的应用程序工作正常。
我正在创建可在其他Flutter应用程序中使用的Flutter软件包。程序包中的某些小部件需要具有本地化的文本,例如一些错误消息和按钮标签。程序包包含所有其自己的本地化字符串。在没有MaterialApp的情况下,如何在包中本地化字符串?
答案 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 小部件。