如何在用户导航到Flutter WebView中的特定URL时显示快捷栏

以及如何在Webview中添加按钮以在Webview内的页面之间导航

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Web view'),
      ),
      body: WebViewWidget(
        controller:   WebViewController()
      ..enableZoom(false)
      ..setNavigationDelegate(NavigationDelegate(
        onNavigationRequest: (request) {
          if (request.url.startsWith(widget.returnUrl)) {
            print("Hello");
            return NavigationDecision.prevent;
          }
          return NavigationDecision.navigate;
        },
      ))
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..loadRequest(
        Uri.parse('https://google.com/'),
      )
      )
    );
  }
}


 

推荐答案

解决方案:

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Web view'),
       leading: IconButton(
        onPressed: () {
          Navigator.of(context).pop();
        },
        icon: Icon(
          Icons.arrow_back,
          color: Theme.of(context).primaryColorDark,
        )),
      ),
      body: WebViewWidget(
      controller: WebViewController()
        ..enableZoom(false)
        ..setNavigationDelegate(NavigationDelegate(
          onNavigationRequest: (request) {
            if (request.url ==
                "https://docs.flutter.dev/get-started/install") {
              ScaffoldMessenger.of(context)
                  .showSnackBar(SnackBar(content: Text("Hello")));
              return NavigationDecision.prevent;
            }

            return NavigationDecision.navigate;
          },
        ))
        ..setJavaScriptMode(JavaScriptMode.unrestricted)
        ..loadRequest(
          Uri.parse('https://flutter.dev/'),
        ))
    );
  }
}

Result : enter image description here

Flutter相关问答推荐

flutter:如何将字体大小设置得更大(更大)

Android元数据为1.9.0,预期版本为1.7.1,如何解决flutter应用程序构建失败问题?

如何更改默认应用程序启动器/启动屏幕

未处理异常:字符串类型不是值类型子类型的子类型'

使用自定义控制器将项插入到ListView中时行为不正确

如何在Flutter 中不从getX库中初始化GetxController中的变量

IsScrollable为True时如何删除Flutter 选项卡栏左侧填充

如何将assets资源 实体类型转换为文件类型?

如何翻转这种剪刀设计

从Firestore流式传输单个文档还是整个集合更好?

dotenv:未处理的异常:FileNotFoundError的实例

处理 flutter/dart 模型中的空值

如何给按钮的边框半径?

Flutter:在 pubspec.yaml 中找不到assets资源

Riverpod 注册多少个 providers

ListView 后台可见

如何删除图像边框半径与其父容器边框半径之间的空白

无效的 depfile: C:\xxx\xxx\Flutter\project_name\.dart_tool\flutter_build\df4b308df1ee4bce22c56c71751554d1\kernel_snapshot.d 无效

如何在 flutter 中过滤 DateTime(intl)?

将容器扩展到安全区域 - Flutter