日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

正確在Flutter中添加webview實現詳解_Android

作者:顧安 ? 更新時間: 2023-01-02 編程語言

前言

為什么要在flutter中引入webview?這不是廢話么,當然是為了加載一個網頁,這不是移動端最基本的需求么,哈哈!說的真不錯,接下來我要是告訴你我的用法,你可能要大吃一驚。我的用處很簡單,那就是在webview中再加載一個flutter編譯成web的項目。有沒有嚇到你。別怕,我這么做的原因很簡單,就是為了熱更新??赡茉趂lutter中實現熱更新的方法有很多,但我敢說我這么做就是最好的熱更新方式。當我內容發生變更是時候,我不需要繼續去審核,只需要在服務器中,更新內容,我的熱更新就實現了!是不是聽著很動心,那就趕緊學起來吧。

安裝

在Flutter應用開發中,由于官方并沒有提供類似Webview的網頁加載組件,所以如果項目中涉及網頁加載就需要使用第三方插件庫。網上第三方插件庫很多,我不推薦,自行百度搜索比較,用法基本雷同,webview_flutter是Flutter官方開發和維護的網頁加載插件庫。所以今天我講講它的使用方法

  • 在pubspec.yaml文件中添加依賴腳本(并運行隱式flutter pub get)
dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2
  webview_flutter: ^3.0.4
  • 使用
import 'package:flutter/material.dart';
import 'dart:io';
import 'package:webview_flutter/webview_flutter.dart';
class WebviewApp extends StatefulWidget {
  const WebviewApp({Key? key}) : super(key: key);
  @override
  State<WebviewApp> createState() => _WebviewAppState();
}
class _WebviewAppState extends State<WebviewApp> {
  @override
  void initState() {
    super.initState();
    if (Platform.isAndroid) WebView.platform = AndroidWebView();
  }
  @override
  Widget build(BuildContext context) {
    return const WebView(
      initialUrl: 'https://www.baidu.com',
      javascriptMode: JavascriptMode.unrestricted,
    );
  }
}

好了,這樣我們就成功引入了webview,并在webview中加載了百度首頁。你高興的去運行項目,結果卻傻眼了,終端一片紅,好了,我來說說爆紅的解決方案。

運行項目遇到的問題

One or more plugins require a higher Android SDK version.

  • 解決方案:找到 項目根目錄\android\app\build.gradle,修改如下配置:
android {
  compileSdkVersion 32
}

Error: uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library

  • 解決方案:找到 項目根目錄\android\app\build.gradle,修改如下配置:
defaultConfig {
    applicationId "com.example.flutter_jsbridge_js"
    minSdkVersion 20
    targetSdkVersion 30
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}

net:ERR_CLEARTEXT_NOT_PERMITTED

這時候運行項目已經已經不會報錯了,但是webview卻顯示一串神奇代碼:

net:ERR_CLEARTEXT_NOT_PERMITTED,這是因為從 Android 9(API 級別 28)開始,明文支持默認處于禁用狀態。

  • 解決方案:

創建文件:/xml/network_security_config.xml

目錄路徑:“項目根目錄/android/app/main/res”

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">api.example.com(to be adjusted)</domain>
    </domain-config>
</network-security-config>
  • 對AndroidManifest.xml文件做修改:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config"
        ...>
        ...
    </application>
</manifest>

這時候再去運行項目,就可以正常運行了,畫面顯示正常,如果你還需要遇到其他問題,可以留言一起解決。

原文鏈接:https://juejin.cn/post/7172543739544469511

欄目分類
最近更新