0%

Flutter 权限弹窗没有回调的调查

flutter permission_handler 插件一直用的很好,突然有一天起它的弹窗没有回调了,导致一直卡在那里,影响了后续的逻辑。

调查步骤

  1. 找到 permission_handler 的源码,发现是用的 federated plugin,这个是 flutter 2.5 之后的新特性,可以把插件的实现分成多个部分,每个部分对应一个平台,比如 iOS 和 Android。这样就可以把插件的实现分开,不用把所有的实现都放在一个文件里了。
  2. 源码编译运行,可以正常表现。
  3. 回退到项目上一个发布日的版本,发现没有这个问题。为了确认,源码都拷贝到一样的版本还是不行。
  4. 用原码测试的代码来试试看,放到首页 screen 里,发现有问题,怀疑可能是中间逻辑的问题。
  5. 用源码测试的代码放到 main 文件里,还是有问题。
  6. 决定把 permission_handler_android 的源码拷贝到项目里,看看如何,好不容易集成完后,发现还是有问题。
  7. 一筹莫展之际,开始有点怀疑 methodchannel 的实现会不会冲突了。
  8. 刚好看到 permission_handler 的 issue 里有人说同样的问题,然后确定了说法,是 methodchannel 的实现冲突了。