flutter webview 代码实现白屏检测
时间: 2023-07-30 21:05:53 浏览: 303
实现 WebView 白屏检测可以通过监听 WebView 加载状态来进行判断。具体实现方法如下:
1. 在初始化 WebView 的时候,设置一个加载状态的标识位:
```dart
bool _isLoading = true;
WebView(
initialUrl: _url,
onPageStarted: (String url) {
setState(() {
_isLoading = true;
});
},
onPageFinished: (String url) {
setState(() {
_isLoading = false;
});
},
)
```
2. 在页面加载完成后,判断 WebView 是否出现白屏:
```dart
bool _isBlankPage(WebView webview) {
return _isLoading && webview.controller?.currentUrl == null;
}
```
3. 如果出现白屏,可以进行一些处理,比如重新加载页面或者提示用户网络不稳定等。
完整代码示例:
```dart
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebViewPage extends StatefulWidget {
final String url;
const WebViewPage({Key key, this.url}) : super(key: key);
@override
_WebViewPageState createState() => _WebViewPageState();
}
class _WebViewPageState extends State<WebViewPage> {
bool _isLoading = true;
WebViewController _controller;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.url),
),
body: WebView(
initialUrl: widget.url,
onPageStarted: (String url) {
setState(() {
_isLoading = true;
});
},
onPageFinished: (String url) {
setState(() {
_isLoading = false;
});
},
onWebViewCreated: (WebViewController controller) {
_controller = controller;
},
),
);
}
bool _isBlankPage(WebViewController controller) {
return _isLoading && controller?.currentUrl == null;
}
void _reload() {
_controller?.reload();
}
}
```
阅读全文