【Flutter】 webview_flutter避坑

webview_flutter

webview_flutter沒有SSL Error接口,也就是說等你的網頁出現SSL 錯誤的時候這個插件無法捕捉處理,除非你改它的源碼。

下面這段是webview_flutter官網的例子,它有onHttpError、onWebResourceError、但沒有任何捕捉?SSL 錯誤的選項,我曾經不信邪找了很久。

controller = WebViewController()..setJavaScriptMode(JavaScriptMode.unrestricted)..setBackgroundColor(const Color(0x00000000))..setNavigationDelegate(NavigationDelegate(onProgress: (int progress) {// Update loading bar.},onPageStarted: (String url) {},onPageFinished: (String url) {},onHttpError: (HttpResponseError error) {},onWebResourceError: (WebResourceError error) {},onNavigationRequest: (NavigationRequest request) {if (request.url.startsWith('https://www.youtube.com/')) {return NavigationDecision.prevent;}return NavigationDecision.navigate;},),)..loadRequest(Uri.parse('https://flutter.dev'));

通過日志發現可以取巧提醒SSL Error ,?SSL Error不會走onPageStarted,可以在這里加flag,然后在pageFinished的時候做判斷即可。

flutter_inappwebview

但是另一個webview的插件flutter_inappwebview可以捕捉 ,這個插件感覺接口更多一點。

SSL Error接口使用onReceivedServerTrustAuthRequest捕捉。

                InAppWebView(key: webViewKey,initialUrlRequest: URLRequest(url: WebUri("https://www.baidu.com/?tn=02003390_20_hao_pg")),initialSettings: settings,pullToRefreshController: pullToRefreshController,onWebViewCreated: (controller) {webViewController = controller;},onReceivedServerTrustAuthRequest: (controller, challenge) async {//解決 handshake failed問題print("onReceivedServerTrustAuthRequest $challenge");return ServerTrustAuthResponse(action: ServerTrustAuthResponseAction.PROCEED);},onLoadStart: (controller, url) {setState(() {this.url = url.toString();urlController.text = this.url;});},onPermissionRequest: (controller, request) async {return PermissionResponse(resources: request.resources,action: PermissionResponseAction.GRANT);},shouldOverrideUrlLoading:(controller, navigationAction) async {var uri = navigationAction.request.url!;return NavigationActionPolicy.ALLOW;},onLoadStop: (controller, url) async {pullToRefreshController?.endRefreshing();setState(() {this.url = url.toString();urlController.text = this.url;});},onReceivedError: (controller, request, error) {pullToRefreshController?.endRefreshing();},onProgressChanged: (controller, progress) {if (progress == 100) {pullToRefreshController?.endRefreshing();}setState(() {this.progress = progress / 100;urlController.text = url;});},onUpdateVisitedHistory: (controller, url, androidIsReload) {setState(() {this.url = url.toString();urlController.text = this.url;});},onConsoleMessage: (controller, consoleMessage) {if (kDebugMode) {print(consoleMessage);}},),

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45850.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代謝組數據分析(十五):基于python語言構建PLS-DA算法構建分類模型

介紹 本教程描述了一個具有二元分類結果的研究的典型代謝組學數據分析工作流程。主要步驟包括: 從Excel表格導入代謝物和實驗數據。基于匯總QC的數據清洗。利用主成分分析可視化來檢查數據質量。兩類單變量統計。使用偏最小二乘判別分析(PLS-DA)進行多變量分析,包括: 模型…

go語言 fmt的幾個打印區別以及打印格式

文章目錄 一、打印Print1.1 fmt.Print 和 fmt.Println1.2fmt.Printf1.3 fmt.Sprint, fmt.Sprintf, 和 fmt.Sprintln1.4 fmt.Fprint, fmt.Fprintf, 和 fmt.Fprintln 二、打印格式基本格式動詞整數類型浮點數和復數類型字符串和字節切片布爾類型指針 一、打印Print Go 語言的 fm…

字符串類中的常用方法

1 string對象的創建 靜態創建 String s1  "abc";  String s2  "abc";  動態創建 String s3  new String("abc"); String s4  new String("abc"); 2string對象的不可變性 任何一個String對象在創建之后都不能對它的…

大數據環境下的房地產數據分析與預測研究的設計與實現

1緒論 1.1研究背景及意義 隨著經濟的快速發展和城市化進程的推進,房地產市場成為了國民經濟的重要組成部分。在中國,房地產行業對經濟增長、就業創造和資本投資起到了重要的支撐作用。作為中國西南地區的重要城市,昆明的房地產市場也備受關…

云備份服務端

文件使用工具和json序列化反序列化工具 //文件和json工具類的設計實現 #ifndef __UTIL__ #define __UTIL__ #include<iostream> #include<fstream> #include<string> #include <vector> #include<sys/stat.h> #include"bundle.h" #inc…

FPGA資源容量

Kintex? 7 https://www.amd.com/zh-tw/products/adaptive-socs-and-fpgas/fpga/kintex-7.html#product-table AMD Zynq? 7000 SoC https://www.amd.com/en/products/adaptive-socs-and-fpgas/soc/zynq-7000.html#product-table AMD Zynq? UltraScale? RFSoC 第一代 AMD Z…

【每日一練】python類的構造方法以及常用的魔術方法詳細講解

在Python中&#xff0c;構造方法是一個用來初始化新創建的對象狀態的特殊方法。Python中的構造方法是__init__。此外&#xff0c;Python中的"魔術方法"是Python提供的一系列特殊方法&#xff0c;它們都以雙下劃線開頭和結尾&#xff0c;例如__init__, __str__, __rep…

Redis系列命令更新--Redis列表命令

Redis列表 1、Redis Blpop命令&#xff1a; &#xff08;1&#xff09;說明&#xff1a;Redis Blpop命令移出并獲取列表的第一個元素&#xff1b;如果列表沒有元素會阻塞列表直到等到超時或發現可彈出元素為止 &#xff08;2&#xff09;語法&#xff1a;redis 127.0.0.1:63…

mybaits-plus自定義分頁查詢

1. 引入依賴 在 pom.xml 文件中添加必要的依賴&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId&…

Git進階(十四):Windows下 git 提示 Repository not found

文章目錄 一、前言 一、前言 在Windows10下執行 git clone/pull 的時候出現Repository not found錯誤。解決方法如下&#xff1a; 打開控制面板 搜索“憑據” 選中“Windows憑據” 在“普通憑據”一欄中查看當前git服務器配置的憑據信息是否正確&#xff0c;出現以上問題的…

081、Python 關于方法重寫

所謂方法重寫&#xff0c;就是子類對父類已有的方法&#xff0c;重新編寫自己的實現版本&#xff0c;這個過程就叫做方法重寫&#xff08;override&#xff09;。 說到方法重寫&#xff0c;就不得不提多態。因為方法重寫是實現多態的一種重要方式。 所謂多態&#xff0c;就是…

Windows的包管理器Chocolatey

Chocolatey 是 Windows 平臺上的一個軟件包管理工具&#xff0c;類似于 Linux 上的 apt、yum 或者 macOS 上的 Homebrew。你可以通過命令行快速安裝、更新和卸載軟件包。 一、安裝 Chocolatey 查看是否有安裝 choco --version 2.3.0如果有顯示版本號&#xff0c;說明安裝成功…

Laravel IDE Helper:開發者的代碼導航燈塔

Laravel IDE Helper&#xff1a;開發者的代碼導航燈塔 在Laravel開發過程中&#xff0c;IDE&#xff08;集成開發環境&#xff09;的輔助工具可以極大地提高開發效率和代碼質量。Laravel IDE Helper是一個專門為此目的設計的工具&#xff0c;它為PHP IDE提供了額外的上下文信息…

提高自動化測試腳本編寫效率 5大關鍵注意事項

提高自動化測試腳本編寫效率能加速測試周期&#xff0c;減少人工錯誤&#xff0c;提升軟件質量&#xff0c;促進項目按時交付&#xff0c;增強團隊生產力和項目成功率。而自動化測試腳本編寫效率低下&#xff0c;往往會導致測試周期延長&#xff0c;增加項目成本&#xff0c;延…

Python項目部署到Linux生產環境(uwsgi+python+flask+nginx服務器)

1.安裝python 我這里是3.9.5版本 安裝依賴&#xff1a; yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y 根據自己的需要下載對應的python版本&#xff1a; cd local wget https://www.python.org/ftp…

git 提交遠程倉庫 方式

第一種方式&#xff1a; git init //初始化 gitgit clone https://github.com/luckygilrhpp/gitTest.git //克隆遠程倉庫代碼將要提交的文件夾復制到這個clone的遠程倉庫里面 第二種方式&#xff1a; git init git remote add origin https://github.com/lucky…

高性能存儲 SIG 月度動態:優化 xfs dax reflink 時延,獨立選型并維護 mdadm 和 ledmon

本次高性能存儲月度動態綜合了 SIG 在 5、6 兩個月的工作進展&#xff0c;包含多項特性支持&#xff0c;性能優化&#xff0c;以及 Bugfix 等。 01 SIG 整體進展 引入 xfs deferred inode inactivation&#xff0c;進一步優化 xfs dax reflink 過程中的抖動時延。 Intel 將在…

UE5.4新功能 - MotionDesign上手簡介

MotionDesign是UE中集成的運動圖形功能&#xff0c;我們在游戲中經常會見到&#xff0c;例如前方漂浮于空中的若干碎石&#xff0c;當玩家走進時碎石自動吸附合并變成一條路&#xff0c;或者一些裝飾性的物件做隨機運動等等&#xff0c;在引擎沒有集成運動圖形時&#xff0c;這…

網絡爬蟲開發:JavaScript與Python特性的小差異

JavaScript JavaScript具有以下一些主要特點&#xff1a; 動態類型&#xff1a; JavaScript是一種動態類型語言&#xff0c;變量可以存儲任意類型的數據&#xff0c;無需事先聲明變量的類型。事件驅動&#xff1a;JavaScript主要用于處理用戶在瀏覽器中的各種交互事件&#x…

group by 與 distinct去重性能

GROUP BY和DISTINCT在數據庫查詢中都可以用于去重&#xff0c;但它們的性能差異取決于多個因素&#xff0c;包括數據集的大小、數據庫的結構和索引、以及查詢的具體內容。 處理方式&#xff1a; DISTINCT&#xff1a;它會掃描整個數據集&#xff0c;然后刪除重復的記錄&#xf…