一个完整的Flutter应用

本文基于以下链接进行细节补充15.2 Flutter APP代码结构 | 《Flutter实战·第二版》

代码结构

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

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

工程目录如下:

在lib下创建文件夹如下:

配置json

Github账号信息

在“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 //该用户自己的私有项目数... //省略其他字段
}

API缓存策略信息

在“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

数据持久化

我们使用shared_preferences包来对登录用户的Profile信息进行持久化。

在 pubspec.yaml 配置文件中 , 导入插件包

dependencies:shared_preferences: ^2.0.7

在Dart代码中导入,即可使用

import 'package:shared_preferences/shared_preferences.dart';

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

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

相关文章

LLC开关电源开发:LLC设计参考文档(模态分析)

电源简析和全桥LLC模型分析 1.1模拟电源、开关电源和数字电源简介 1.1.1 模拟电源 模拟电源:即变压器电源,通过铁芯、线圈来实现,线圈的匝数决定了两端的电压比,铁芯的作用是传递变化磁场,(我国&#xff09…

MySQL数据库(五):事务

MySQL数据库中的事务是一种用来保证一系列操作要么全部成功,要么全部取消的机制。想象一下你去超市购物,拿了很多商品,如果中途发现没带钱包,你可以放弃这次购买,所有商品会回到原位。通过事务,可以确保数据…

dial tcp 10.96.0.1:443: connect: no route to host

1、创建Pod一直不成功,执行kubectl describe pod runtime-java-c8b465b98-47m82 查看报错 Warning FailedCreatePodSandBox 2m17s kubelet Failed to create pod sandbox: rpc error: code Unknown desc failed to setup network for…

WebHttpServletRequestResponse(完整知识点汇总)

额外知识点 Web核心 Web 全球广域网,也成为万维网(www),可通过浏览器访问的网站 JavaWeb 使用Java技术来解决相关Web互联网领域的技术栈 JavaWeb技术栈 B/S架构:Browser/Server,即浏览器/服务器 架构模式…

Vue核心指令解析:探索MVVM与数据操作之美

文章目录 前言一、Vue.js1. MVVM模式介绍2. 单页面组件介绍及案例讲解3. 插值表达式介绍及案例讲解 二、Vue常用指令详解1. 数据绑定指令v-textv-html 2. 条件渲染指令v-ifv-show 3. 列表渲染指令v-for循环数组介绍及案例讲解循环对象介绍及案例讲解 4. 事件监听指令v-on事件修…

Python-矩阵元素定位

[题目描述] 小理得到了一个 n 行 m 列的矩阵,现在他想知道第 x 行第 y 列的值是多少,请你帮助他完成这个任务。输入格式: 第一行包含两个数 n 和m ,表示这个矩阵包含 n行 m 列。从第 2 行到第 n1 行,每行输入 m 个整数…

【JS逆向百例】某点数据逆向分析,多方法详解

前言 最近收到粉丝的私信,其在逆向某个站点时遇到了些问题,在查阅资料未果后,来询问K哥,K哥一向会尽力满足粉丝的需求。网上大多数分析该站点的教程已经不再适用,本文K哥将提供 3 种解决方案,对于 webpack…

[个人感悟] MySQL应该考察哪些问题?

前言 数据存储一直是软件开发中必不可少的一环, 从早期的文件存储txt, Excel, Doc, Access, 以及关系数据库时代的MySQL,SQL Server, Oracle, DB2, 乃至最近的大数据时代f非关系型数据库:Hadoop, HBase, MongoDB. 此外还有顺序型数据库InfluxDB, 图数据库Neo4J, 分布式数据库T…

【unity小技巧】unity事件系统创建通用的对象交互的功能

文章目录 前言实现1. **InteractEvent 类**:2. **Interact 类**:3. **Player 类**:4. **Chest 类**: 工作流程说明:开单个箱子按钮触发打开很多箱子拾取物品(传参)参考完结 前言 游戏开发过程中…

vue中用JSON格式查看数据(vue-json-viewer)

vue中把string用JSON格式展示数据 vue-json-viewer使用 官网地址:https://www.npmjs.com/package/vue-json-viewer 1. 安装插件vue-json-viewer //vue2 npm install vue-json-viewer2 --save //vue3 npm install vue-json-viewer3 --save2. 引入vue-json-viewer…

Kubernetes Dashboard

Minikube 环境搭建 Kubernetes 的基本架构 Kubernetes 声明式语言 YAML YAML操作Kubernetes核心对象 CentOs搭建Kubernetes集群 Kubernetes进阶对象Deployment、DaemonSet、Service Kubernetes进阶对象Ingress、Ingress Class、Ingress Controller Kubernetes集群部署项目实践 …

本地离线模型搭建指南-中文大语言模型底座选择依据

搭建一个本地中文大语言模型(LLM)涉及多个关键步骤,从选择模型底座,到运行机器和框架,再到具体的架构实现和训练方式。以下是一个详细的指南,帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现 💬 系统登录注册 系统登录 登录界面 用户添加 💬 抗疫列表展示模块 区域信息管理 …

APP自动化测试-Appium常见操作之详讲

一、基本操作 1、点击操作 示例:element.click() 针对元素进行点击操作 2、初始化:输入中文的处理 说明:如果连接的是虚拟机(真机无需加这两个参数,加上可能会影响手工输入),在初始化配置中…

【初阶数据结构】深入解析栈:探索底层逻辑

🔥引言 本篇将深入解析栈:探索底层逻辑,理解底层是如何实现并了解该接口实现的优缺点,以便于我们在编写程序灵活地使用该数据结构。 🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 &#x1…

论坛实现随机发帖的学习

1、badboy操作,录制发帖全过程,录制结果保存,生成为.jmx格式的文件 2、在Jmeter中打开该.jmx文件,重命名,便于了解步骤 3、生成结果树,查看所以步骤是否正确 4、实现随机发帖 断言:具有唯一表…

Java面试八股之什么是分布式垃圾回收

什么是分布式垃圾回收 分布式垃圾回收(Distributed Garbage Collection, DGC)是Java中一种特殊的垃圾回收机制,主要用于处理跨Java虚拟机(JVM)的远程对象引用时的内存管理问题。在分布式系统中,当一个JVM中…

yolov10打包为exe

一、前言 本节实验将官方yolov10推理程序打包为exe运行 二、代码 首先下载官方代码至本机,并使用conda创建虚拟环境,并安装好yolov10所需库 conda create --prefix E:/pyenv/myYolo10 python3.8 pip install -r requirements.txt 下载官方模型权重 …

【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用

【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用 1、强引用(Strong Reference)2、软引用(Soft Reference)3、弱引用(Weak Reference)4、虚引用(Phantom Reference…

在线装修管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,装修队管理,用户管理,装修管理,基础数据管理,论坛管理 前台账户功能包括:系统首页,个人中心,…