三、Flutter网络加载H5页面

本文介绍了如何在Flutter应用中集成webview_flutter插件,包括在pubspec.yaml中添加依赖,iOS和Android的配置步骤,以及使用WebView加载H5页面的流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录
一、集成webview_flutter
二、配置
三、WebView
四、flutter run

一、集成webview_flutter
pubspec.yaml 中 添加webview_flutter: ^0.3.9+1,并同步 packages get。
在相应的 .dart 文件中添加引用 import ‘package:webview_flutter/webview_flutter.dart’。

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
  webview_flutter: ^0.3.9+1

二、配置
1、iOS配置
需要在Info.plist中添加io.flutter.embedded_views_preview。

<key>io.flutter.embedded_views_preview</key>
<string>YES</string>

2、Android配置
需要在AndroidManifest.xml中添加网络权限。

<uses-permission android:name="android.permission.INTERNET" />

三、WebView

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
 
### 如何在 Flutter 应用程序中嵌入 HTML5 网页 为了实现这一目标,可以利用 `webview_flutter` 插件来加载外部 URL 或本地 HTML 文件。对于更复杂的交互需求,则可采用 `flutter_inappwebview` 插件。 #### 使用 webview_flutter 加载网页 安装依赖: ```yaml dependencies: flutter: sdk: flutter webview_flutter: ^4.0.0 ``` 创建 WebView 页面: ```dart import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; class WebPage extends StatefulWidget { final String url; const WebPage({Key? key, required this.url}) : super(key: key); @override State<WebPage> createState() => _WebPageState(); } class _WebPageState extends State<WebPage> { late final WebViewController controller; @override void initState() { super.initState(); // #only works on Android if (WebView.platform == null && defaultTargetPlatform == TargetPlatform.android) { WebView.platform = SurfaceAndroidWebView(); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('Web Page')), body: WebViewWidget(controller: controller), ); } @override void didChangeDependencies() async{ super.didChangeDependencies(); controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..loadRequest(Uri.parse(widget.url)); } } ``` 此代码片段展示了如何通过 `webview_flutter` 来展示指定URL的内容[^1]。 #### 利用 flutter_inappwebview 实现高级功能 当需要更多控制权时,比如监听页面事件、执行 JavaScript 脚本等操作,推荐使用 `flutter_inappwebview` 。其提供了更为丰富的 API 接口满足开发者的各种需求。 添加 pubspec.yaml 中的依赖项: ```yaml dependencies: flutter: sdk: flutter flutter_inappwebview: ^5.3.2+3 ``` 编写相应 Dart 逻辑: ```dart import 'package:flutter/material.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; class AdvancedWebPage extends StatefulWidget { final String url; const AdvancedWebPage({Key? key, required this.url}) : super(key: key); @override State<AdvancedWebPage> createState() => _AdvancedWebPageState(); } class _AdvancedWebPageState extends State<AdvancedWebPage> { InAppWebViewController? webView; @override Widget build(BuildContext context){ return Scaffold( appBar: AppBar(title:Text("In App Browser")), body: Column(children:[ Expanded(child:InAppWebView( initialUrlRequest: URLRequest(url: Uri.parse(widget.url)), onWebViewCreated:(controller){ webView=controller; }, onLoadStart:(controller,url){ print("Started loading $url"); }, onLoadStop:(controller,url){ print("Finished loading $url"); }), ), ], ) ); } } ``` 上述例子说明了怎样借助 `flutter_inappwebview` 完成 H5 的集成工作,并且能够获取到更多的回调信息以便进一步处理业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值