Flutter项目中local_auth与shuftipro_onsite_sdk返回键冲突问题求助
解决local_auth与shuftipro_onsite_sdk的Activity冲突及Android 12+返回键问题
方案一:自定义兼容Activity同时适配两个包
- 让MainActivity继承
FlutterFragmentActivity,补全shuftipro_onsite_sdk的适配:- 核对shuftipro SDK文档,检查是否有针对FragmentActivity的配置要求,比如在
AndroidManifest.xml里给Activity添加特定launchMode或主题参数 - 手动初始化shuftipro SDK时,明确传入当前Activity的上下文,避免依赖默认的Activity类型限制
- 核对shuftipro SDK文档,检查是否有针对FragmentActivity的配置要求,比如在
- 修复Android 12+返回键与PopScope失效问题:
在MainActivity.kt中重写onBackPressed方法,手动把返回事件分发给Flutter:
同时确保Flutter层的override fun onBackPressed() { if (flutterEngine?.navigationChannel?.popRoute() == false) { super.onBackPressed() } }PopScope(或低版本的WillPopScope)正确监听返回事件,和原生层逻辑配合。
方案二:不切换FragmentActivity,兼容local_auth
- 先检查local_auth的最新版本,看是否已经支持在
FlutterActivity下直接运行,无需切换父类 - 如果必须依赖Fragment特性,试试手动在FlutterActivity中添加local_auth需要的Fragment:
然后通过MethodChannel把这个Fragment的上下文传递给local_auth,确保验证逻辑能正常触发(部分场景可能需要修改local_auth的源码适配)class MainActivity : FlutterActivity() { private val authFragment = LocalAuthFragment() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) supportFragmentManager.beginTransaction().add(authFragment, "LocalAuth").commit() } }
方案三:隔离两个功能的运行环境
- 把指纹/面容验证和shuftipro证件验证拆分到不同Activity:
- 主Activity用
FlutterActivity,专门处理shuftipro的验证流程 - 新建一个继承
FlutterFragmentActivity的子Activity,只负责指纹/面容验证,需要验证时跳转过去,完成后返回主Activity - 注意处理两个Activity之间的参数传递和结果回调,确保验证状态能同步到Flutter业务逻辑中
- 主Activity用
内容的提问来源于stack exchange,提问作者RA Rimon Ahmed
相关产品推荐
相关产品推荐

