国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

flutter3.7版本下使用flutter boost解決使用platview崩潰或異常問題

這篇具有很好參考價(jià)值的文章主要介紹了flutter3.7版本下使用flutter boost解決使用platview崩潰或異常問題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

背景
? 工程使用了混合開發(fā),使用flutter boost插件,flutter 的activity1 frament1 跳轉(zhuǎn)activity2 frament2,frament1 包含platformView,按照上面老哥解決崩潰問題的基礎(chǔ)上,出現(xiàn)activity2 frament2返回activity1 frament1時(shí),platformView觸摸事件沒有響應(yīng)。問題具體見:https://github.com/alibaba/flutter_boost/issues/1755

分析

? ?項(xiàng)目主頁使用platview實(shí)現(xiàn)了webview功能,即ctivity1 frament1為主頁。具體見下圖所示

flutter3.7版本下使用flutter boost解決使用platview崩潰或異常問題,flutter

?使用AndroidView,flutter3.7上底層使用PlatformViewWrapper作為容器,底層事件是先被PlatformViewWrapper接收,在onTouchEvent中分發(fā)到Dart,然后到dart層,然后再分發(fā)到PlatformViewsController分發(fā)到platformView,具體見:Flutter 之快速理解混合開發(fā)里的手勢事件傳遞 - 掘金

? 調(diào)試時(shí),發(fā)現(xiàn)activity2 frament2返回時(shí),在activity1 frament1 已經(jīng)在PlatformViewsController已經(jīng)attach,activity2的onDestroy觸發(fā)flutterboostfragment的onDetach,最終調(diào)用了PlatformViewsController又執(zhí)行一次detach方法,導(dǎo)致platformViewsChannel被置為空,觸摸事件沒法傳遞過來
/**

  • Detaches this platform views controller.
  • This is typically called when a Flutter applications moves to run in the background, or is

  • destroyed. After calling this the platform views controller will no longer listen to it's
  • previous messenger, and will not maintain references to the texture registry, context, and
  • messenger passed to the previous attach call.
    */
    @UiThread
    public void detach() {
    if (platformViewsChannel != null) {
    platformViewsChannel.setPlatformViewsHandler(null);
    }
    destroyOverlaySurfaces();
    platformViewsChannel = null;
    context = null;
    textureRegistry = null;
    }

解決
? 把platformViewsChannel重新attach,恢復(fù)platformViewsChannel,能讓activity1 frament1 的platformView重新獲取觸摸事件。


實(shí)現(xiàn):
activity2的onDestroy時(shí),異步去調(diào)用 flutterEngine.getPlatformViewsController().attach(getContextActivity(), flutterEngine.getRenderer(), flutterEngine.getDartExecutor()); 前提是判斷frament1處于可見狀態(tài),且處于detach狀態(tài)
兼容:
PlatformViewsController在attach時(shí)有個(gè)判斷context是否為空,如下所示:
public void attach(
@nullable?Context context,
@nonnull?TextureRegistry textureRegistry,
@nonnull?DartExecutor dartExecutor) {
if (this.context != null) {
throw new AssertionError(
"A PlatformViewsController can only be attached to a single output target.\n"
+ "attach was called while the PlatformViewsController was already attached.");
}
this.context = context;
this.textureRegistry = textureRegistry;
platformViewsChannel = new PlatformViewsChannel(dartExecutor);
platformViewsChannel.setPlatformViewsHandler(channelHandler);
}
因此在上面老哥重寫的FlutterBoostPlatformViewsController中覆蓋attach方法添加detach()下兼容處理,避免快速切換,context不為空的AssertionError問題
@OverRide
public void attach(
@nullable?Context context,
@nonnull?TextureRegistry textureRegistry,
@nonnull?DartExecutor dartExecutor) {
//fixMe super.attach里面需要context為空,否則直接拋異常,而在生命周期里面設(shè)置會(huì)因?yàn)榭焖冱c(diǎn)擊不夠?qū)崟r(shí)設(shè)置導(dǎo)致異常
//因此,在attach之前先重置下,當(dāng)官方解決問題可以移除這個(gè)代碼
detach();
super.attach(context,textureRegistry,dartExecutor);
}文章來源地址http://www.zghlxwxcb.cn/news/detail-538796.html

