如何解决与在flutter中继承的小部件相比,重新加载整个应用程序是否有性能损失?
我正在构建具有本地化的应用程序。为了使用(BuildContext context)的AppLocalizations,我需要在不希望传递上下文的地方访问本地化。因此,我将BehaviorSubject添加到AppLocalizations中,并在包装在StatefullWigdet中的main.ts中收听它。事件发生时,我将触发setState((){});这样,所有的wigdets都可以得到新鲜的翻译。这样我就不需要做AppLocalizations.of(context).translate('loginButton_text')我可以做AppLocalizations.translate('loginButton_text')。我觉得InhertiedWidget方法应该更有效,但是在检查“性能”选项卡时,我没有注意到任何明显的CPU性能差异。
您看到我的方法有什么缺点吗?
代码如下:
AppLocalizations类
static var translationsLoaded = new BehaviorSubject();
Future<bool> load() async {
String jsonString = await rootBundle.loadString(assets/lang/${locale.languageCode}.json');
_localizedStrings = json.decode(jsonString);
translationsLoaded.add('');
return true;
}
static String translate(String key){
return _localizedStrings[key];
}
Main.dart
@override
void initState() {
super.initState();
AppLocalizations.translationsLoaded
.takeUntil(_unsubscriber)
.listen((value) {
setState(() {});
});
}
获取翻译
Text(AppLocalizations.translate('key'));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。