Joe Chan

Results 111 comments of Joe Chan

我这也发现了这个问题,不知道这个项目作者还在维护不,希望修复一下。 验证发现是InjectedChromeClient中onProgressChanged造成的。

这个是依赖库的最低编译版本是31,但是项目的最低编译版本是29导致的。调整项目的minCompileSDK为31就好了

可以看下官方[issue](https://github.com/flutter/flutter/issues/94329)的讨论。CodePaleLight提交了[PR](https://github.com/flutter/engine/pull/31045/commits/9a18489c86d3e7795a0ed965d1bbcd437d24fecd)防止了这个崩溃,但2.5.3里应该是没的,得升级Flutter版本了。

v3.0-release1.0的tag上仍会报这个错,`push`方法源码上我看已经有了T extends Object?,是不是还有pushWithResult需要加 ![image](https://user-images.githubusercontent.com/9456005/168567830-f41913af-b4fa-4ee2-9442-bfe39919a2dd.png)

popRoute为了回传结果,为什么用的是pageInfo中的arguments?不应该用外部业务层传进来的result么?就像正常pop中的代码 ```dart final params = CommonParams() ..pageName = container!.pageInfo.pageName ..uniqueId = container.pageInfo.uniqueId ..arguments = (result is Map) ? result : {}; await nativeRouterApi!.popRoute(params); ```

@0xZOne 所以`container != topContainer`的情况下,是不能回传结果的? ![image](https://user-images.githubusercontent.com/9456005/170230164-a8fc7c72-d830-4df7-a65d-ab95cd75db01.png)

@0xZOne `popWithResult`方法是关闭顶层的Flutter容器页面吧。 我上面的没说清楚。Flutter A 跳转 Flutter B 再跳转 Flutter C,Flutter C页面某个功能会通知Flutter B关闭自身,并将某些数据回传给Flutter A。 在B中接收到通知后,使用下面的方法,关闭自身,并希望将ret回传给A。 ```dart PageInfo? pageInfo = BoostNavigator.instance.getPageInfoByContext(ctx); if (pageInfo != null) { BoostNavigator.instance.remove(pageInfo.uniqueId, arguments: ret); } ``` 但按照remove中的逻辑:...

@0xZOne 我看了下`nativeRouterApi!.popRoute(params);`的Native里的实现,Native中将params转化成`FlutterBoostRouteOptions`后,就交由delegate进行处理,delegate处理默认返回false,还是直接继续调用`container.finishContainer`方法,argument作为result传了进入。所以这个地方应该就是写错了,不应该用pageInfo的arguments。 ![image](https://user-images.githubusercontent.com/9456005/171312070-b7262511-0cd8-460d-9208-68d7edd0830f.png) ![image](https://user-images.githubusercontent.com/9456005/171312199-7f694588-9d59-4aa1-a6cc-6bf0f0a51a04.png)

Boost3.0构建时,有提供Api自己拦截前后台事件然后处理: ```java FlutterBoostSetupOptions options = new FlutterBoostSetupOptions.Builder().shouldOverrideBackForegroundEvent(true).build(); ``` 然后自己实现ActivityLifecycleCallbacks,自己计数后,再通知到Flutter就可以了,代码如下: ```java public class BTBoostActivityLifecycle implements Application.ActivityLifecycleCallbacks { private int activityReferences = 0; private boolean isActivityChangingConfigurations = false; public BTBoostActivityLifecycle() { }...

https://github.com/alibaba/flutter_boost/pull/1511 这里有人提了PR可以解决