alibaba / alibaba/flutter_boost

Android 原生应用将flutter嵌入到FlutterFragment,返回键问题

Open
#914 5 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.