当前位置:首页 » 《休闲阅读》 » 正文

Flutter&鸿蒙next 中如何实现 WebView【跳、显、适、反】等一些基础问题

26 人参与  2024年11月14日 16:41  分类 : 《休闲阅读》  评论

点击全文阅读


✅近期推荐:求职神器

https://bbs.csdn.net/topics/619384540


?欢迎大家订阅系列专栏:flutter_鸿蒙next
?淼学派语录:只有不断的否认自己和肯定自己,才能走出弯曲不平的泥泞路,因为平坦的大路,太tm无趣了!

目录

写在前面

1. 添加依赖

2. 配置平台权限

3. 创建 WebView 页面

4. 从 Flutter 项目跳转到 WebView 页面

5. 适配不同机型

6. 从 WebView 返回携带参数

7. 测试与调试

写在最后


写在前面

在 Flutter 中集成 WebView 是一种常见需求,可以用于展示网页或进行在线操作。以下是如何在 Flutter 项目中实现 WebView,适配不同机型,并处理页面间参数传递的详细步骤。

1. 添加依赖

首先,在 pubspec.yaml 中添加 webview_flutter 插件:

dependencies:  flutter:    sdk: flutter  webview_flutter: ^latest_version

然后,运行 flutter pub get 安装依赖。

2. 配置平台权限

鸿蒙nextOS:鸿蒙应用中设置并使用网络权限。可以在 

module.json5

 文件中声明网络权限。

{  "permissions": [    "ohos.permission.INTERNET"  ]}

Android: 在 AndroidManifest.xml 中,添加网络权限:

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

iOS: 在 Info.plist 中,添加以下配置以允许访问网络:

<key>NSAppTransportSecurity</key><dict>  <key>NSAllowsArbitraryLoads</key>  <true/></dict>
3. 创建 WebView 页面

在你的 Flutter 项目中创建一个 WebView 页面。例如:

import 'package:flutter/material.dart';import 'package:webview_flutter/webview_flutter.dart';class WebViewPage extends StatefulWidget {  final String url;  WebViewPage({required this.url});  @override  _WebViewPageState createState() => _WebViewPageState();}class _WebViewPageState extends State<WebViewPage> {  late WebViewController _controller;  bool _isLoading = true;  @override  Widget build(BuildContext context) {    return Scaffold(      appBar: AppBar(        title: Text('WebView Example'),      ),      body: Stack(        children: [          WebView(            initialUrl: widget.url,            javascriptMode: JavascriptMode.unrestricted,            onWebViewCreated: (WebViewController webViewController) {              _controller = webViewController;            },            onPageFinished: (String url) {              setState(() {                _isLoading = false;              });            },          ),          if (_isLoading)            Center(child: CircularProgressIndicator()),        ],      ),    );  }}
4. 从 Flutter 项目跳转到 WebView 页面

在 Flutter 的主页面或其他地方,可以通过 Navigator 跳转到 WebView 页面:

Navigator.push(  context,  MaterialPageRoute(    builder: (context) => WebViewPage(url: 'https://flutter.dev'),  ),);
5. 适配不同机型

为了确保 WebView 在不同机型上的适配,使用 MediaQuery 获取屏幕尺寸并设置 WebView 的高度和宽度:

final screenWidth = MediaQuery.of(context).size.width;final screenHeight = MediaQuery.of(context).size.height;WebView(  initialUrl: widget.url,  javascriptMode: JavascriptMode.unrestricted,  // 这里可以根据需要调整高度和宽度);
6. 从 WebView 返回携带参数

要从 WebView 返回到 Flutter 页面并携带参数,可以在 WebView 中使用 JavaScript 与 Flutter 进行交互。可以通过 evaluateJavascript 传递数据:

// 在 WebView 中调用final result = await _controller.evaluateJavascript("someFunction()");Navigator.pop(context, result);

在 Flutter 中接收参数:

final result = await Navigator.push(  context,  MaterialPageRoute(    builder: (context) => WebViewPage(url: 'https://your-url.com'),  ),);if (result != null) {  // 处理返回的参数  print(result);}
7. 测试与调试

在不同设备上进行测试,确保 WebView 的显示效果和功能正常。使用 Flutter 的热重载功能可以快速查看更改。

写在最后

通过上述步骤,你可以在 Flutter 项目中有效实现 WebView,适配不同机型,并实现页面间的数据传递。这样的实现不仅丰富了应用的功能,也提升了用户体验。通过调试和优化,确保 WebView 的性能和稳定性。


点击全文阅读


本文链接:http://zhangshiyu.com/post/186116.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1