Flutter笔记:关于WebView插件的用法
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebViewExample extends StatefulWidget {
@override
_WebViewExampleState createState() => _WebViewExampleState();
}
class _WebViewExampleState extends State<WebViewExample> {
// 控制WebView
final Completer<WebViewController> _controller =
Completer<WebViewController>();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("WebView 示例"),
),
body: Builder(builder: (BuildContext context) {
return WebView(
initialUrl: 'https://flutter.dev',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
onPageFinished: (String url) {
print('页面加载完成: $url');
// 在控制台输出页面加载完成的信息
},
);
}),
floatingActionButton: FloatingActionButton(
onPressed: () async {
if (_controller.isCompleted) {
// 调用WebView的goBack方法,模拟Android的物理返回键功能
final WebViewController controller = _controller.future;
bool canGoBack = await controller.canGoBack();
if (canGoBack) {
controller.goBack();
} else {
Scaffold.of(context).showSnackBar(
SnackBar(content: Text("无法返回上一页面")),
);
}
}
},
child: Icon(Icons.arrow_back),
),
);
}
}
这段代码展示了如何在Flutter应用中嵌入一个WebView,并处理返回上一页的逻辑。它使用了WebView
控件,并通过onWebViewCreated
回调获取WebViewController
,以便可以在FloatingActionButton
的onPressed
方法中调用goBack
方法。同时,它还展示了如何使用Completer
来处理异步操作,以及如何在页面加载完成后进行打印输出。
评论已关闭