flutter 中使用 WebView加載H5頁(yè)面異常net:ERR_CLEARTEXT_NOT_PERMITTED

最近有個(gè)flutter項(xiàng)目中根據(jù)搜索結(jié)果跳轉(zhuǎn)到相應(yīng)的H5頁(yè)面發(fā)現(xiàn)老是報(bào)錯(cuò)裕膀,曾現(xiàn)在閑暇拉出來(lái)解決哈

先來(lái)看一個(gè)搜索功能的測(cè)試


image

image

已進(jìn)入詳情頁(yè)面就提示錯(cuò)誤,尷尬了柑营。

只有去檢測(cè)代碼了撒

Search.dart


    SearchItem item = searchModel.data[position];
    print(item.url);
    return GestureDetector(
      onTap: () {
        Navigator.push(
            context,
            MaterialPageRoute(
                builder: (context) => WebView(
                      url: item.url,
                      title: '詳情',
                    )));
      },
      

檢測(cè)該處并無(wú)問(wèn)題,于是繼續(xù)向上查找,找到了Search_model.dart


    class SearchModel{
      String keyword;
      final List<SearchItem> data;
      SearchModel({this.data});
      factory SearchModel.fromJson(Map<String,dynamic>json){
        var dataJson = json['data'] as List;
        List<SearchItem> data = dataJson.map((i)=>SearchItem.fromJson(i)).toList();
        return SearchModel(data:data);
      }
    }

確認(rèn)該處也沒(méi)問(wèn)題,那么問(wèn)題可能是json格式化類(lèi)SearchItem

class SearchItem


    class SearchItem{
      final String word;  //xx酒店
      final String type;  //hotel
      final String price ;  //實(shí)時(shí)計(jì)價(jià)
      final String star ;  //豪華型
      final String zonename ; //虹橋
      final String districtname ; //上海
      final String url ;
    
    
      SearchItem({this.word, this.type, this.price, this.star, this.zonename,
        this.districtname, this.url});
    
      factory SearchItem.fromJson(Map<String,dynamic>json){
        return SearchItem(
            word: json['word'],
            type: json['type'],
            price: json['price'],
            star: json['star'],
            zonename: json['zonename'],
            districtname:json['districtname'],
            url:json['url']
        );
      }
    
      Map<String, dynamic> toJson(){
        Map<String,dynamic> data = new Map<String,dynamic>();
        data['icon'] = this.word;
        data['title'] = this.type;
        data['price'] = this.price;
        data['star'] = this.star;
        data['zonename'] = this.zonename;
        data['districtname'] = this.districtname;
        data['url'] = this.url;
    
        return data;
      }
    }
    

打眼看去是否也沒(méi)什么問(wèn)題呀愕秫,那為是么無(wú)法進(jìn)入詳情頁(yè)面呢,經(jīng)過(guò)再次閱讀代碼發(fā)現(xiàn)toJson方法好像并無(wú)用處(這個(gè)好像是上次測(cè)試
Text(object)渲染對(duì)象焰络,需要進(jìn)行序列化時(shí)留下的)

于是果斷干掉戴甩,再測(cè)試(當(dāng)初斷定是這個(gè)引起的因?yàn)槲覄h除這個(gè)方法測(cè)試過(guò)一次OK了)

但是事實(shí)并非想象的那么簡(jiǎn)單(gradle.propertiesbuild.gradledependencies都改了一遍--抓狂),再次測(cè)試依然一樣報(bào)錯(cuò)

最后一次次找舔琅,才發(fā)現(xiàn)實(shí)從Android 9.0(API級(jí)別28)開(kāi)始等恐,默認(rèn)情況下禁用明文支持。因此http的url均無(wú)法在webview中加載

解決方法:在AndroidManifest.xmlapplaction節(jié)點(diǎn)中添加android:usesCleartextTraffic="true" 即可(害我找了半天)

如:


    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="flutter_test"
        android:usesCleartextTraffic="true"
        android:icon="@mipmap/ic_launcher">
        <!-- ... another configure -->
    </application>
    

另外如果是ios 則在 info.plist中增加


 <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    

再測(cè)試哈


image

image

總算OK了备蚓,特此記錄课蔬,避免再入坑

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市郊尝,隨后出現(xiàn)的幾起案子二跋,更是在濱河造成了極大的恐慌,老刑警劉巖流昏,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扎即,死亡現(xiàn)場(chǎng)離奇詭異吞获,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)谚鄙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)各拷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人闷营,你說(shuō)我怎么就攤上這事烤黍。” “怎么了傻盟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵速蕊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我娘赴,道長(zhǎng)规哲,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任诽表,我火速辦了婚禮唉锌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘关顷。我一直安慰自己糊秆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布议双。 她就那樣靜靜地躺著痘番,像睡著了一般。 火紅的嫁衣襯著肌膚如雪平痰。 梳的紋絲不亂的頭發(fā)上汞舱,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音宗雇,去河邊找鬼昂芜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赔蒲,可吹牛的內(nèi)容都是我干的泌神。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舞虱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼欢际!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起矾兜,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤损趋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后椅寺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體浑槽,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒋失,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桐玻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篙挽。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖畸冲,靈堂內(nèi)的尸體忽然破棺而出嫉髓,到底是詐尸還是另有隱情,我是刑警寧澤邑闲,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站梧油,受9級(jí)特大地震影響苫耸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜儡陨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一褪子、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骗村,春花似錦嫌褪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至琅拌,卻和暖如春缨伊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背进宝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工刻坊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人党晋。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓谭胚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親未玻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子灾而,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容