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,一经查实,立即删除!

相关文章

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;看到这个介绍后我也是…

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

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

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

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

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;…

Android 捕获异常,上报异常日志,捕获奔溃日志,bugly使用实例

1、登录腾讯bugly平台创建应用 腾讯Bugly - 一种愉悦的开发方式 _android anr_android anr分析_iOS崩溃日志分析平台 2、1加载依赖 /*崩溃处理 */ implementation com.tonystark.android:defense_crash:2.0.0 //bugly implementation com.tencent.bugly:crashreport_upgrade:1.…

Android 获取天气数据

/** * 天气API * param cityname * return */ private String getUrl(String cityname){ return "http://wthrcdn.etouch.cn/weather_mini?city"cityname; } 传入城市&#xff0c;即可返回天气数据

windows下dos窗口实现持续ping显示时间保存至日志

效果图 右击新建 ping.bat 文件&#xff08;ping为文件名称&#xff0c;随便起&#xff09;&#xff0c;内容如下&#xff1a; cscript ping.vbs 127.0.0.1 -t >log.txt127.0.0.1 修改为你自己的ip地址&#xff0c;log 为记录日志的文件名 右击新建 ping.vbs 文件&#x…

AndroidStudio中Flutter打包APK

1、生成签名文件 在打包之前我们需要一个签名文件&#xff0c;证明文件的唯一性。 keytool -genkey -v -keystore F:\APP\sign.jks -keyalg RSA -keysize 2048 -validity 10000 -alias signF:\APP\sign.jks为签名问价存放目录&#xff0c;sign 为密钥名。 后面都有用&#x…