热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flutter请求数据转model

这次我们说一下,Flutter网络请求返回的数据如何转modelFlutter的model和安卓、iOS完全不一样,他的生成比较复杂,没

这次我们说一下,Flutter网络请求返回的数据如何转model

Flutter的model和安卓、iOS完全不一样,他的生成比较复杂,没有iOS、安卓那么灵活和方便

Flutter生成model文件首先需要去一个网站

https://caijinglong.github.io/json2dart/index.html

1、打开这个网站后根据版本选择版本,第一个黄框目前选择V1.x.x

2、第二个黄框根据是我们想要起名的model类名称(首字母必须大写),但是我们要使用红色框中的黑色框的名称,看到这里大家应该都看明白了,我们黄框的内容最好不要带有下划线,因为黑色框中的内容自动进行专为小写并加下划线。

3、就是复制粘贴了,把我们借口请求返回 所有数据全部复制到左边的输入框中。而右边的输入款中会自动生成model内容

4、我要就要粘贴黑色框中的类名去Flutter中创建model了,创建完model后我们要把右侧输入框中的内容复制到model中。到此model基本创建完了。

5、第四步完成以后程序会报错,因为model生成后此model还需要一个.g.dart文件,这个文件我们不需要任何其他操作,自需要在编译器的控制台中敲一下下面的命令行既可以

命令行:

flutter packages run build_runner build

如果这个不行,我就需要使用下面的命令行

flutter packages pub run build_runner build --delete-conflicting-outputs

到此model基本就都完事了,其实Flutter的一个model实际是两个类.dart和.g.dart文件

下面给大家看个例子:

首先是network_time_data.dart

import 'package:json_annotation/json_annotation.dart';part 'network_time_data.g.dart';@JsonSerializable()
class NetworkTimeData extends Object {@JsonKey(name: 'code')String code;@JsonKey(name: 'data')Data data;NetworkTimeData(this.code,this.data,);factory NetworkTimeData.fromJson(Map srcJson) => _$NetworkTimeDataFromJson(srcJson);Map toJson() => _$NetworkTimeDataToJson(this);}@JsonSerializable()
class Data extends Object {@JsonKey(name: 'time')int time;Data(this.time,);factory Data.fromJson(Map srcJson) => _$DataFromJson(srcJson);Map toJson() => _$DataToJson(this);}

接下来是network_time_data.g.dart

// GENERATED CODE - DO NOT MODIFY BY HANDpart of 'network_time_data.dart';// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************NetworkTimeData _$NetworkTimeDataFromJson(Map json) {return NetworkTimeData(json['code'] as String,json['data'] == null? null: Data.fromJson(json['data'] as Map));
}Map _$NetworkTimeDataToJson(NetworkTimeData instance) =>{'code': instance.code, 'data': instance.data};Data _$DataFromJson(Map json) {return Data(json['time'] as int);
}Map _$DataToJson(Data instance) =>{'time': instance.time};

到这里Flutter中model的就完事了。

接下来是使用,哪里调用对应借口哪里创建这个model

首先是引用

import 'package:shotel/data/network_time_data.dart' as network_time_data;
//as后面是给这个类起一个别名,可以更方便的操作

下面是创建对象

//network_time_data 就是上面as后面起的别名,.NetworkTimeData是此类的第一个方法,new 后面的.NetworkTimeData(此处为NetworkTimeData里面的内容类型初始化)
network_time_data.NetworkTimeData networkTimeData =new network_time_data.NetworkTimeData("", new network_time_data.Data(0));

到这里model对象初始化成功,接下来就如何调用。

//fromJson(data),是提供的方法,可以直接使用,data是网络请求返回的数据,返回的就数据model
networkTimeData = new network_time_data.NetworkTimeData.fromJson(data);

剩下的我们就可调用这个model里面的数据,networkTimeData.某个属性即可

例如:

networkTimeData.data.time.toString();


推荐阅读
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
author-avatar
佩人永雪3
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有