到了這里,關(guān)于flutter3.7版本下使用flutter boost解決使用platview崩潰或異常問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Flutter iOS 集成使用 flutter boost

    Flutter iOS 集成使用 flutter boost

    在 Flutter項(xiàng)目中集成完 flutter boost,并且已經(jīng)使用了 flutter boost進(jìn)行了路由管理,這時(shí)如果需要和iOS混合開發(fā),這時(shí)就要到 原生端進(jìn)行集成。 注意:之前建的項(xiàng)目必須是 Flutter module 項(xiàng)目,并且原生項(xiàng)目和flutter module項(xiàng)目在同一個(gè)文件夾下面 下面是原生端集成 flutter boost的步驟

    2024年02月13日
    瀏覽(51)
  • 修改Flutter3.19.2SDK的鏡像源為國內(nèi)鏡像源 解決一直卡在Running Gradle task ‘a(chǎn)ssembleDebug‘與Executfailed for task ‘a(chǎn)pp:x‘

    修改Flutter3.19.2SDK的鏡像源為國內(nèi)鏡像源 解決一直卡在Running Gradle task ‘a(chǎn)ssembleDebug‘與Executfailed for task ‘a(chǎn)pp:x‘

    該文檔僅為個(gè)人解決記錄 參考自:https://blog.csdn.net/qq_39105508/article/details/133992154 在 flutter3.19.2packagesflutter_toolslibsrc 下的 http_host_validator.dart 文件中,找到 const String kMaven = \\\'https://maven.google.com/\\\'; ,將 Flutter SDK 使用的 maven 鏡像修改為國內(nèi)鏡像 參考自:https://blog.csdn.net/libra_

    2024年04月17日
    瀏覽(20)
  • Flutter iOS 集成使用 fluter boost

    Flutter iOS 集成使用 fluter boost

    在 Flutter項(xiàng)目中集成完 flutter boost,并且已經(jīng)使用了 flutter boost進(jìn)行了路由管理,這時(shí)如果需要和iOS混合開發(fā),這時(shí)就要到 原生端進(jìn)行集成。 注意:之前建的項(xiàng)目必須是 Flutter module 項(xiàng)目,并且原生項(xiàng)目和flutter module項(xiàng)目在同一個(gè)文件夾下面 下面是原生端集成 flutter boost的步驟

    2024年02月14日
    瀏覽(26)
  • 關(guān)于visual studio 2010 及以上版本 引入boost庫的最新解決方法

    關(guān)于visual studio 2010 及以上版本 引入boost庫的最新解決方法

    之前沒有怎么用到boost庫,出來實(shí)習(xí)需要去編譯一些代碼,需要引入boost第三方庫,在這過程中,一直出現(xiàn) LINK : fatal error LNK1104: 無法打開文件“l(fā)ibboost_filesystem-vc100-mt-gd-x3 錯(cuò)誤, 但是也確實(shí)是跟其他教程學(xué)過來的, 最后估計(jì)應(yīng)該還是引入庫的問題 大家有疑問的可以按照這個(gè)

    2024年02月12日
    瀏覽(18)
  • Chrome瀏覽器118版本崩潰“STATUS_INVALID_IMAGE_HASH”的幾種解決方式

    Chrome瀏覽器118版本崩潰“STATUS_INVALID_IMAGE_HASH”的幾種解決方式

    2023年11月18日更新:如果使用了【禁用更新的安裝包】后依然會(huì)在打開“關(guān)于”頁面時(shí)自動(dòng)更新,可以考慮搜索一下“禁用Chrome更新”的方法,把update文件夾設(shè)個(gè)權(quán)限一勞永逸。 目前看來似乎仍有自動(dòng)更新的問題,一更新就會(huì)爆炸,到底是為什么我也不清楚,118、119版本都會(huì)

    2024年02月08日
    瀏覽(27)
  • flutter 開發(fā)應(yīng)用 上架到 testFlight 閃退崩潰

    現(xiàn)象描述: 本地模擬器和真機(jī)運(yùn)行正常,上架到testFlight 一直崩潰閃退。 解決思路: 1、進(jìn)行崩潰日志分析??-》沒有結(jié)果 iOS上獲取崩潰日志的N+1種方法_plcrashreport-CSDN博客 mac 臺(tái)式機(jī)上可以安裝testflight 也可以進(jìn)行測試 也可以分析崩潰日志 2、進(jìn)行排除法 對(duì)錯(cuò)誤地方進(jìn)行定位

    2024年02月07日
    瀏覽(38)
  • 解決win10相機(jī)無法使用,相機(jī)崩潰問題

    解決win10相機(jī)無法使用,相機(jī)崩潰問題

    win10系統(tǒng)可能因很多原因無法使用,例如權(quán)限設(shè)置,或者win10系統(tǒng)本身問題,此教程教大家如何解決 1、進(jìn)入電腦系統(tǒng)設(shè)置,在里面找到”隱私“,并點(diǎn)擊進(jìn)入 2、進(jìn)入隱私設(shè)置界面后,向下滑動(dòng)找到”相機(jī)“,并點(diǎn)擊進(jìn)入相機(jī)設(shè)置 3、在相機(jī)設(shè)置界面將“此設(shè)備的相機(jī)訪問權(quán)限

    2024年02月04日
    瀏覽(17)
  • 服務(wù)器斷電導(dǎo)致mysql崩潰,使用恢復(fù)模式的解決步驟

    2024-02-18T08:45:58.039432Z 0 [ERROR] InnoDB: Page [page id: space=0, page number=238] log sequence number 8738273916 is in the future! Current system log sequence number 8738272796. 2024-02-18T08:45:58.039450Z 0 [ERROR] InnoDB: Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB log files. Please refer to http://dev.

    2024年02月22日
    瀏覽(18)
  • flutter版本升級(jí)后,解決真機(jī)和模擬器運(yùn)行錯(cuò)誤問題

    flutter版本升級(jí)后,解決真機(jī)和模擬器運(yùn)行錯(cuò)誤問題

    flutter從3.3.2升級(jí)到3.16.0,項(xiàng)目運(yùn)行到真機(jī)和模擬器報(bào)同樣的錯(cuò),錯(cuò)誤如下: 解決辦法:在android目錄下的build.gradle加入下面這行,如下圖: 重新運(yùn)行,正常把a(bǔ)pk安裝到真機(jī)上或者運(yùn)行到模擬器上

    2024年01月22日
    瀏覽(27)
  • 【ubuntu】查看Boost庫的版本

    【ubuntu】查看Boost庫的版本

    目錄 查看Boost庫的版本 要查看Boost庫的版本,可以使用以下命令: 這個(gè)命令會(huì)在Boost庫的版本頭文件中查找并顯示BOOST_LIB_VERSION宏定義的值,該值表示Boost版本號(hào)。運(yùn)行命令后,你將看到類似下面的輸出: 請(qǐng)注意,命令的路徑可能因操作系統(tǒng)或Boost庫的安裝位置而有所不同。

    2024年04月29日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包