我正在开发一个 Flutter Web 应用程序,我需要从 WebView 检索当前 URL。具体来说,我想获取在任何给定时间 WebView 中显示的页面的 URL。
Flutter 的 Web 平台有办法实现这一点吗?我将不胜感激任何有关如何从 WebView 检索当前 URL 的见解或建议,包括任何可能有用的方法或技术。
我尝试了几个包,例如 webview_flutter_web:
^0.2.3+4 and easy_web_view: ^2.1.0,
它们似乎都不符合我的要求。
要从 Web 平台的 Flutter 中的 WebView 检索当前 URL,您可以使用
webviewx
包,它为基于 Web 的应用程序提供了更大的灵活性。
import 'package:flutter/material.dart';
import 'package:webviewx/webviewx.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: WebViewExample(),
);
}
}
class WebViewExample extends StatefulWidget {
@override
_WebViewExampleState createState() => _WebViewExampleState();
}
class _WebViewExampleState extends State<WebViewExample> {
late WebViewXController webviewController;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("WebView URL Example"),
actions: [
IconButton(
icon: const Icon(Icons.refresh),
onPressed: () async {
// Retrieve the current URL
final currentUrl = await webviewController.currentUrl;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Current URL: $currentUrl")),
);
},
),
],
),
body: WebViewX(
initialContent: 'https://flutter.dev',
initialSourceType: SourceType.url,
onWebViewCreated: (controller) {
webviewController = controller;
},
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
),
);
}
}
就这么简单
final currentUrl = await webviewController.currentUrl;