flutter 插件 webview_flutter

181 阅读1分钟

简介

浏览器url 展示

安装

flutter pub add webview_flutter

引入

import 'package:webview_flutter/webview_flutter.dart';

路由 routers.dart

Map routes = {
  "/": (contxt) => const Tabs(),
  "/search": (contxt) => const SearchPage(),
  "/webviewurl": (contxt, {arguments}) => WebUrlPage(arguments: arguments),
};

按钮跳转 search.dart

void toSearch() {
    Navigator.pushNamed(context, "/webviewurl",
        arguments: {"keyword": "https://$keyword"});
  }

使用 webviewurl.dart

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

/// 使用步骤分为3步
/// 1、初始化WebViewController
/// 2、重写这个WebViewController
/// 3、使用WebViewWidget实现外部页面嵌入

class WebUrlPage extends StatefulWidget {
  final Map arguments;
  const WebUrlPage({super.key, required this.arguments});

  @override
  State<WebUrlPage> createState() => _WebUrlPageState();
}

class _WebUrlPageState extends State<WebUrlPage> {
  // 1
  late WebViewController controller;
  @override
  void initState() {
    // 2
    controller = WebViewController()
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..loadRequest(Uri.parse(widget.arguments["keyword"]));
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Flutter Simple Example')),
      body: Column(
        children: [
          // 3
          Expanded(child: WebViewWidget(controller: controller))
        ],
      ),
      floatingActionButton: ElevatedButton(
        onPressed: () async {
          var title = await controller.getTitle();
          // ignore: avoid_print
          print(title);
          // ignore: avoid_print
          print(widget.arguments);
        },
        child: const Text('获取 title'),
      ),
    );
  }
}