Flutter main() 触发两次

Reg*_*Joe 3 flutter

更新:整个main.dart被调用两次。

var x = 0;
void main() {
  print(++x);
}
Run Code Online (Sandbox Code Playgroud)

将“1”打印到日志两次。


在Android和Flutter Web上(我还没有测试其他平台),我的应用程序的入口函数,main()触发了两次,我不知道问题是什么。

我什至将 RunApp() 从 main() 中取出,将其精简为:

void main() {
  print(StackTrace.current);
}
Run Code Online (Sandbox Code Playgroud)

输出是,打印两次:

I/flutter ( 8417): #0      main (package:appname/main.dart:14:20)
I/flutter ( 8417): #1      _runMain.<anonymous closure> (dart:ui/hooks.dart:134:23)
I/flutter ( 8417): #2      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
I/flutter ( 8417): #3      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
I/flutter ( 8417): #0      main (package:appname/main.dart:14:20)
I/flutter ( 8417): #1      _runMain.<anonymous closure> (dart:ui/hooks.dart:134:23)
I/flutter ( 8417): #2      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
I/flutter ( 8417): #3      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
Run Code Online (Sandbox Code Playgroud)

当然,这意味着启动的每个组件都会发生两次,特别是用于会话恢复的 API 通信。

我试过了

  • 搜索整个目录以查找调用main()
  • 将 android 目录重置为 stock
  • flutter clean,flutter pub get
  • 删除构建

我已经搜索过这个,但大多数结果都是关于 FutureBuilder 或 build() 的。我确实发现这个未回答的类似问题

我的配置也没有什么特别的

在此输入图像描述

Reg*_*Joe 6

就我而言,这是由音频服务包引起的。我会提请他们注意这一点。