-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
请描述遇到的问题,以及您所期望的正确的结果
java.lang.NullPointerException: Attempt to invoke virtual method 'void io.flutter.plugin.editing.TextInputPlugin.onProvideAutofillVirtualStructure(android.view.ViewStructure, int)' on a null object reference
at io.flutter.embedding.android.FlutterView.onProvideAutofillVirtualStructure(SourceFile:6)
at android.view.View.dispatchProvideStructure(View.java:10706)
at android.view.View.dispatchProvideAutofillStructure(View.java:10698)
at android.view.ViewGroup.dispatchProvideAutofillStructure(ViewGroup.java:3718)
at android.view.ViewGroup.dispatchProvideAutofillStructure(ViewGroup.java:3741)
at android.view.ViewGroup.dispatchProvideAutofillStructure(ViewGroup.java:3741)
at android.view.ViewGroup.dispatchProvideAutofillStructure(ViewGroup.java:3741)
at android.app.assist.AssistStructure$WindowNode.(AssistStructure.java:539)
at android.app.assist.AssistStructure.(AssistStructure.java:2371)
at android.app.ActivityThread.handleRequestAssistContextExtras(ActivityThread.java:4268)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2588)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:257)
at android.os.Looper.loop(Looper.java:368)
at android.app.ActivityThread.main(ActivityThread.java:8848)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:572)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)
请说明如何操作会遇到上述问题
项目是混合开发的,就是首页有三个tab,每个tab里面都是一个继承FlutterBoostFragment后的Fragment,然后通过 meFlutterFragment =
FlutterBoostFragment.CachedEngineFragmentBuilder(MeFlutterFragment::class.java)
.url("me_page")
.urlParams(params)
.build()
这种方式去启动flutter里面的界面。
但现在发现在一些自动填充功能的手机上,会导致填充崩溃,java.lang.NullPointerException: Attempt to invoke virtual method 'void io.flutter.plugin.editing.TextInputPlugin.onProvideAutofillVirtualStructure(android.view.ViewStructure, int)' on a null object reference
查看代码发现FlutterView里面有这个
@OverRide
public void onProvideAutofillVirtualStructure(@nonnull ViewStructure structure, int flags) {
super.onProvideAutofillVirtualStructure(structure, flags);
textInputPlugin.onProvideAutofillVirtualStructure(structure, flags);
}
这里可能会有一些启动的时机不对导致textInputPlugin为空报错
请问有没有比较好的方法能够解决这个问题。
在下面填入关键复现代码
class MeFlutterFragment : FlutterBoostFragment() {
private val uniqueId: String? = null
override fun onResume() {
super.onResume()
CacheManager.getInstance().calcCacheSize(true)
setStatusBarColor()
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val containerManager = FlutterContainerManager.instance()
val top = containerManager.topContainer
if(top!=null && top !is MeFlutterFragment){
top.detachFromEngineIfNeeded()
}
return super.onCreateView(inflater, container, savedInstanceState)
}
meFlutterFragment =
FlutterBoostFragment.CachedEngineFragmentBuilder(MeFlutterFragment::class.java)
.url("me_page")
.urlParams(params)
.build()
flutterboost的版本是5.0.2
复现的平台
Android
Flutter SDK版本
3.22.2
FlutterBoost版本
5.0.2
是否延迟初始化FlutterBoost
No