Web 平台如何从 Flutter 中的 WebView 获取当前 URL?

问题描述 投票:0回答:1

我正在开发一个 Flutter Web 应用程序,我需要从 WebView 检索当前 URL。具体来说,我想获取在任何给定时间 WebView 中显示的页面的 URL。

Flutter 的 Web 平台有办法实现这一点吗?我将不胜感激任何有关如何从 WebView 检索当前 URL 的见解或建议,包括任何可能有用的方法或技术。

我尝试了几个包,例如 webview_flutter_web:

^0.2.3+4 and easy_web_view: ^2.1.0,
它们似乎都不符合我的要求。

flutter webview
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;
© www.soinside.com 2019 - 2024. All rights reserved.