我正在Flutter中开发一个多语言应用程序。
我在官方文档后面的小部件/屏幕中实现本地化字符串没有问题:https://flutter.dev/docs/development/accessibility-and-localization/internationalization.
但是...我的应用会调用大量API,这些API由适当的Cubits和Repository在后台处理。对于这些调用和其他更深层的逻辑,我希望以适当的语言提供状态消息(例如,对于snackbars)。我面临的问题是,我无法访问cubits内部的本地化字符串来向国家提供消息。即使我试图将上下文传递给腕尺,它也看不到它们。
任何人都有一个想法吗?我宁愿按照官方的方法,而不必完全重构应用程序...谢谢期待!
2条答案
按热度按时间pbgvytdp1#
有人帮我解决了这个问题。解决方案很简单。你必须把appLocalization本身传递到Cubits中。下面是我的main.dart:
UserAuthCubit声明如下所示:
重要提示-为了确保解决方案有效- AppLocalizatons必须在main. dart中的Cubits之前**声明。另外-语言更改后,应用程序立即在小部件中采用新的本地化。但是,使用此设置,我无法为Cubits实现这一点。它们需要重新启动应用程序。在真实的生活中,这应该不是问题...我猜。
5sxhfpxr2#
使用easy_localization包很容易做到,唯一的缺点是每次字符串更改都要生成代码,否则它不需要上下文来获取字符串,如下所示:
查看整个tutorial如何设置和使用EasyLocalization。