搜尋套件、儲存庫與 APP 分類

套件詳情v0.4.0

x5_webview

騰訊X5內核的Webview Flutter外掛程式,提升WebView瀏覽體驗,僅支援Android平台。

Android
近 30 天下載
75
喜歡數
19
Pub 分數
145

安裝套件

flutter pub add x5_webview

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

x5_webview 是一個 Flutter 插件,整合了騰訊的 X5 WebKit 核心,以提升 Android 上 WebView 的效能與瀏覽體驗。它提供更快的渲染速度、更好的 JavaScript 執行,以及對現代網頁標準的增強相容性。專為 Android 設計,該插件利用 X5 核心的優化技術,實現更流暢的網頁內容載入與更低的記憶體使用。此插件非常適合需要強大內建網頁瀏覽功能的應用程式。

適用情境

  • 應用內網頁瀏覽
  • 混合應用開發
  • 網頁內容嵌入
  • 離線網頁存取
  • 效能關鍵的網頁檢視

主要特色

  • 騰訊X5內核整合
  • 改進的渲染效能
  • 增強的 JavaScript 支援
  • 僅限 Android 的平台支援
  • 優化記憶體使用

適合對象

  • 專注於 Android 的 Flutter 應用
  • 需要快速網頁渲染的應用
  • 尋求 X5 核心優勢的開發者
  • 混合移動應用
  • 高效能 WebView 要求

使用建議

  • 僅限 Android 平台
  • 需要 X5 核心特定設定
  • 由於內嵌了核心,可能導致應用體積更大
  • 依賴騰訊X5 SDK的更新
  • 不相容 iOS 或其他平台

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

x5_webview pub package

  • 一个基于腾讯x5引擎的webview的flutter插件,暂时只支持android使用
  • 提示:之前内嵌webview出现的一系列问题得到解决,请更新到最新版试用,谢谢支持。

x5内核介绍

  • x5内核,腾讯为改善移动端web体验的一种内核架构。加载更快,更省流量,视频播放优化,文件助手等等

快速集成

pub package

pub地址

  • pubspec.yaml文件添加
dependencies:
  x5_webview: ^x.x.x //最新版本见上方
  • 初始化x5。(安卓6.0+需在init之前请求动态权限,可以使用permission_handler,详情见example/lib/main.dart)
//请求权限
Map<Permission, PermissionStatus> statuses = await [
      Permission.phone,
      Permission.storage,
    ].request();
//判断权限
if (!(statuses[Permission.phone].isGranted &&
statuses[Permission.storage].isGranted)) {
    print("权限被拒绝");
    return;
}

var isOk = await X5Sdk.init();
print(isOk ? "X5内核成功加载" : "X5内核加载失败");
  • 如果你只是想要简单的展示web页面,可使用以下代码直接打开一个webActivity,性能更佳(推荐使用,视频播放也可以这个api)
X5Sdk.openWebActivity("https://www.baidu.com",title: "web页面");

使用内嵌webview

return Scaffold(
      appBar: AppBar(
        title: Text("X5WebView示例"),
      ),
      body: defaultTargetPlatform == TargetPlatform.android
          ? X5WebView(
              url: "http://debugtbs.qq.com",
              javaScriptEnabled: true,
              header: {"TestHeader": "测试"},
              userAgentString: "my_ua",
              //Url拦截,传null不会拦截会自动跳转
              onUrlLoading: (willLoadUrl) {
                _controller.loadUrl(willLoadUrl);
              }
              onWebViewCreated: (control) {
                _controller = control;
              },
              onPageFinished: () async {
                var url = await _controller.currentUrl();
                print(url);
                var body = await _controller
                    .evaluateJavascript('document.body.innerHTML');
                print(body);
              },
            )
          :
          //可替换为其他已实现ios webview,此处使用webview_flutter
          WebView(
              initialUrl: "https://www.baidu.com",
              javascriptMode: JavascriptMode.unrestricted,
              onWebViewCreated: (control) {
                _otherController = control;
                var body = _otherController
                    .evaluateJavascript('document.body.innerHTML');
                print(body);
              },
            ),
    );

内嵌webview js与flutter互调

flutter调用js
var body = await _controller.evaluateJavascript("document.body.innerHTML");
js调用flutter
  • flutter代码
     X5WebView(
        ...
        javascriptChannels: JavascriptChannels(
            ["X5Web", "Toast"], (name, data) {
          switch (name) {
            ...
          }
        }))
  • js代码
X5Web.postMessage("XXX")
Toast.postMessage("YYY")

打开本地html文件(使用assets文件,内嵌webview同理)

var fileS = await rootBundle.loadString("assets/index.html");
var url = Uri.dataFromString(fileS,
                          mimeType: 'text/html',
                          encoding: Encoding.getByName('utf-8'))
                      .toString();
X5Sdk.openWebActivity(url, title: "本地html示例");

注意事项

  • minSdkVersion 19以上

  • 该插件暂时只支持Android手机,IOS会使用无效。ios可使用webview_flutter或其他已实现IOS WKWebView插件

  • 一般手机安装了QQ,微信,QQ浏览器等软件,手机里自动会有X5内核,如果没有X5内核会在wifi下自动下载,X5内核没有加载成功会自动使用系统内核官网说明。详细配置可用手机打开以下链接查看X5内核的详情

    http://debugtbs.qq.com
    
  • 请使用真机测试,模拟器可能不能正常显示

  • 如果测试正常加载,打包后不能加载,可以尝试使用android studio打开android目录直接打包apk。或者使用以下命令行打包

flutter build apk --target-platform android-arm --no-shrink

并增加混淆配置(详见example)

-dontwarn dalvik.**
-dontwarn com.tencent.smtt.**

-keep class com.tencent.smtt.** {
    *;
}

-keep class com.tencent.tbs.** {
    *;
}
  • android9.0版本webview联不了网在manifest添加

    <application
        ...
        android:usesCleartextTraffic="true">
    </application>
    
  • android7.0读写文件需要在manifest的application内添加(xml文件已在插件内,无需自己创建)

          <!--        不使用androidx 请用android:name="android.support.v4.content.FileProvider"-->    
        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/x5webview_file_paths" />
        </provider>  
    
  • X5Sdk.openWebActivity actionbar颜色自定义

    //1.
    implementation "androidx.appcompat:appcompat:1.1.0"
    
    //2.
      <style name="AppTheme" parent="ThemeOverlay.AppCompat.Dark">
          <!-- Customize your theme here. -->
          <item name="colorPrimary">#2196F3</item>
          <item name="colorPrimaryDark">#1976D2</item>
          <item name="colorAccent">#FF4081</item>
          <item name="windowNoTitle">false</item>
          <item name="windowActionBar">true</item>
      </style>
    
    //3.
    <application
          ...
          android:theme="@style/AppTheme">
    
    
  • 有比较急的问题可以加我QQ:793710663

示例程序下载

apk下载

二维码

所屬分類

原始碼儲存庫

使用此套件的專案

暫無相關資料。