Flutter 已然成为炙手可热前端框架。若问跨平台到底有多香,自然是要多香有多香。今天我就分享这些天研究Flutter http连接和json格式转换的内容,小弟对Flutter也是小白一名,如有错误请多加指正。

源码下载地址

先来看看要完成的任务:调用https://test.apigj.com/apgetuserinfo 获取用户信息

{
"userid":
}
 
{
"msg": "success",
"code": ,
"userinfo": {
"username": "Batman",
"gender": ,
"birthday":
}
}

1. 处理Json和Object互转

Flutter 官方给出两种建议:手动序列化和自动生成代码的方式

手动序列化适合较小的项目,具有简单灵活的优势,但也容易出现因输入错误造成无法解析的小问题,我这里就不展开了

自动生成代码适合相对较大的项目,同时要求写class定义数据结构:

首先,修改pubspec.yaml文件

pubspec.yaml
 

添加json_annotation, build_runner和json_serializable包到指定位置

然后,完成class定义数据结构:

1个请求和2个返回

req_base.dart
 

res_common.dart 为了方便扩展所有的返回class都会继承这个基本的返回class
 

res_ap_get_user_info.dart 这个文件里同时包含了user_info的定义

class定义好后,这里还有些错误,原因是还有些代码是需要Flutter自动生成的

在命令行中输入flutter pub run build_runner build

成功以后会生成几下.g.dart文件角,错误也就消失了

3个.g.dart文件

这些文件里是对应class的解析和编码的方法

res_ap_get_user_info.g.dart里面包含ResApGetUserInfo和UserInfo的解析和编码方法

这样Json处理内容就这些,已经可以非常方便的在对象和json之间互转了

2. Https请求和返回

Http请求为了防止线程阻塞,多数情况下要使用多线程实现,Flutter的HttpClient已经在底层做了线程处理,所以要使用async, await或者Future进行同步线程,这里是我Http请求的静态方法

没有找到办法传递类型并生成对象,所以最后仅转成Map输出

还有就是在Flutter Widget中调用请求的方法

请求并显示数据

最终的效果

总体来说Flutter还是比较容易上手的,但要深入的话也可以实现多平台的Flutter库,基本上可以使用Flutter实现一套代码跨平台,还不开始研究么?

本示例实体class结构定义通过Api管家自动生成

Flutter中通过https post Json接收Json的更多相关文章

  1. Flask中向前端传递或者接收Json文件的方法

    1. 利用flask的request.form.get()方法 这一中方法主要利用flask的request.form.get方法,获得前端发送给后台的json文件 Python 端代码: @app. ...

  2. Java发送Post请求,参数JSON,接收JSON

    /** * 发送post请求 * @param url 路径 * @param jsonObject 参数(json类型) * @param encoding 编码格式 * @return * @th ...

  3. Flutter 中 JSON 解析

    本文介绍一下Flutter中如何进行json数据的解析.在移动端开发中,请求服务端返回json数据并解析是一个很常见的使用场景.Android原生开发中,有GsonFormat这样的神器,一键生成Ja ...

  4. ThinkPHP中使用ajax接收json数据的方法

    本文实例讲述了ThinkPHP中使用ajax接收json数据的方法.分享给大家供大家参考.具体分析如下: 这里通过ThinkPHP+jquery实现ajax,扩展了下,写了个查询,前台代码如下: 首先 ...

  5. [转]php中 curl模拟post发送json并接收json

    本文转自:https://blog.csdn.net/pangchengyong0724/article/details/52103962 本地模拟请求服务器数据,请求数据格式为json,服务器返回数 ...

  6. iOS key value coding kvc在接收json数据与 model封装中的使用

    iOS key value coding  kvc在接收json数据与 model封装中的使用 使用 kvc 能够极大的简化代码工作,及以后的接口维护工作: 1:先创建MovieModel类.h和 . ...

  7. Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法

    之前写过一篇记录文章,写的是将一个比较复杂的数据结构在前台组合起来后传递到后台. 当时并不太了解@RequestBody,也并没有使用js提供的JSON.stringify()方法 所有都是自己写的, ...

  8. SpringMVC过程中@RequestBody接收Json的问题 总是报415

    在SpringMVC中用@RequestBody接收Json的问题,总是报415,经过一翻查找 前台js的post: var postdata = '{"title":" ...

  9. php中 curl模拟post发送json并接收json(转)

    本地模拟请求服务器数据,请求数据格式为json,服务器返回数据也是json. 由于需求特殊性, 如同步客户端的批量数据至云端, 提交至服务器的数据可能是多维数组数据了.  这时需要将此数据以一定的数据 ...

随机推荐

  1. gdisk转fdisk

    分区测试的时候发现之前用gdisk分区之后,就无法用fdisk进行分区了,哪怕格式化了也不行,通过fdisk 查看硬盘,发现硬盘都变成了GPT分区,无法通过fdisk进行分区操作,所以要通过parte ...

  2. MyBatis结果集一对多映射

    MyBatis结果集一对多映射 需求:重画二维码配置类,根据sizeCode将查询出来的imageCode分组. DROP TABLE IF EXISTS `size_code`; CREATE TA ...

  3. python 打飞机项目 (实战一)

    第一步定义 main 函数: # -*- coding=utf-8 -*- import pygame,time from Plane import Plane from pygame.locals ...

  4. SpringCloud 脚手架

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...

  5. 推荐一种非常好的新版DSP库源码移植方式,含V7,V6和V5的IAR以及MDK5的AC5和AC6版本

    说明: 1.新版CMSIS V5.6里面的DSP库比以前的版本人性化了好多. 2.本帖为大家分享一种源码的添加方式,之前一直是用的库方便,不方便查看源码部分. 3.DSP教程可以还看第1版的,在我们的 ...

  6. .net core 3.0web_razor page项目_使用中间件接受大文件上传报错_httpRequest.Form threw an exception of type Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException_Request body too large

    前言:在web项目的.net framework时文件上传时,自己常用一般处理程序接受上传文件,上传文件的大小限制是可以项目的webconfig里配置.   到core项目使用一般处理程序变成了中间件 ...

  7. Laravel6实现第三方 微信登录

    目前很多的网站中都会存在很多的交互功能,从而降低用户的操作难度,特此带来微信的第三方登录的项目实战功能开发.对于本实例中的开发内容,就不在使用原生的内容,而是直接使用别人写好的封装的类库. 1. 安装 ...

  8. HTML入门(html基本文本标签+快捷键讲解以及基本html组成解释)

    id 标签 功能  1  <hr /> 水平分割线  2 <br /> 强制让文本换行  3 <p>段落</p> 段落标签(自带换行效果)  4 < ...

  9. idea中git分支、合并与使用

    1.分支的新建与合并使用场景介绍 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流. 你将经历如下步骤: 开发某个网站. 为实现某个新的需求.问题(#53问题),创建一 ...

  10. vmstat/top/iostat/route/sar 常用命令

    [vmstat]Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.是对系统的整体情况进行统计,不足之处是无法对某个进程进行深 ...