日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【错误记录】Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )

發(fā)布時(shí)間:2025/6/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【错误记录】Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、 報(bào)錯(cuò)信息
  • 二、 解決方案





一、 報(bào)錯(cuò)信息



在 Flutter 混合開(kāi)發(fā)中 , 開(kāi)發(fā) Android 與 Flutter 信息交互功能 ;

創(chuàng)建 BasicMessageChannel 通道 , 其構(gòu)造函數(shù)如下 :

public BasicMessageChannel(@NonNull BinaryMessenger messenger, @NonNull String name, @NonNull MessageCodec<T> codec) {

首先要獲取 BinaryMessenger 實(shí)例對(duì)象 ;

BinaryMessenger 實(shí)例對(duì)象需要從 FlutterEngine 中獲取 ;


獲取流程如下 :

首先 , 創(chuàng)建 FlutterFragment , 這是要嵌入到 Android 的 Activity 界面中的 Flutter 界面 ;

mFlutterFragment = FlutterFragment.withNewEngine().initialRoute("嵌入 FlutterFragment").build();

然后 , 顯示該 Flutter 頁(yè)面 , 這里直接將 Flutter 頁(yè)面的 Fragment 設(shè)置到 Activity 中即可 ;

fragmentTransaction.replace(R.id.frame, mFlutterFragment); fragmentTransaction.commit();

最后 , 獲取 FlutterEngine , 但是在此處報(bào)錯(cuò) ;

mFlutterFragment.getFlutterEngine() ;

報(bào)錯(cuò)信息如下 :

2021-08-30 11:08:39.318 32433-32433/com.example.flutter_native E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.example.flutter_native, PID: 32433java.lang.NullPointerException: Attempt to invoke virtual method 'io.flutter.embedding.engine.FlutterEngine io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.getFlutterEngine()' on a null object referenceat io.flutter.embedding.android.FlutterFragment.getFlutterEngine(FlutterFragment.java:986)at com.example.flutter_native.MainActivity.initEventChannel(MainActivity.java:104)at com.example.flutter_native.MainActivity.access$100(MainActivity.java:21)at com.example.flutter_native.MainActivity$1.onClick(MainActivity.java:63)at android.view.View.performClick(View.java:6597)at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)at android.view.View.performClickInternal(View.java:6574)at android.view.View.access$3100(View.java:778)at android.view.View$PerformClick.run(View.java:25885)at android.os.Handler.handleCallback(Handler.java:873)at android.os.Handler.dispatchMessage(Handler.java:99)at android.os.Looper.loop(Looper.java:193)at android.app.ActivityThread.main(ActivityThread.java:6718)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)





二、 解決方案



報(bào)錯(cuò)位置在 FlutterFragment 中 , 在調(diào)用 getFlutterEngine 方法時(shí)報(bào)錯(cuò) , getFlutterEngine 方法相關(guān)代碼如下 :

