【问题标题】:How to restart a Flutter app from the beginning of the main()?如何从 main() 的开头重新启动 Flutter 应用程序?
【发布时间】:2022-09-23 23:31:42
【问题描述】:

我想从一开始就重新启动我的应用程序主要的()功能,而不仅仅是重建整个小部件树。

这是我的代码示例,问题是我想在重启时调用 init()

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await init();
  runApp(
    const MyApp(),
  );
}

我试图用 Restart 小部件包装小部件树并尝试phoenix package

但是无论 main() 上面的内容如何,​​它们都只是重建了小部件树。我什至尝试直接调用 main() 但它没有按预期工作。

这种情况有什么解决办法吗?

  • 你想再打电话给init吗?还是必须完全重启?
  • 您可以将init() 中的逻辑放入MyApp 内的FutureBuilder,然后将MyApp 包装到Phoenix 并调用Phoenix.rebirth(context) 应该可以工作。
  • 我非常怀疑重新执行 main() 是否真的会做你想做的事。简单地在 main 中重新运行代码不会神奇地重新初始化全局状态(例如全局和静态变量以及它们引用的任何内容)。此外,如果您多次显式调用初始化函数,则某些库可能不会预期并抛出异常。
  • 调试时?还是在运行时?

标签: flutter dart


【解决方案1】:

我认为您可以尝试“重新启动应用程序”模块

  1. 从您的终端安装:

    flutter pub add restart_app

    1. 从您的 dart 文件导入:

    import 'package:restart_app/restart_app.dart';

    1. 从 main() 调用“重启应用程序”:

    按下:(){ 重启.restartApp();}

    祝你今天过得愉快...

【讨论】:

    【解决方案2】:

    您在要重新启动的地方再次运行App(YourApp())。1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      相关资源
      最近更新 更多