09-Flutter移动电商实战-移动商城数据请求实战

09-Flutter移动电商实战-移动商城数据请求实战

1、URL接口管理文件建立

第一步需要在建立一个URL的管理文件,因为课程的接口会一直进行变化,所以单独拿出来会非常方便变化接口。当然工作中的URL管理也是需要这样配置的,以为我们会不断的切换好几个服务器,组内服务器,测试服务器,内测服务器,公测上线服务器。

所以说一定要单独把这个文件配置出来,这也算是一个开发经验之谈吧。

在/lib/config文件夹下,建立一个service_url.dart文件,然后写入如下代码:

#此端口针对于正版用户开放,可自行fiddle获取。
const serviceUrl= 'xxxxxx';
const servicePath={'homePageContext': serviceUrl+'wxmini/homePageContent'// 商家首页信息
};

2、接口读取文件和方法的建立

URL的配置管理文件建立好了,接下来需要建立一个数据接口读取的文件,以后所有跟后台请求数据接口的方法,都会放到这个文件里。

有小伙伴会问了,为什么不耦合在UI页面里?这样看起来更直观。其实如果公司人少,耦合在页面里是可以的,而且效率会更高。但是大公司一个项目会有很多人参与,有时候对接后台接口的是专门一个人或者几个人,那这时候把文件单独出来,效率就更高。

那我们尽力贴合大公司的开放流程,所以把这个文件也单独拿出来,便于以后扩展。 新建一个service文件夹,然后建立一个service_method.dart文件。

首先我们引入三个要使用的包和上边写的一个文件文件,代码如下:

import "package:dio/dio.dart";
import 'dart:async';
import 'dart:io';
import '../config/service_url.dart';

然后编写一个getHomePageContent方法,方法返回一个Future对象。具体代码如下:

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里编写真正的项目代码。代码如下:

import 'package:flutter/material.dart';
import '../service/service_method.dart';class HomePage extends StatefulWidget {_HomePageState createState() => _HomePageState();}class _HomePageState extends State<HomePage{String homePageContent='正在获取数据';@overridevoid initState() {getHomePageContent().then((val){setState(() {homePageContent=val.toString();});});super.initState();}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('百姓生活+'),),body:SingleChildScrollView(child:  Text(homePageContent) ,));}
}

写完后,就可以使用flutter run进行测试了。如果能读取远程数据,说明我们编写成功。

本节总结

  • 和后端接口对接的一些实战技巧,这些技巧可以大大增加项目的灵活性和减少维护成本。
  • 真实项目接口数据的获取,为我们的项目提供后端数据支持。

posted @ 2019-06-15 22:34 niceyoo 阅读(...) 评论(...) 编辑 收藏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

栈和队列的区别,栈和堆的区别

栈和队列的区别&#xff1a; 栈的插入和删除操作都是在一端进行的&#xff0c;而队列的操作却是在两端进行的。 栈是先进后出&#xff0c;队列是先进先出。 栈只允许在表尾一端进行插入和删除&#xff0c;队列只允许在表尾一端进行插入&#xff0c;在表头一端进行删除。 栈和堆…

Android 串口开发,发送串口命令,读卡,反扫码,USB通讯,实现demo。——持续更新

应用场景&#xff1a;APP发送串口命令到打印机&#xff0c;打印相应数据小票 // 串口 implementation com.github.licheedev.Android-SerialPort-API:serialport:1.0.1 1、获取全部串口地址devicePath private String[] mDevices; public void getcuankou(){SerialPortFinder…

10-Flutter移动电商实战-使用FlutterSwiper制作轮播效果

10-Flutter移动电商实战-使用FlutterSwiper制作轮播效果 1、引入flutter_swiper插件 flutter最强大的siwiper, 多种布局方式&#xff0c;无限轮播&#xff0c;Android和IOS双端适配. 好牛X得介绍&#xff0c;一般敢用“最”的一般都是神级大神&#xff0c;看到这个介绍后我也是…

python中的分号

很多编程语言是以分号作为一行代码的的结束标志&#xff0c;但是在Python中不是这样的&#xff0c;而是靠缩进来识别程序结构。 Python中一行代码以分号结束&#xff0c;并不是必须的&#xff0c;准确来说是不被推荐的&#xff0c;因为加上分号就是画蛇添足的行为&#xff0c;吃…

