flutter - 在不使用 MaterialApp 的情况下向 Widget 添加本地化?
问题描述
我了解如何通过向 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
小部件。
推荐阅读
- python - pandas 分割成区间超参数
- java - 如何防止无限递归循环
- c# - XmlReaderSettings.Schemas.Add() :无法识别 URI 前缀
- c - 在 gdb 我的变量显示为
,我怎样才能找到它的价值? - ios - 这里映射偏移位置指示器中心
- windows - cmd 命令分隔符在 Windows 10 中损坏
- ios - 如何在 iOS 13 中更改 tabBar 的框架?
- sql - 如何在 postgresql 中将格式传递给 to_timestamp?
- c# - webClient.OpenRead 图片扩展webp问题
- python - 根据熊猫数据框中的两列组合单元格值