颤动:如何强制重启应用程序(在生产模式下)?
发布时间:2020-12-14 14:55:44 所属栏目:百科 来源:网络整理
导读:在生产模式中,有没有办法强制完全重启应用程序(我不是在讨论开发时的热重载!). 实际使用案例: 在初始化过程中,应用程序检测到没有网络连接.缺乏网络连接可能阻止了正确的启动(例如加载外部资源,如JSON文件……). 在初始握手期间,需要下载一些重要资源的新
在生产模式中,有没有办法强制完全重启应用程序(我不是在讨论开发时的热重载!).
实际使用案例: >在初始化过程中,应用程序检测到没有网络连接.缺乏网络连接可能阻止了正确的启动(例如加载外部资源,如JSON文件……). 在这两种用例中,我希望应用程序继续完全重启,而不是必须在ApplicationState级别构建复杂的逻辑. 非常感谢您的提示. 解决方法
您可以将整个应用程序包装到statefulwidget中.当您想重新启动应用程序时,请使用具有不同密钥的子项重建该statefulwidget.
这会让你失去你的应用程序的整个状态. import 'package:flutter/material.dart'; void main() { runApp(new RestartWidget( child: // new MaterialApp,)); } class RestartWidget extends StatefulWidget { final Widget child; RestartWidget({this.child}); static restartApp(BuildContext context) { final _RestartWidgetState state = context.ancestorStateOfType(const TypeMatcher<_RestartWidgetState>()); state.restartApp(); } @override _RestartWidgetState createState() => new _RestartWidgetState(); } class _RestartWidgetState extends State<RestartWidget> { Key key = new UniqueKey(); void restartApp() { this.setState(() { key = new UniqueKey(); }); } @override Widget build(BuildContext context) { return new Container( key: key,child: widget.child,); } } 在此示例中,您可以使用RestartWidget.restartApp(context)从任何位置重置您的应用程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |