x5_webview
तेनेंट X5 कर्नेल का वेबव्यू फ्लटर प्लगइन, वेबव्यू ब्राउज़िंग अनुभव में सुधार, केवल एंड्रॉइड प्लेटफॉर्म के लिए समर्थित।
टेंसेंट x5 इंजन पर आधारित वेबव्यू फ्लटर प्लगइन, सरलीकृत एकीकरण, एक लाइन कोड से वीडियो प्लेबैक खोलें, अभी केवल Android के लिए समर्थित है।
{"sdk":"flutter"}{"sdk":"flutter"}यह अंग्रेज़ी मूल स्नैपशॉट है। नवीनतम सामग्री GitHub पर देखें।
dependencies:
x5_webview: ^x.x.x //最新版本见上方
//请求权限
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内核加载失败");
X5Sdk.openWebActivity("https://www.baidu.com",title: "web页面");
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);
},
),
);
var body = await _controller.evaluateJavascript("document.body.innerHTML");
X5WebView(
...
javascriptChannels: JavascriptChannels(
["X5Web", "Toast"], (name, data) {
switch (name) {
...
}
}))
X5Web.postMessage("XXX")
Toast.postMessage("YYY")
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
二维码