【发布时间】: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 中重新运行代码不会神奇地重新初始化全局状态(例如全局和静态变量以及它们引用的任何内容)。此外,如果您多次显式调用初始化函数,则某些库可能不会预期并抛出异常。 -
调试时?还是在运行时?