Flutter移动电商实战 --(9)移动商城数据请求实战
1、URL接口管理文件建立
第一步需要在建立一个URL的管理文件,因为课程的接口会一直进行变化,所以单独拿出来会非常方便变化接口。当然工作中的URL管理也是需要这样配置的,以为我们会不断的切换好几个服务器,组内服务器,测试服务器,内测服务器,公测上线服务器。
所以说一定要单独把这个文件配置出来,这也算是一个开发经验之谈吧。
在/lib/config文件夹下,建立一个service_url.dart文件,然后写入如下代码:
1 2 3 4 5 | #此端口针对于正版用户开放,可自行fiddle获取。 const serviceUrl= 'xxxxxx' ; const servicePath={ 'homePageContext' : serviceUrl+ 'wxmini/homePageContent' , // 商家首页信息 }; |
2、接口读取文件和方法的建立
URL的配置管理文件建立好了,接下来需要建立一个数据接口读取的文件,以后所有跟后台请求数据接口的方法,都会放到这个文件里。
有小伙伴会问了,为什么不耦合在UI页面里?这样看起来更直观。其实如果公司人少,耦合在页面里是可以的,而且效率会更高。但是大公司一个项目会有很多人参与,有时候对接后台接口的是专门一个人或者几个人,那这时候把文件单独出来,效率就更高。
那我们尽力贴合大公司的开放流程,所以把这个文件也单独拿出来,便于以后扩展。 新建一个service文件夹,然后建立一个service_method.dart文件。
首先我们引入三个要使用的包和上边写的一个文件文件,代码如下:
1 2 3 4 | import "package:dio/dio.dart" ; import 'dart:async' ; import 'dart:io' ; import '../config/service_url.dart' ; |
然后编写一个getHomePageContent方法,方法返回一个Future对象。具体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import "package:dio/dio.dart" ; import 'dart:async' ; import 'dart:io' ; import '../config/service_url.dart' ; Future getHomePageContent() async{ try { print( '开始获取首页数据...............' ); Response response; Dio dio = new Dio(); dio.options.contentType=ContentType.parse( "application/x-www-form-urlencoded" ); var formData = { 'lon' : '115.02932' , 'lat' : '35.76189' }; response = await dio.post(servicePath[ 'homePageContext' ],data:formData); if (response.statusCode==200){ return response.data; } else { throw Exception( '后端接口出现异常,请检测代码和服务器情况.........' ); } } catch (e){ return print( 'ERROR:======>${e}' ); } } |
这个就是我们于后端对接的接口,一般在公司需要一个既会前端有懂后端的人来作,这也是为什么好多公司招聘前端时,需要你懂一个后端语言的主要原因(小公司既作前端又作后端的忽略)。 这个文件完成,就可以回答home_page.dart,来获取数据了。
3、home_page.dart 获取首页数据
删除学基础知识的所有代码,在home_page.dart里编写真正的项目代码。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import 'package:flutter/material.dart' ; import '../service/service_method.dart' ; class HomePage extends StatefulWidget { _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { String homePageContent= '正在获取数据' ; @override void initState() { getHomePageContent().then((val){ setState(() { homePageContent=val.toString(); }); }); super .initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text( '百姓生活+' ), ), body:SingleChildScrollView( child: Text(homePageContent) , ) ); } } |
写完后,就可以使用flutter run进行测试了。如果能读取远程数据,说明我们编写成功。
本节总结
- 和后端接口对接的一些实战技巧,这些技巧可以大大增加项目的灵活性和减少维护成本。
- 真实项目接口数据的获取,为我们的项目提供后端数据支持。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2018-07-29 react-native flex 布局 详解
2017-07-29 react-native 项目实战 -- 新闻客户端(1) -- 初始化项目结构