一个完整的Flutter应用

15.2 Flutter APP代码结构 | 《Flutter实战·第二版》

我们先来创建一个全新的Flutter工程,命名为"github_client_app"

我们在项目根目录下分别创建imgs和fonts、jsons、l10n文件夹

工程目录如下:

在lib下创建文件夹如下:

在“jsons”目录下创建一个“user.json”文件,获取当前登录者的Github账号信息

{"login": "octocat", //用户登录名"avatar_url": "https://github.com/images/error/octocat_happy.gif", //用户头像地址"type": "User", //用户类型,可能是组织"name?": "monalisa octocat", //用户名字"company?": "GitHub", //公司"blog?": "https://github.com/blog", //博客地址"location?": "San Francisco", // 用户所处地理位置"email?": "octocat@github.com", // 邮箱"hireable?": false,"bio?": "There once was...", // 用户简介"public_repos": 2, // 公开项目数"followers": 20, //关注该用户的人数"following": 0, // 该用户关注的人数"created_at": "2008-01-14T04:33:35Z", // 账号创建时间"updated_at": "2008-01-14T04:33:35Z", // 账号信息更新时间"total_private_repos": 100, //该用户总的私有项目数(包括参与的其他组织的私有项目)"owned_private_repos": 100 //该用户自己的私有项目数... //省略其他字段
}

在“jsons”目录下创建一个“cacheConfig.json”文件缓存策略信息

{"enable":true, // 是否启用缓存"maxAge":1000, // 缓存的最长时间,单位(秒)"maxCount":100 // 最大缓存数
}

在“jsons”目录下创建一个“profile.json”文件

{"user?":"$user", //Github账号信息,结构见"user.json""token?":"", // 登录用户的token(oauth)或密码"theme":0, //主题索引"cache?":"$cacheConfig", // 缓存策略信息,结构见"cacheConfig.json""lastLogin?":"", //最近一次的注销登录的用户名"locale?":"" // APP语言信息
}

在“jsons”目录下创建一个“repo.json”文件保存项目信息

{"id": 1296269,"name": "Hello-World", //项目名称"full_name": "octocat/Hello-World", //项目完整名称"owner": "$user", // 项目拥有者,结构见"user.json""parent?":"$repo", // 如果是fork的项目,则此字段表示fork的父项目信息"private": false, // 是否私有项目"description": "This your first repo!", //项目描述"fork": false, // 该项目是否为fork的项目"language?": "JavaScript",//该项目的主要编程语言"forks_count": 9, // fork了该项目的数量"stargazers_count": 80, //该项目的star数量"size": 108, // 项目占用的存储大小"default_branch": "master", //项目的默认分支"open_issues_count": 2, //该项目当前打开的issue数量"pushed_at": "2011-01-26T19:06:43Z","created_at": "2011-01-26T19:01:12Z","updated_at": "2011-01-26T19:14:43Z","subscribers_count?": 42, //订阅(关注)该项目的人数"license?": { // 该项目的开源许可证"key": "mit","name": "MIT License","spdx_id": "MIT","url": "https://api.github.com/licenses/mit","node_id": "MDc6TGljZW5zZW1pdA=="}...//省略其他字段
}

生成Dart Model类

在pubspec.yaml配置中增加

dependencies:json_annotation: ^4.4.0json_model: ^1.0.0dev_dependencies:json_serializable: ^6.2.0build_runner: ^2.0.0

执行命令的

flutter packages get flutter packages pub run json_model

如果没有生成profile.g.dart等文件,则删除pubspec.lock文件,重新执行

flutter packages pub run json_model

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

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

相关文章

Word和Excel如何快速对齐姓名

日常工作经常遇到整理参会人员名单时,有2字姓名、3字姓名,为保证文档美观,你是否还在一个一个空格在敲空格? 今天刘小生分享如何在Word和Excel中快速对齐姓名,快来练起来吧! 1. Word姓名对齐 【第一步】…

自动化平台总结(httprunner+djangorestframework+python3+Mysql+Vue)【基础结构构思】

一、前言 把一个以前自己搭建的自动化测试平台进行了一下重构升级,记录一下过程中的一些问题和总结。 二、简介 搭建的平台语言使用的是Python3.6,未来有空可能考虑加个java版本。前端用的Vue,主体是httprunner2.XDjangorest-framework&am…

Elasticsearch:智能 RAG,获取周围分块(二)

在之前的文章 “Elasticsearch:智能 RAG,获取周围分块(一) ” 里,它介绍了如何实现智能 RAG,获取周围分块。在那个文章里有一个 notebook。为了方便在本地部署的开发者能够顺利的运行那里的 notebook。在本…

git 上拉下来的新项目web文件夹没有被idea管理,导致启动不了

让idea识别web项目,操作步骤: 1. 打开idea -- 文件 -- 项目结构; 2. 选择 模块 --- 添加 --- web -- 应用 --- 确定,就好了。 3. 文件夹中间出现个圆圈就是被识别到了。

HarmonyOS模拟器(phone-x86-api9)一直卡顿的解决方法

在DevEco Studio 3.1.1 Release版本中的Device Manager中创建本地的模拟器,创建phone-x86-api9模拟器成功,但是启动该新建的模拟器一直显示"HarmonyOS"logo图片,然后一直卡在这里,运行结果如下所示: 检查模…

记录一次递归查询导致的 java.lang.StackOverflowError: null

