09-Flutter鸿蒙网络请求入门:HTTP数据请求和JSON模型封装
09. Flutter鸿蒙网络请求入门HTTP数据请求和JSON模型封装网络请求是业务项目最常见的能力之一。Flutter 鸿蒙项目中普通 HTTP 请求仍然可以在 Flutter 层完成添加依赖、封装模型、写请求服务、处理加载状态和错误状态即可。添加依赖dependencies:flutter:sdk:flutterhttp:^1.2.2执行flutter pub get定义模型classUser{finalint id;finalStringname;finalStringphone;constUser({requiredthis.id,requiredthis.name,requiredthis.phone,});factoryUser.fromJson(MapString,dynamicjson){returnUser(id:json[id]asint???0,name:json[name]asString???,phone:json[phone]asString???,);}MapString,dynamictoJson(){return{id:id,name:name,phone:phone,};}}封装服务importdart:convert;importpackage:http/http.dartashttp;classApiService{ApiService({http.Client?client}):_clientclient??http.Client();finalhttp.Client_client;staticconstStringbaseUrlhttps://example.com/api;FutureListUserfetchUsers()async{finaluriUri.parse($baseUrl/users);finalresponseawait_client.get(uri);if(response.statusCode!200){throwException(请求失败${response.statusCode});}finaldatajsonDecode(response.body);if(datais!List){throwException(接口返回格式不是数组);}returndata.map((item)User.fromJson(itemasMapString,dynamic)).toList();}FutureUsercreateUser(Stringname,Stringphone)async{finaluriUri.parse($baseUrl/users);finalresponseawait_client.post(uri,headers:{Content-Type:application/json},body:jsonEncode({name:name,phone:phone}),);if(response.statusCode!200response.statusCode!201){throwException(新增失败${response.statusCode});}returnUser.fromJson(jsonDecode(response.body)asMapString,dynamic);}}页面状态classUserListPageextendsStatefulWidget{constUserListPage({super.key});overrideStateUserListPagecreateState()_UserListPageState();}class_UserListPageStateextendsStateUserListPage{lateFutureListUser_future;overridevoidinitState(){super.initState();_futureApiService().fetchUsers();}Futurevoid_reload()async{setState((){_futureApiService().fetchUsers();});}overrideWidgetbuild(BuildContextcontext){returnFutureBuilderListUser(future:_future,builder:(context,snapshot){if(snapshot.connectionStateConnectionState.waiting){returnconstCenter(child:CircularProgressIndicator());}if(snapshot.hasError){returnCenter(child:Column(mainAxisSize:MainAxisSize.min,children:[Text(加载失败${snapshot.error}),constSizedBox(height:12),FilledButton(onPressed:_reload,child:constText(重试)),],),);}finaluserssnapshot.data??[];if(users.isEmpty){returnconstCenter(child:Text(暂无数据));}returnRefreshIndicator(onRefresh:_reload,child:ListView.builder(itemCount:users.length,itemBuilder:(_,index){finaluserusers[index];returnListTile(title:Text(user.name),subtitle:Text(user.phone),);},),);},);}}排错网络问题常见排查1. 接口地址是否能在浏览器或 Postman 打开 2. 设备是否有网络权限和网络连接 3. HTTP/HTTPS 是否符合服务端要求 4. JSON 顶层结构是对象还是数组 5. statusCode 是否被正确处理 6. 页面是否处理 loading、empty、error 三种状态请求层不要直接写在页面里页面里直接写http.get能跑但项目变大后很难维护。更好的做法是页面只关心状态网络细节放到 servicelib ├─ models │ └─ user.dart ├─ services │ └─ api_service.dart └─ pages └─ user_list_page.dart这样接口地址变化、请求头变化、错误处理变化时不需要翻每个页面。调试接口返回开发阶段可以临时打印响应debugPrint(statusCode:${response.statusCode});debugPrint(body:${response.body});正式提交前不要在日志里输出敏感信息比如 token、手机号、身份证、详细地址。网络日志要能辅助排错但不能泄露用户数据。不需要翻每个页面。

相关新闻

如何在5分钟内启动Laguna-M.1-bf16模型?mlx-vlm工具超简单使用教程

如何在5分钟内启动Laguna-M.1-bf16模型?mlx-vlm工具超简单使用教程

如何在5分钟内启动Laguna-M.1-bf16模型?mlx-vlm工具超简单使用教程 【免费下载链接】Laguna-M.1-bf16 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Laguna-M.1-bf16 想要在5分钟内快速启动强大的Laguna-M.1-bf16视觉语言模型吗?…

2026/7/13 15:19:43 阅读更多 →
Wand-Enhancer终极指南:免费解锁游戏修改器专业功能

Wand-Enhancer终极指南:免费解锁游戏修改器专业功能

Wand-Enhancer终极指南:免费解锁游戏修改器专业功能 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为游戏修改器的付费墙而烦恼吗…

2026/7/13 15:17:43 阅读更多 →
雀魂AI助手Akagi终极指南:从麻将新手到高手的完整解决方案

雀魂AI助手Akagi终极指南:从麻将新手到高手的完整解决方案

雀魂AI助手Akagi终极指南:从麻将新手到高手的完整解决方案 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, A…

2026/7/13 15:15:42 阅读更多 →

最新新闻

Qwen2-1.5B_rai_1.7.1_npu_4K实战应用:10个NPU加速的文本生成场景案例

Qwen2-1.5B_rai_1.7.1_npu_4K实战应用:10个NPU加速的文本生成场景案例

Qwen2-1.5B_rai_1.7.1_npu_4K实战应用:10个NPU加速的文本生成场景案例 【免费下载链接】Qwen2-1.5B_rai_1.7.1_npu_4K 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen2-1.5B_rai_1.7.1_npu_4K Qwen2-1.5B_rai_1.7.1_npu_4K是一个专为AMD Ryzen AI N…

2026/7/13 16:21:02 阅读更多 →
【ChatGPT客服话术黄金标准】:基于127万条真实对话训练出的12类高危场景应答公式(限免领取倒计时48h)

【ChatGPT客服话术黄金标准】:基于127万条真实对话训练出的12类高危场景应答公式(限免领取倒计时48h)

更多请点击: https://codechina.net 第一章:ChatGPT客服话术优化的底层逻辑与价值边界 ChatGPT在客服场景中的话术优化并非简单替换模板,而是基于语义理解、对话状态追踪与意图-槽位联合建模的系统性工程。其底层逻辑依赖于三重耦合机制&am…

2026/7/13 16:21:02 阅读更多 →
AMD Ryzen AI NPU编程指南:基于Llama-3.2-1B_rai_1.7.1_npu_16K的AI应用开发

AMD Ryzen AI NPU编程指南:基于Llama-3.2-1B_rai_1.7.1_npu_16K的AI应用开发

AMD Ryzen AI NPU编程指南:基于Llama-3.2-1B_rai_1.7.1_npu_16K的AI应用开发 【免费下载链接】Llama-3.2-1B_rai_1.7.1_npu_16K 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Llama-3.2-1B_rai_1.7.1_npu_16K AMD Ryzen AI NPU编程为开发者提供了全新的…

2026/7/13 16:16:59 阅读更多 →
2025大模型技术演进与部署优化实践

2025大模型技术演进与部署优化实践

1. 2025年大模型技术演进全景图2025年成为大模型发展的关键分水岭,六大里程碑式研究成果重新定义了技术边界。DeepSeek-R1首次实现32B参数下的蒸馏量化部署,Qwen3系列突破多模态理解瓶颈,Kimi K2在长上下文窗口优化上取得突破性进展。这些进展…

2026/7/13 16:14:56 阅读更多 →
Qwen-2.5_1.5B_Instruct_rai_1.7.1_npu_4K模型架构深度解析:从1.5B参数到4K上下文

Qwen-2.5_1.5B_Instruct_rai_1.7.1_npu_4K模型架构深度解析:从1.5B参数到4K上下文

Qwen-2.5_1.5B_Instruct_rai_1.7.1_npu_4K模型架构深度解析:从1.5B参数到4K上下文 【免费下载链接】Qwen-2.5_1.5B_Instruct_rai_1.7.1_npu_4K 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen-2.5_1.5B_Instruct_rai_1.7.1_npu_4K Qwen-2.5_1.5B_In…

2026/7/13 16:12:54 阅读更多 →
DeepSeek-R1-Distill-Qwen-1.5B的Tokenizer配置详解:151K词汇表与特殊标记解析

DeepSeek-R1-Distill-Qwen-1.5B的Tokenizer配置详解:151K词汇表与特殊标记解析

DeepSeek-R1-Distill-Qwen-1.5B的Tokenizer配置详解:151K词汇表与特殊标记解析 【免费下载链接】DeepSeek-R1-Distill-Qwen-1.5B_rai_1.7.1_npu_4K 项目地址: https://ai.gitcode.com/hf_mirrors/amd/DeepSeek-R1-Distill-Qwen-1.5B_rai_1.7.1_npu_4K 想要充…

2026/7/13 16:08:54 阅读更多 →

日新闻

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:01:19 阅读更多 →
浦东旧模块回收哪家强?专业评测带你一探究竟

浦东旧模块回收哪家强?专业评测带你一探究竟

于科技迅猛飞速迭代的当下此刻, 旧模块的回收处置, 不但关联着资源的再度利用, 而且更牵扯到数据安全以及环保合规事宜。你是不是也正为那堆积得如同山峦般的旧模块而发愁? 是不是不清楚该怎样安全且高效地去处理它们? 别忧心烦恼, 就在今日, 我会以具备权威影响力的自媒体博…

2026/7/13 0:01:19 阅读更多 →
卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

1 研究背景与现存技术痛点(提出问题)基因工程、蛋白质组学、生物制药研发流程中,蛋白质分离纯化是决定下游实验成败的关键环节。当前实验室常规蛋白质分离纯化工艺存在三类难以标准化的技术瓶颈:传统离子交换、分子筛层析无特异性…

2026/7/13 0:05:20 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/13 4:38:36 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/13 4:38:38 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/13 4:38:40 阅读更多 →

月新闻