新闻详情

新闻详情

首页 / 资讯中心 / 详情

Flet WebView 请求方法 RequestMethod 详解:用 load_request 控制 GET 与 POST 加载

发布时间:2026/11/4 18:53:50来源:尧图网络
Flet WebView 请求方法 RequestMethod 详解:用 load_request 控制 GET 与 POST 加载
前端跨平台桌面应用移动开发【免费下载链接】fletBuild realtime web, mobile and desktop apps in Python only. No frontend experience required.项目地址https://gitcode.com/gh_mirrors/fl/flet点击查看免费下载RequestMethod是 Flet 官方扩展包flet-webview中定义的 HTTP 请求方法枚举用于在使用WebView.load_request()以编程方式发起页面加载时明确指定底层 HTTP 请求使用 GET 还是 POST 方法。本文以 requestmethod.md 对应的类文档为骨架结合 flet-webview 的 Python 与 Flutter 双层源码讲清该枚举的定义、用法、平台限制与底层映射使读者能够在 iOS、Android、macOS 应用中通过 Flet 代码精确控制 WebView 的页面加载请求。RequestMethodflet-webview 中的 HTTP 方法枚举RequestMethod是一个标准的 Pythonenum.Enum定义于 types.py其类文档原文为Defines the supported HTTP methods for loading a page in aWebView定义在WebView中加载页面所支持的 HTTP 方法。class RequestMethod(Enum): Defines the supported HTTP methods for loading a page in a WebView. GET get HTTP GET method. POST post HTTP POST method.当前版本仅包含两个成员枚举值value为小写字符串与 WebView 底层所需的请求方法标识保持一致成员枚举值说明RequestMethod.GETgetHTTP GET 方法加载页面时的默认值RequestMethod.POSTpostHTTP POST 方法适用于需要提交表单体request body的页面加载该枚举被flet-webview包作为公共 API 导出可从包顶层直接导入使用from flet_webview import RequestMethod其导出声明可见于 __init__.py与WebView控件、JavaScriptMode、LogLevelSeverity以及三个事件数据类一同列于__all__中。load_requestRequestMethod 的唯一消费方RequestMethod在实际代码中只被WebView.load_request()一个方法消费该方法定义于 webview.pyasync def load_request(self, url: str, method: RequestMethod RequestMethod.GET): Makes an HTTP request and loads the response in the webview. Args: url: The URL to load. A file:// URL is loaded as a local file, the same way :meth:load_file does. method: The HTTP method to use. Ignored for file:// URLs. Note: Works only on the following platforms: iOS, Android, and macOS. self._check_mobile_or_mac_platform() await self._invoke_method( load_request, arguments{url: url, method: method} )要点如下参数url要加载的 URL。若传入file://协议地址则按本地文件方式加载等价于调用load_file()此时method参数会被忽略参数method要使用的 HTTP 方法默认值为RequestMethod.GET类型即本文主角RequestMethod返回值None方法为异步async调用时需await平台限制仅支持 iOS、Android、macOS 三个平台方法入口处首先调用_check_mobile_or_mac_platform()webview.py做运行时校验在 Web 平台或 Linux、Windows 上调用会抛出ft.FletUnsupportedPlatformException。参数如何从 Python 传到 WebViewload_request()内部通过self._invoke_method(load_request, ...)将url与method两个参数序列化后发送给 Flutter 端。method传入的是RequestMethod枚举实例序列化后即为小写字符串get或post这与 Flutter 端webview_flutter包中LoadRequestMethod.get/LoadRequestMethod.post的命名天然对应。底层映射Python 枚举如何驱动 webview_flutter在 Flutter 侧flet-webview的 Android/iOS/macOS 实现位于 webview_mobile_and_mac.dart其中load_request的 invoke 分支L197-L203如下case load_request: var url args[url]; if (url ! null) { await _load(url, parseLoadRequestMethod(args[method], LoadRequestMethod.get)!); } break;字符串到 Dart 枚举的解析由工具函数parseLoadRequestMethod完成utils/webview.dart它基于 flet 框架通用的parseEnum将get/post解析为LoadRequestMethod枚举值解析失败时回退到LoadRequestMethod.getLoadRequestMethod? parseLoadRequestMethod(String? value, [LoadRequestMethod? defaultValue]) { return parseEnum(LoadRequestMethod.values, value, defaultValue); }真正发起请求的是内部_load()方法L39-L50Futurevoid _load(String url, LoadRequestMethod method) async { var uri Uri.parse(url); if (uri.scheme file) { try { await controller.loadFile(uri.toFilePath()); return; } on UnsupportedError catch (e) { debugPrint(WebView: $url is not a valid local file path: $e); } } await controller.loadRequest(uri, method: method); }这段源码揭示了两条关键行为file://优先走loadFile源码注释明确指出file://地址必须经由WebViewController.loadFile才能获得平台本地文件访问权限——Android 端需要切换默认关闭的WebSettings.allowFileAccessiOS/macOS 端需要loadFileURL:allowingReadAccessToURL:才能让同目录下的脚本、样式、图片等资源一并可读直接对file://地址执行loadRequest在 Android 上会报net::ERR_ACCESS_DENIED。这正是 Python 端 docstring 中method 参数对file://URL 被忽略的底层原因http(s)://直接透传方法非file://的地址会原样调用controller.loadRequest(uri, method: method)即webview_flutter底层的WebViewController.loadRequest将 GET/POST 方法语义完整传递到系统 WebView。初始加载时 method 的默认处理RequestMethod不仅用于load_request()动态调用控件首次挂载加载url属性时也会解析method属性并决定初始加载方式。在initState()中L139-L142controller.setJavaScriptMode(JavaScriptMode.unrestricted).then((_) _load( widget.control.getString(url, https://flet.dev)!, parseLoadRequestMethod( widget.control.getString(method), LoadRequestMethod.get)!));可以看到默认 URL 为https://flet.dev默认方法为LoadRequestMethod.get与 Python 侧load_request的默认参数保持一致。实战示例在 Flet 应用中使用 RequestMethod安装依赖flet-webview是独立的扩展包需要单独安装参考 flet-webview/README.md# 使用 uv uv add flet-webview # 或使用 pip之后需手动将包加入 requirements.txt 或 pyproject.toml pip install flet-webview基础用法加载页面并监听生命周期事件仓库自带的官方示例位于 web_view/main.py展示了WebView的基本用法。在此基础上配合load_request即可用指定 HTTP 方法加载页面import flet as ft import flet_webview as fwv from flet_webview import RequestMethod async def load_with_method(webview: fwv.WebView): # 使用 GET 方法加载默认方法可省略 await webview.load_request(https://example.com/page, methodRequestMethod.GET) # 使用 POST 方法加载适合提交表单类页面 await webview.load_request( https://example.com/search, methodRequestMethod.POST ) def main(page: ft.Page): def on_page_started(e): page.add(ft.Text(f加载开始{e.data})) webview fwv.WebView( urlhttps://flet.dev, on_page_startedon_page_started, expandTrue, ) page.add(ft.SafeArea(expandTrue, contentwebview)) page.run_task(load_with_method, webview) if __name__ __main__: ft.run(main)注意load_request是异步方法需在async函数中await调用且仅当应用运行在 iOS、Android、macOS 上时才有效请配合page.platform判断或直接在目标平台验证。加载本地文件method 被忽略await webview.load_request(file:///path/to/local/page.html)传入file://地址时无论method参数取值如何都会被忽略WebView 会以本地文件方式加载并使其同目录资源可读。该行为与直接调用WebView.load_file()webview.py等价。平台支持与边界注意事项flet-webview的官方平台支持矩阵见 flet-webview/README.md 与 WebView 文档平台WindowsmacOSLinuxiOSAndroidWeb支持❌✅❌✅✅✅但需要区分两点控件整体可用于 macOS、iOS、Android 与 Webload_request以及大部分方法调用仅支持 iOS、Android、macOSWeb 平台虽然能显示WebView但调用load_request会触发_check_mobile_or_mac_platform()抛出的FletUnsupportedPlatformException。另外在 Android 上访问明文 HTTP 地址时系统会默认拦截并报NET::ERR_CLEARTEXT_NOT_PERMITTED错误。若确需访问非 HTTPS 页面需要在应用构建配置中开启明文流量许可例如在pyproject.toml中写入详见 WebView 文档的 Troubleshooting 章节[tool.flet.android.manifest_application] usesCleartextTraffic true与其他加载方式的关系RequestMethod服务于按需发起 HTTP 请求这一场景与WebView的其他加载入口分工明确加载方式适用场景是否支持自定义 HTTP 方法url属性构造时指定控件挂载后自动加载初始页面可间接通过method属性指定默认 GETload_request(url, method)运行时以指定方法加载http(s)://或本地文件支持即本文的RequestMethodload_file(path)加载本地 HTML 文件不适用本地文件无 HTTP 方法语义load_html(value, base_url)直接渲染 HTML 字符串不适用见 webview.py小结RequestMethod虽仅有两个枚举成员却是flet-webview中以指定 HTTP 方法加载页面这一能力的类型化入口Python 侧负责 API 语义types.py经load_request()序列化后由 Flutter 侧parseLoadRequestMethod解析utils/webview.dart最终映射到webview_flutter的WebViewController.loadRequestwebview_mobile_and_mac.dart。掌握这一调用链即可在 iOS、Android、macOS 的 Flet 应用中精确控制 WebView 的请求方法同时规避file://与明文流量等边界陷阱。赞分享前端跨平台桌面应用移动开发【免费下载链接】fletBuild realtime web, mobile and desktop apps in Python only. No frontend experience required.项目地址https://gitcode.com/gh_mirrors/fl/flet点击查看免费下载相关推荐HTTP请求方法配置Blackbox Exporter的GET/POST/PUT请求实现HTTP请求方法配置Blackbox Exporter的GET/POST/PUT请求实现 在监控Web服务时不同HTTP请求方法如GET、POST、PUT可观测性网络Cangjie-SIG/fountain请求方法RequestMethod HTTP方法Cangjie SIG/fountain请求方法RequestMethod HTTP方法 还在为HTTP请求方法的管理而烦恼fountain框架的Reque后端Web框架TripoSR 单图像3D重建实战指南3条命令从照片到网格模型TripoSR 单图像3D重建实战指南3条命令从照片到网格模型 把一张照片丢进去就能拿到可直接导入下游软件的3D网格模型——这是开源单图像3D重建项目 Tr人工智能深度学习计算机视觉媒体生成图形学创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/4 15:56:54

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/3 12:09:35

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/4 17:01:23

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/4 12:33:12

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/4 1:25:31

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/4 3:51:11

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