当前位置: 首页 > article >正文

Flutter 嵌套H5 传参数

你可以通过在加载 H5 页面时,将 token 作为 URL 参数拼接,或者通过 WebView 的 JavaScript 通信功能(如 runJavaScript 或 addJavaScriptChannel)传递 token。常用方式如下:

方式一:URL 拼接参数

假设你的 token 是 myToken,可以这样:

// filepath: [home.dart](http://_vscodecontentref_/0)
class HomePage extends StatelessWidget {final String token;const HomePage({super.key, required this.token});@overrideWidget build(BuildContext context) {final url = 'https://www.baidu.com?token=$token';return Scaffold(appBar: AppBar(title: const Text('首页')),body: SafeArea(child: WebViewWidget(controller: WebViewController()..setJavaScriptMode(JavaScriptMode.unrestricted)..loadRequest(Uri.parse(url)),),),);}
}

方式二:通过 JavaScript 注入

如果不想暴露在 URL,可以在页面加载完成后注入 token:

// filepath: [home.dart](http://_vscodecontentref_/1)
class HomePage extends StatelessWidget {final String token;const HomePage({super.key, required this.token});@overrideWidget build(BuildContext context) {final controller = WebViewController()..setJavaScriptMode(JavaScriptMode.unrestricted)..loadRequest(Uri.parse('https://www.baidu.com'))..setNavigationDelegate(NavigationDelegate(onPageFinished: (url) {controller.runJavaScript("window.setToken && window.setToken('$token');");},),);return Scaffold(appBar: AppBar(title: const Text('首页')),body: SafeArea(child: WebViewWidget(controller: controller),),);}
}

这种方式需要 H5 页面实现 window.setToken 方法来接收 token。

你可以根据实际需求选择合适的方式。这种方式需要 H5 页面实现 window.setToken 方法来接收 token。

你可以根据实际需求选择合适的方式。

http://www.lryc.cn/news/2396991.html

相关文章:

  • 什么是线程上下文切换?
  • Jvm 元空间大小分配原则
  • 相机--相机标定
  • MongoDB(七) - MongoDB副本集安装与配置
  • 131. 分割回文串-两种回溯思路
  • [Java恶补day13] 53. 最大子数组和
  • 摩尔投票算法原理实现一文剖析
  • springboot项目下面的单元测试注入的RedisConnectionFactory类redisConnectionFactory值为什么为空呢?
  • MyBatis操作数据库(2)
  • C++面向对象(二)
  • 【C语言入门级教学】冒泡排序和指针数组
  • shell脚本中常用的命令
  • Nuxt3部署
  • 网络攻防技术一:绪论
  • 【人工智能】deepseek七篇论文阅读笔记大纲
  • unix/linux source 命令,在当前的 Shell 会话中读取并执行指定文件中的命令
  • [leetcode] 二分算法
  • imgsz参数设置
  • 【算法】分支限界
  • 使用 C/C++ 和 OpenCV 调用摄像头
  • 历史数据分析——广州港
  • 数据库管理与高可用-MySQL全量,增量备份与恢复
  • 从gitee仓库中恢复IDEA项目某一版本
  • 用dayjs解析时间戳,我被提了bug
  • [git每日一句]Changes not staged for commit
  • 架构师面试题整理
  • 类和对象:实现日期类
  • 基于springboot的运动员健康管理系统
  • 华为云Flexus+DeepSeek征文 | 初探华为云ModelArts Studio:部署DeepSeek-V3/R1商用服务的详细步骤
  • 下载即转化的商业密码:解析华为应用商店CPD广告的智能投放逻辑