alibaba / alibaba/flutter_boost
Android 原生应用将flutter嵌入到FlutterFragment,返回键问题
- Dominant language
- Dart
- Stars
- 7.2k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
在使用中发现了一个问题,原生Fragment嵌入flutter,flutter内部打开了多个flutter界面,一按手机返回键直接返回到上一个activity了,而不是返回到上一个flutter界面。
操作 :MainAcitvity(Fragment依附的Activity)->Fragment(添加FlutterFragment的Fragment)->FlutterFragment->main.dart->test.dart 点击手机的返回键
预期:返回到main.dart界面
实际:触发了MainActivity处理返回键的问题
嵌入方法
`
var mFragment =
FlutterFragment.NewEngineFragmentBuilder()
.url("flutterPage")
.params(params)
.build()
var beginTransaction = childFragmentManager.beginTransaction()
beginTransaction.add(R.id.flutterfragmentsa, mFragment).commit()
beginTransaction.show(mFragment)
`
mainActivity 处理返回键的方法
`
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK && event?.repeatCount == 0) {
if ((System.currentTimeMillis() - mExitTime) > 2000) {
toast(getString(R.string.tips_global_again_exit))
mExitTime = System.currentTimeMillis()
} else {
UserUtil.removeIsLoadFlutter(mActivity)
Utils.deleteFilesByDirectory(File("" + this.cacheDir + "/image_manager_disk_cache"))
MyApplication.mContext.exitApp()
}
return true
}
return super.onKeyDown(keyCode, event)
}
`
框架中找了半天没有找到处理的方法
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reproducing the MainActivity → Fragment → FlutterFragment → main.dart → test.dart flow described in the issue, then inspect MainActivity.onKeyDown and the FlutterFragment embedding setup. Determine how the phone back key is dispatched and make the done behavior return from test.dart to main.dart before invoking the activity-level handler.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, dart, kotlin
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100