alibaba / flutter_boost

FlutterBoost is a Flutter plugin which enables hybrid integration of Flutter for your existing native apps with minimum efforts
https://github.com/alibaba/flutter_boost
MIT License
6.95k stars 1.22k forks source link

FlutterBoost#Oops, Failed to update overlay iOS端启动时有时候会报这个错误,一报这个错app就白屏了,出现这种情况的频次还蛮高,必须清掉后台再重新进才有可能正常进入app #1790

Open zq6419 opened 1 year ago

zq6419 commented 1 year ago

使用的版本4.2.0,手机是iponexr 系统版本是16.1.1 报错日志:flutter: FlutterBoost#Oops, Failed to update overlay. mode=BoostSpecificEntryRefreshMode.add, BoostContainer(name:rootRoutePage, pages:[BoostPage(name:rootRoutePage, uniqueId:11F51639-F3D9-45FF-B562-123A3870A75F, arguments:{animated: false})])

0xZOne commented 1 year ago

从日志看,是FlutterBoost没有被正确初始化。

一个可能的原因是,接入方自定义了appBuilder,但是appBuilder的入参没有被加入widget树中,导致FlutterBoost初始化失败~

  ......
  @override
  Widget build(BuildContext context) {
    return FlutterBoostApp(
      routeFactory,
      appBuilder: XXXXBuilder,  // 自定义appBuilder
        interceptors: []
    );
  }

  Widget XXXXBuilder(Widget child) {
    return Container();  // 没有将child挂到widget树上
  }
  ......

如果是其他情况,请给个可复现的demo,谢谢。

yuyangkk commented 1 year ago

@0xZOne 你好,我们加到widget树中也是一样的,杀掉APP,重新打开,多次尝试就会出现这个问题, 之前版本未出现这种情况,近期升级了Flutter环境和FlutterBoost,麻烦给看下这个问题 入口代码如下:

Widget _materialAppBuilder(Widget home) {
    return MaterialApp(
      builder: EasyLoading.init(
        builder: (context, widget) {
          return MediaQuery(
            data: MediaQuery.of(context)
                .copyWith(textScaleFactor: 1.0, boldText: false),
            child: widget,
          );
        },
      ),
      routes: Router().getRouters(context),
      home: Container(
        child: home,
        color: Colors.white,
      ),
    );
 }

@override
 Widget build(BuildContext context) {
    return FlutterBoostApp(
      routeFactory,
      appBuilder: _materialAppBuilder,
    );
 }

flutter doctor -v

[✓] Flutter (Channel stable, 3.0.5, on macOS 13.0 22A8380 darwin-arm, locale
    zh-Hans-CN)
    • Flutter version 3.0.5 at /Users/gyk/workdeveloper/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f1875d570e (9 months ago), 2022-07-13 11:24:16 -0700
    • Engine revision e85ea0e79c
    • Dart version 2.17.6
    • DevTools version 2.12.2
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/gyk/Library/Android/sdk
    • Platform android-33-ext5, build-tools 33.0.2
    • ANDROID_HOME = /Users/gyk/Library/Android/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.12.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      11.0.15+0-b2043.56-8887301)

[✓] VS Code (version 1.77.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.62.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-arm64   • macOS 13.0 22A8380 darwin-arm
    • Chrome (web)    • chrome • web-javascript • Google Chrome 112.0.5615.121

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!
yuyangkk commented 1 year ago

Release 模式下,杀掉App,再重新打开App,几乎是必现的,错误信息 flutter_boost版本4.2.1, 4.2.2都会出现

2023-04-20 17:54:28.448655 flutter log-->error msg:══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞══════════════════════
The following assertion was thrown during a scheduler callback:
Please check if the engine has been initialized!
'package:flutter_boost/src/boost_channel.dart':
Failed assertion: line 33 pos 9: '_appState != null'

When the exception was thrown, this was the stack:
#2      BoostChannel.addEventListener (package:flutter_boost/src/boost_channel.dart:33:9)
#3      FlutterBoostAppState._addAppLifecycleStateEventListener (package:flutter_boost/src/flutter_boost_app.dart:120:10)
#4      FlutterBoostAppState.initState.<anonymous closure> (package:flutter_boost/src/flutter_boost_app.dart:109:7)
#5      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1146:15)
#6      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1091:9)
#7      SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:864:7)
(elided 13 frames from class _AssertionError, class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
═════════════════════════════════════════════════════════════════

2023-04-20 17:54:28.448649 flutter log-->error:Please check if the engine has been initialized!
'package:flutter_boost/src/boost_channel.dart':
Failed assertion: line 33 pos 9: '_appState != null'
 stack:#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:51:61)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:40:5)
#2      BoostChannel.addEventListener (package:flutter_boost/src/boost_channel.dart:33:9)
#3      FlutterBoostAppState._addAppLifecycleStateEventListener (package:flutter_boost/src/flutter_boost_app.dart:120:10)
#4      FlutterBoostAppState.initState.<anonymous closure> (package:flutter_boost/src/flutter_boost_app.dart:109:7)
#5      SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1146:15)
#6      SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1091:9)
#7      SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:864:7)
#8      _rootRun (dart:async/zone.dart:1418:47)
#9      _CustomZone.run (dart:async/zone.dart:1328:19)
#10     _CustomZone.runGuarded (dart:async/zone.dart:1236:7)
#11     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1276:23)
#12     _rootRun (dart:async/zone.dart:1426:13)
#13     _CustomZone.run (dart:async/zone.dart:1328:19)
#14     _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:1260:23)
#15     Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:18:15)
#16     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19)
#17     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5)
#18     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

2023-04-20 17:54:28.448622 FlutterBoost#Oops, Failed to update overlay. mode=BoostSpecificEntryRefreshMode.add, BoostContainer(name:/, pages:[BoostPage<dynamic>(name:/, uniqueId:1681984467915_/, arguments:null)])
jihengcong commented 11 months ago

白屏页面是不是使用tabbar了