public class FlutterFragment extends Fragmentimplements FlutterActivityAndFragmentDelegate.Host, ComponentCallbacks2 {// Delegate that runs all lifecycle and OS hook logic that is common between// FlutterActivity and FlutterFragment. See the FlutterActivityAndFragmentDelegate// implementation for details about why it exists.@VisibleForTesting /* package */ FlutterActivityAndFragmentDelegate delegate;/*** Hook for subclasses to obtain a reference to the {@link FlutterEngine} that is owned by this* {@code FlutterActivity}.*/@Nullablepublic FlutterEngine getFlutterEngine() {return delegate.getFlutterEngine();} }

報(bào)錯(cuò)信息是

java.lang.NullPointerException: Attempt to invoke virtual method 'io.flutter.embedding.engine.FlutterEngine io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.getFlutterEngine()' on a null object reference

FlutterActivityAndFragmentDelegate delegate 為空 ;

在 FlutterFragment 顯示成功后 , 該 delegate 才會(huì)進(jìn)行初始化 ;

在 Android 中嵌入 Flutter 頁(yè)面 , 比較慢 , 大概耗時(shí) 1 ~ 3 秒左右 ;

也就是說(shuō)在 Flutter 頁(yè)面顯示成功之前 , FlutterActivityAndFragmentDelegate delegate 值都是 null , 此時(shí)通過(guò) Fragment 獲取 FlutterEngine() , 都會(huì)報(bào)空指針異常 ;


在啟動(dòng) Flutter 頁(yè)面后 , 延遲 5 秒 , 再進(jìn)行初始化 , 即可解決上述問(wèn)題 ;

mFlutterFragment = FlutterFragment.withNewEngine().initialRoute("嵌入 FlutterFragment").build();Log.i(TAG, "mFlutterFragment : " + mFlutterFragment);// 創(chuàng)建 FlutterFragment fragmentTransaction.replace(R.id.frame, mFlutterFragment); fragmentTransaction.commit();//initEventChannel();new Thread(){@Overridepublic void run() {try {sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}initEventChannel();Log.i(TAG, "mFlutterFragment : " + mFlutterFragment);} }.start();

從 Android 中向 Flutter 傳遞消息成功 :

總結(jié)

以上是生活随笔為你收集整理的【错误记录】Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91精品国产日韩91久久久久久 | 99久久久无码国产精品性色戒 | 国产富婆一区二区三区 | 久草视| 亚洲国产一区在线观看 | 亚洲男人的天堂网 | 午夜精品久久久久久久99老熟妇 | 奇米影视四色777 | 亚洲免费三级 | 国产福利片在线观看 | 亚洲作爱网| 精品免费观看 | 国产精品刺激 | 国产一级淫片a | 国产亚洲欧美一区二区三区 | 老局长的粗大高h | 少妇粉嫩小泬喷水视频www | 久久久久久久久国产精品 | 国产91欧美 | 红桃视频在线播放 | 又黄又免费的视频 | 欧美成人三级在线观看 | 日本久久亚洲 | 日韩免费在线视频 | 日本成人在线播放 | 日韩欧美天堂 | 日本www网站 | 色呦呦一区二区三区 | 日韩精品一区三区 | 一级片一区 | 日韩特级毛片 | 性欧美18一19性猛交 | 国产精品天干天干 | 丁香六月综合 | 亚洲精品久久夜色撩人男男小说 | 中文在线一区二区 | 在线免费观看一区 | 99er视频| 精品少妇人妻AV无码专区在线 | 欧美性受xxxx黑人 | 五月天婷婷激情网 | 成人黄色小说视频 | 国产精品久久久久野外 | 网站黄色在线观看 | av手机在线免费观看 | 伊人成年网 | 欧美成人三级精品 | 成人久久久精品乱码一区二区三区 | 亚洲一区二区三区四 | 日韩成人免费电影 | 姐姐av | 国产成人+综合亚洲+天堂 | 国产视频一区二区视频 | 亚洲免费视 | 欧美在线v | 91情侣视频| 色网在线视频 | 小向美奈子在线观看 | 亚洲精品白浆 | 日本人妖在线 | 中文字幕二区 | 亚洲AV无码成人国产精品色 | 国产精品入口久久 | 女优视频在线观看 | 99ri在线观看 | 国产一级片av | 成人福利在线视频 | 丝袜 亚洲 另类 欧美 重口 | 我们2018在线观看免费版高清 | 欧美中文一区 | 欧美色图日韩 | 亚洲高清一区二区三区 | 亚洲av高清一区二区三区 | 麻豆av影院 | 欧美一区二区不卡视频 | 日本高清视频www | 自拍视频网站 | 又黄又刺激的视频 | 可以免费看av的网站 | 色秀视频网 | 日本韩国欧美一区二区三区 | 国内成人精品视频 | 鲁一鲁啪一啪 | 国产乱真实合集 | 日日噜噜夜夜狠狠久久丁香五月 | 国产精品第9页 | 黄色一级国产 | 日本xx视频免费观看 | 天堂8在线视频 | 高h免费视频 | 蜜桃视频一区二区 | 男人久久久 | 精品在线视频免费 | 99热这里只有精品5 国产精品伦子伦免费视频 精品一二三 | 欧美自拍视频在线观看 | 嫩草午夜少妇在线影视 | 男女做爰真人视频直播 | 黑白配高清国语在线观看 | 91国产一区二区 |