crazecoder / flutter_bugly

腾讯Bugly flutter应用更新统计及异常上报插件,支持Android、iOS
Other
602 stars 164 forks source link

关于Zone mismatch解决方法 #162

Open crazecoder opened 3 months ago

crazecoder commented 3 months ago

出现如下报错时

════════ Exception caught by Flutter framework ════════════════════════════════════
The following assertion was thrown during runApp:
Zone mismatch.

The Flutter bindings were initialized in a different zone than is now being used.
This will likely cause confusion and bugs as any zone-specific configuration will
inconsistently use the configuration of the original binding initialization zone or
this zone based on hard-to-predict factors such as which zone was active when a
particular callback was set.
It is important to use the same zone when calling `ensureInitialized` on the
binding as when calling `runApp` later.
To make this warning fatal, set BindingBase.debugZoneErrorsAreFatal to true before
the bindings are initialized (i.e. as the first statement in `void main() { }`).
[...]
═══════════════════════════════════════════════════════════════════════════════════

使用下面方法解决

void main(){
    runZonedGuarded(() {
      WidgetsFlutterBinding.ensureInitialized();
      runApp(MyApp());
    }, (exception, stackTrace) {
      FlutterBugly.uploadException(message: exception.toString(),detail: stackTrace.toString());
    });
}
wxc64970 commented 4 weeks ago

解决方法里还需要这一句吗? FlutterBugly.init( androidAppId: "your android app id", iOSAppId: "your iOS app id", );

crazecoder commented 4 weeks ago

这个是必须的

wxc64970 commented 4 weeks ago

这个是必须的

初始化写在哪个位置

crazecoder commented 4 weeks ago

这个是必须的

初始化写在哪个位置

按需选择,个人一般放在启动app时,或者启动后的第一个界面(当然你得有信心,否则第一个界面出来之前的报错不会上传)

wxc64970 commented 4 weeks ago

这个是必须的

初始化写在哪个位置

按需选择,个人一般放在启动app时,或者启动后的第一个界面

初始化位置会不会影响隐私协议,还是必须要用户同意隐私协议后才能初始化

crazecoder commented 4 weeks ago

这个是必须的

初始化写在哪个位置

按需选择,个人一般放在启动app时,或者启动后的第一个界面

初始化位置会不会影响隐私协议,还是必须要用户同意隐私协议后才能初始化

看各市场审核要求,经测google play没有这个要求