Flutter WebView的三種類型 打開方式

由于在國內flutter應該還不是很廣泛了您觉,我在找這三種打開方式的時候費了九牛二虎之力了吉懊,各種百度各種谷歌,然后github鼻疮,也只能找到某一類型的打開方式怯伊,所以耗費了好長時間了,所以寫這篇文章的目的是幫助一寫有需要的人節(jié)省一點時間了判沟,有的時候感覺時間耗費在這些問題上感覺不值上了耿芹,從iOS轉到flutter開發(fā),用的android studio開發(fā)了挪哄,估計是剛用吧吧秕,感覺遇到的問題千奇百怪了,比起Xcode不好用中燥,咱也不趕說了寇甸,畢竟咱才用了一段時間.

1:在pubspec.yaml添加依賴庫

dependencies:
  webview_flutter: ^0.3.8
  flutter_html: ^0.9.6

2:ios中在ios/Runner/Info.plist中添加

<key>io.flutter.embedded_views_preview</key>
<string>YES</string>*

3:android中需要添加網(wǎng)絡權限(圖1,沒有則添加)

<uses-permission android:name="android.permission.INTERNET" />
圖1

如果上面步驟完成

1:打開本地HTML

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:flutter/services.dart';
import 'dart:convert';

class LocalWebViewController extends StatelessWidget {

  WebViewController _webViewController;
  String filePath = "data/user_protocol.html";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("本地html"),
      ),
      body: Container(
        child: WebView(
          initialUrl: "",
          javascriptMode: JavascriptMode.unrestricted,
          onWebViewCreated: ((WebViewController vc){
            _webViewController = vc;
            _loadlocalData();
          }),
        ),
      ),
    );
  }
  _loadlocalData() async {
    String fileHtmlContents = await rootBundle.loadString(filePath);
    _webViewController.loadUrl(Uri.dataFromString(fileHtmlContents,
        mimeType: 'text/html', encoding: Encoding.getByName('utf-8'))
        .toString());
  }
}

2:打開URL連接

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:flutter/services.dart';
import 'package:flutter/cupertino.dart';

class URLWebViewController extends StatelessWidget {

  CupertinoActivityIndicator _indicator;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("web url"),
      ),
      body: Container(
        child: WebView(
          initialUrl: "https://juejin.im/user/5bd66f1ce51d457a7e4fa484",
          javascriptMode: JavascriptMode.unrestricted,
          onPageFinished: (url){
            print(url);
          },
          onWebViewCreated: (vc){

          },
        ),
      ),
    );
  }
}

3:打開HTML

import 'package:flutter/material.dart';
import 'package:flutter_html/flutter_html.dart';
import 'package:dio/dio.dart';

class HTMLWebViewController extends StatefulWidget {
  @override
  _HTMLWebViewControllerState createState() => _HTMLWebViewControllerState();
}

class _HTMLWebViewControllerState extends State<HTMLWebViewController> {

  String content;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _loadData();
  }

  @override
  Widget build(BuildContext context) {

    if(content == null) {
      return Scaffold(
        appBar: AppBar(
          title: Text("加載HTML"),
        ),
        body: Container(),
      );
    }

    return Scaffold(
      appBar: AppBar(
        title: Text("加載HTML"),
      ),
      body: SingleChildScrollView(
        scrollDirection: Axis.vertical,
        reverse: false,
        padding: EdgeInsets.all(0),
        child: Html(data: content),
      ),
    );
  }


  _loadData() async {
    Map<String, dynamic> params = {"id": "2202"};
    String url = "http://47.110.124.138:8081/stock/api/newsdetail/";

    Response response;
    response = await Dio().get(url, queryParameters: params);
    setState(() {
      content = response.data["data"]["content"];
    });
  }
}

在運行的安卓環(huán)境時候遇到一個錯誤

NDK is missing a "platforms" directory.

解決辦法:谷歌了一下說是沒有安裝什么ndk(mac 環(huán)境下)

1:找到如圖畫黑色小圈的地方點擊

image

按照如圖步驟執(zhí)行疗涉,等待安裝成功就可以了

image
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末拿霉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子咱扣,更是在濱河造成了極大的恐慌绽淘,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闹伪,死亡現(xiàn)場離奇詭異沪铭,居然都是意外死亡壮池,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門杀怠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椰憋,“玉大人,你說我怎么就攤上這事赔退〕纫溃” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵硕旗,是天一觀的道長窗骑。 經常有香客問我,道長漆枚,這世上最難降的妖魔是什么创译? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮墙基,結果婚禮上软族,老公的妹妹穿的比我還像新娘。我一直安慰自己碘橘,他們只是感情好互订,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痘拆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪氮墨。 梳的紋絲不亂的頭發(fā)上纺蛆,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音规揪,去河邊找鬼桥氏。 笑死,一個胖子當著我的面吹牛猛铅,可吹牛的內容都是我干的字支。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼奸忽,長吁一口氣:“原來是場噩夢啊……” “哼堕伪!你這毒婦竟也來了?” 一聲冷哼從身側響起栗菜,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤欠雌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后疙筹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體富俄,經...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡禁炒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了霍比。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幕袱。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悠瞬,靈堂內的尸體忽然破棺而出凹蜂,到底是詐尸還是另有隱情,我是刑警寧澤阁危,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布玛痊,位于F島的核電站,受9級特大地震影響狂打,放射性物質發(fā)生泄漏擂煞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一趴乡、第九天 我趴在偏房一處隱蔽的房頂上張望对省。 院中可真熱鬧,春花似錦晾捏、人聲如沸蒿涎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽劳秋。三九已至,卻和暖如春胖齐,著一層夾襖步出監(jiān)牢的瞬間玻淑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工呀伙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留补履,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓剿另,卻偏偏與公主長得像箫锤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子雨女,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容