【问题标题】:Flutter main() is firing twiceFlutter main() 触发了两次
【发布时间】:2022-11-28 11:29:04
【问题描述】:

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

var x = 0;
void main() {
  print(++x);
}

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


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

我已经将 RunApp() 从 main() 中剥离出来,将其简化为:

void main() {
  print(StackTrace.current);
}

输出是,打印两次:

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)

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

我试过了

  • 在整个目录中搜索对main()的呼叫
  • 将 android 目录重置为 stock
  • flutter clean, flutter pub get
  • 删除建造

我搜索过这个,但大多数结果都是关于 FutureBuilder 或 build() 的。我确实找到了这个unanswered similar question

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

【问题讨论】:

  • 这只是在调试模式下吗?我在想是否可能是因为热重载。也许还检查它是否在通过“flutter run”而不是 IDE 从终端运行时发生
  • 每当我按下“运行”按钮时,它就会发生。它也发生在flutter run 谢谢
  • @dumazy 就我而言,它是由pub.dev/packages/audio_service 引起的。

标签: flutter


【解决方案1】:

就我而言,它是由the audio service package引起的。我会提请他们注意此事。

【讨论】:

    【解决方案2】:

    如果您最近遇到此问题,即您的 main() 函数被调用两次并且您使用的是 firebase_messaging 版本 14.1.0,您应该将您的软件包版本升级到 14.1.2。

    https://github.com/firebase/flutterfire/issues/9912

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 2018-10-28
      • 2018-10-16
      • 2011-10-01
      相关资源
      最近更新 更多