gpt4 book ai didi

flutter - 如何强制重启 Flutter 应用程序(在生产模式下)?

转载 作者:IT王子 更新时间:2023-10-29 06:46:01 40 4
gpt4 key购买 nike

生产模式中,有没有办法强制完全重启应用程序(我不是在开发时谈论热重载!)。

实际用例:

  • 在初始化过程中,应用程序检测到没有网络连接。缺乏网络连接可能会阻止正确启动(例如加载外部资源,如 JSON 文件...)。

  • 在初始握手期间,需要下载一些重要资源的新版本(更新类型)。

在这两种用例中,我都希望应用程序完全重启,而不是必须在 ApplicationState 级别构建复杂的逻辑。

最佳答案

您可以将整个应用程序包装到一个有状态的小部件中。当你想重启你的应用程序时,用一个拥有不同 Key 的 child 重建那个有状态的小部件。

这会让您失去应用的整个状态。

import 'package:flutter/material.dart';

void main() {
runApp(
RestartWidget(
child: MaterialApp(),
),
);
}

class RestartWidget extends StatefulWidget {
RestartWidget({this.child});

final Widget child;

static void restartApp(BuildContext context) {
context.findAncestorStateOfType<_RestartWidgetState>().restartApp();
}

@override
_RestartWidgetState createState() => _RestartWidgetState();
}

class _RestartWidgetState extends State<RestartWidget> {
Key key = UniqueKey();

void restartApp() {
setState(() {
key = UniqueKey();
});
}

@override
Widget build(BuildContext context) {
return KeyedSubtree(
key: key,
child: widget.child,
);
}
}

在此示例中,您可以使用 RestartWidget.restartApp(context) 从任何地方重置您的应用。

关于flutter - 如何强制重启 Flutter 应用程序(在生产模式下)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52107291/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com