问题截图: 由于作者使用递归统计信息,刚开始这个接口运行得正常,但是上线运行一段时间后接口就出现了,如图的栈溢出错误。可以看出确实是堆栈溢出了,解决栈溢出目前只有两种方式: 第一种调大栈的大小&…

精华版 | 2024 Q1全球威胁报告一览

概要 Q1最热门的安全事件是XZ/liblzma后门高危漏洞。开发人员Andres Freund一次偶然情况下,发现了XZ/liblzma存在后门并对该漏洞进行报告。XZ/liblzma是一个广泛使用的开源工具,掌握该后门攻击者几乎可以访问任何运行受感染发行版的 Linux 机器。这一事…

Hadoop3:MapReduce中实现自定义排序

一、场景描述 以统计号码的流量案例为基础,进行开发。 流量统计结果 我们现在要对这个数据的总流量进行自定义排序。 二、代码实现 我们要对总流量进行排序,就是对FlowBean中的sumFlow字段进行排序。 所以,我们需要让FlowBean实现Writab…

360vr党建线上主题展立体化呈现企业的文化理念和品牌形象

在现代科技的引领下,艺术与VR虚拟现实技术相融合必将成为趋势,深圳VR公司华锐视点荣幸地推出VR艺术品虚拟展厅,为您带来前所未有的艺术观赏体验。体验者足不出户即可置身于一个充满创意与灵感的虚拟艺术空间。 我们深入了解每一位客户的需求与…

RestTemple请求GET接口403

问题描述 使用oss接口获取资源的时候,通过浏览器可以直接下载,在代码中使用RestTemplate的get方式访问的时候,出现403错误 问题排查 因为返回状态码是403,就想着是不是授权问题,因为有的接口是有防抓取规则的&…

华为联运:资源混淆导致的浮标显示异常

问题 显示正常 正常情况,华为联运包登录成功之后会显示浮标(悬浮球),拖动浮标会出现拖到此处隐藏字样,如下所示: 显示异常 而在我们的横屏游戏中,遇到拖动到此处隐藏有部分内容被遮挡了&…

Windows系统电脑远程桌面控制本地局域网内树莓派详细教程

文章目录 前言1. 树莓派安装xrdp2. 注册cpolar账号3. 安装cpolar内网穿透4. 创建隧道映射端口5. Windows远程桌面控制树莓派总结 前言 本文主要介绍如何通过cpolar内网穿透,映射3389端口,生成公网TCP端口地址,通过该公网地址来实现公网环境下…

网页基础三剑客

目录 一、网页开发技术 1.HTML 2.CSS 3.JavaScript 二、网页的结构 三、 网页的分类 1.静态网页 2.动态网页 1.jQuery 2.AJAX 3.DHTML 2.3.4 网页数据的格式 1&#xf…

使用深度强化学习预测股票:DQN 、Double DQN和Dueling Double DQN对比和代码示例

深度强化学习可以将深度学习与强化学习相结合:深度学习擅长从原始数据中学习复杂的表示,强化学习则使代理能够通过反复试验在给定环境中学习最佳动作。通过DRL,研究人员和投资者可以开发能够分析历史数据的模型,理解复杂的市场动态…

收银系统源码推荐,线下线上一体化收银系统

1.收银系统源码开发语言 核心开发语言: PHP、HTML5、Dart后台接口: PHP7.3后台管理网站: HTML5vue2.0element-uicssjs收银端【安卓/PC收银】: Dart3,框架:Flutter 3.11.0-6.0.pre.27商家小程序助手端: uniapp线上商城: uniapp 2.功能介绍 支持测试体验…

汇编程序入门指南

什么是机器语言? 机器语言就是由二进制数字构成的程序,CPU 可以直接对其解释、执行。 汇编语言、C 语言、Java、BASIC 等编程语言编写的程序,也都需要先转换成机器语言才能被执行。机器语言有时也叫作“原生代码”(Native Code&…

智慧校园导航系统:技术驱动下的校园管理与师生体验革新

随着智慧校园建设的不断推进,校园导航系统作为提升校园管理效率、优化师生出行体验的重要工具,正逐渐成为各大高校的标配。本文将重点介绍维小帮智慧校园导航系统,如何通过创新的设计和功能,解决校园导航中的种种难题,…

视频二维码怎么设置全屏播放?默认全屏效果的添加技巧

视频做成二维码如何全屏展示呢?现在很多人都会将视频生成二维码后,分享二维码给其他人来扫码查看视频内容,设置视频默认全屏播放可以带来展示更好的效果,那么横版和竖版视频扫码自动全屏播放是如何生成的呢? 视频二维…

裂变客户时代:如何打造口碑传播的良性循环?【以Notion为例】

在当今的商业环境中,客户裂变已经成为品牌增长的重要驱动力。裂变客户时代,意味着每一个满意的客户都有可能成为品牌的传播者,帮助品牌吸引更多的新客户。那么,如何在这个时代打造口碑传播的良性循环呢?Notion是怎么做…

多路输出调光无频闪36V48V60V/300W恒流舞台灯调光芯片FP7126 LED舞台帕灯/激光灯控制IC,无频闪无噪音,多路共阳,调光深度0.1%

方案背景 在舞台演出中,灯光扮演着非常重要的角色,它不仅可以烘托氛围,营造氛围,更能够为表演者增添光彩,塑造形象。在博物馆场所中,突出展品细节。根据灯光用途和适用类型,舞台灯可以细分为聚光…