工作271:打开弹出框调用当前页面接口

<template><div><button-dialogopen"open"ref"dialog"width"1000px"title"内容关联"ok-button-text"确认关联":destroy-on-close"true"ok"confirmAssociation"><!----><cus…

Android char数据类型乱码��解决方法

一般char类型是在一个循环当中使用的。同时会结合其他数据类型使用&#xff0c;如StringBuffer。通过stringBuffer.append(pressedKey);方法把循环的char组合成一个String。 通过打印数据可以看到当0转换为char类型时&#xff0c;会出现乱码&#xfffd;&#xfffd; 所以解决…

11-Flutter移动电商实战-首页_屏幕适配方案和制作

11-Flutter移动电商实战-首页_屏幕适配方案和制作 1、flutter_ScreenUtil插件简介 flutter_ScreenUtil屏幕适配方案&#xff0c;让你的UI在不同尺寸的屏幕上都能显示合理的布局。 插件会让你先设置一个UI稿的尺寸&#xff0c;他会根据这个尺寸&#xff0c;根据不同屏幕进行缩…

历史:古代:秦朝

秦&#xff0c;南进两广吞百越&#xff0c;北打匈奴连燕赵秦长城 焚书坑儒 扶苏蒙恬&#xff0c;胡亥赵高&#xff0c;指鹿为马 陈胜吴广起义 刘邦&#xff08;萧何&#xff09;斩白蛇起义&#xff0c;投靠项羽&#xff08;楚国人&#xff09; 刘项进关中&#xff0c;收张良&am…

Android 友盟推送开发

推送厂商集成文档&#xff1a;https://developer.umeng.com/docs/67966/detail/98589?spma311a.9588098.0.0#h1-vivo-push-5 SDK下载&#xff1a;https://developer.umeng.com/sdk/android 集成步骤 1、导入依赖 implementation com.umeng.sdk:common:1.5.3 implementation …

12-Flutter移动电商实战-首页导航区域编写

12-Flutter移动电商实战-首页导航区域编写 1、导航单元素的编写 从外部看&#xff0c;导航是一个GridView部件&#xff0c;但是每一个导航又是一个上下关系的Column。小伙伴们都知道Flutter有多层嵌套的问题&#xff0c;如果我们都写在一个组件里&#xff0c;那势必造成嵌套严…

Day3_操作记录

python基础&#xff1a; 回顾 1. 条件判断 if &#xff1a; x else&#xff1a; xx 循环 while for for i in range(5): 2. 数据类型&#xff1a; int 类型 float 小数类…

Android 全局悬浮按钮,悬浮按钮点击事件

实现效果&#xff1a; 实现方法&#xff1a; 在自定义baseActivity里面添加viwe即可。在子activity里刷新悬浮View即可 public abstract class BaseActivity extends BaseCommonActivity {LinearLayout saoli,ewmli;ImageView imageView;private QrCodeDialog mMQrCodeDialog;p…

13-Flutter移动电商实战-ADBanner组件的编写

1、AdBanner组件的编写 我们还是把这部分单独出来&#xff0c;需要说明的是&#xff0c;这个Class你也是可以完全独立成一个dart文件的。代码如下&#xff1a; 广告图片class AdBanner extends StatelessWidget { final String advertesPicture; AdBanner({Key key, this.adv…

android远程调试工具,android投屏工具

远程调试工具 说明&#xff1a;远程对方电脑需下载安装两个软件&#xff1a;Android studio 和向日葵 android投屏工具 说明&#xff1a;涉及硬件开发时&#xff0c;有的硬件没有安卓屏&#xff0c;可以使用 两个工具exe文件下载连接&#xff1a; https://download.csdn.net/…

14-Flutter移动电商实战-ADBanner组件的编写

拨打电话的功能在app里也很常见&#xff0c;比如一般的外卖app都会有这个才做。其实Flutter本身是没给我们提供拨打电话的能力的&#xff0c;那我们如何来拨打电话那? 1、编写店长电话模块 这个小伙伴们一定轻车熟路了&#xff0c;我也就不再多介绍吧。直接看代码&#xff0c;…