一个完整的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.0
  json_model: ^1.0.0

dev_dependencies:
  json_serializable: ^6.2.0
  build_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';

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python终于可以在线编程了!

优势 在线编程,轻量级,无需安装Python环境。 在线编程优势: 无需安装和配置环境: 在线编程平台不需要用户在本地安装任何软件或配置开发环境。这对初学者和那些希望快速上手进行编程的人非常有利。跨平台兼容性: 这些平台可以在任何具有互联网…

教程:在 Kubernetes 集群上部署 WordPress 网站

WordPress 是专为每个人设计的开源软件,强调创建网站、博客或应用程序的可访问性、性能、安全性和易用性。WordPress 是一个基于 PHP 的内容管理系统(CMS),使用 MySQL 作为数据存储,目前很多网站、电商独立站、个人博客…

构建基于LLM的高效知识库问答系统:MaxKB一站式开源解决方案探析

随着人工智能技术的飞速发展,尤其是大型语言模型(LLMs)的广泛应用,知识管理与交互进入了新的纪元。今天,我们将深入探讨一个创新的开源项目——MaxKB,这是一个集成了最新技术、旨在提供一站式解决方案的知识库问答系统。MaxKB以其开箱即用、高度可定制性以及对多种主流大…

Linux-引导过程与服务控制

目录 一、Linux操作系统引导过程 1、引导过程总览 2、引导过程详解 2.1、开机自检(BIOS) 2.2、 MBR引导 2.3、GRUB菜单 2.4、加载内核(kernel) 2.5、init进程初始化 3、系统初始化进程 3.1、Systemd单元类型 3.2、运行级别所对应的 Systemd 目…

参加六西格玛绿带培训是投资未来,还是花冤枉钱?

是否值得花费资金参加六西格玛绿带培训,取决于多个因素。 从积极的方面来看,参加六西格玛绿带培训具有以下潜在价值: 1. 提升专业技能:使您掌握一套系统的问题解决方法和流程改进工具,有助于在工作中更高效地解决复杂…

学会python——在excel中写入数据(python实例十三)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3 .想Excel中写入数据 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的…

超越规模的冒险之旅:引导人工智能价值对齐

在茫茫技术之林中,人工智能凭借大模型占据了重要地位。人们已经不再局限于人机对弈和AI识图,开始探索那些能够模仿人类思考的机器。无论是日常聊天、文本写作,还是[在完美的提示词引导下创作出惊艳的诗歌],我们不得不承认AI工具已…

Linux基础 - 使用 ssh 服务管理远程主机(window linux vscode)

目录 零. 简介 一. 打开linux shh 二. window连接linux 三. linux连接linux 四. VSCode远程 零. 简介 SSH(Secure Shell)服务是一种网络协议,主要用于在不安全的网络环境中为计算机之间的通信提供安全的加密连接。 SSH 服务具有以下重要…

Linux系统查询磁盘空间大小(df、du)

df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息, 命令格式:df -hl 显示格式为: Filesystem(文件系统) Size(容量) Used(已用) Avail(可用) Use%(已用%) Mounted on(挂载点) 命令使用详细介绍 …

《数据勒索防范手册(1.0版)》

当前,数据勒索攻击已成为全球最严重的数据安全威胁之一攻击方式呈现 APT 化、平台化、多重化、AI驱动化等发展趋势:据统计,近年来针对制造业、公共事业、卫生保健、电力、交通、能源等领域的勒索攻击显著增加。随着云计算、边缘计算等技术的不断发展&…

文华财经盘立方博易大师主图指标公式大全源码均线

文华财经盘立方博易大师主图指标公式大全源码均线: N:3; EMA25:EMA(C,25),COLORRED,LINETHICK2; EMA70:EMA(C,70),COLORGREEN,LINETHICK2; EMA450:EMA(C,450),COLORYELLOW,LINETHICK2; CONDA1:EMA25>EMA70&&C>HV(H,6)&&C>EMA450&…

LSH算法:高效相似性搜索的原理与Python实现II

局部敏感哈希(LSH)是一种高效的近似相似性搜索技术,广泛应用于需要处理大规模数据集的场景。在当今数据驱动的世界中,高效的相似性搜索算法对于维持业务运营至关重要,它们是许多顶尖公司技术堆栈的核心。 相似性搜索面…

2024平价蓝牙耳机推荐哪款?百元左右平价蓝牙耳机推荐

在2024的无线耳机市场中,蓝牙耳机已经成为了主流。无论是对于音乐爱好者还是普通消费者,选择一款音质出色、舒适度高且功能齐全的蓝牙耳机还是很重要的。一款好的蓝牙耳机不仅戴在耳朵上很舒服,而且音质还没有任何的杂音,但现在的…

FPGA学习笔记(6)——硬件调试与网表添加探针

对信号进行分析,除了使用内置的ILA IP核,还可以在网表中添加探针。 本节采用之前配置的LED灯闪烁代码,对原始工程进行修改。 如果是新建工程,需要现将代码进行综合Synthesis,然后再进行接下来的操作。 1、点击Open S…

Android 根证书管理与证书验证

大部分的安卓应用都免不了与后端服务器进行通信。在通信过程中,主要面临两方面的风险:1、中间人攻击。当通信使用 HTTP 等明文协议,通信内容可被嗅探甚至篡改。2、通信内容被攻击者分析。使用加密的协议,虽然避免了中间人攻击&…

PFA铲子聚四氟乙烯物料特氟龙铲粉料铲耐酸碱无污染塑料

PFA铲子:又称四氟铲子、聚四氟乙烯物料铲、特氟龙铲子; 常用尺寸型号 全长x宽x高(mm)165x57x31mm,一体成型,产品坚固,可以直接与食品接触。常用于制药厂,实验室等转移物料,铲取药品化学物品等,可以直接接触…

LangChain4j之HelloWorld

什么是LangChain4j 它是Java版本的LangChain,随着大模型的不断发展,如何在程序中更好的利用大模型的能力来提高编程效率是一种趋势,LangChain是这么自己介绍自己的: LangChain gives developers a framework to construct LLM‑p…

【Redis一】Redis配置与优化

目录 一.关系型数据库与非关系型数据库 1.关系型数据库 2.非关系型数据库 3.二者区别 4.非关系型数据库产生背景 5.NoSQL与SQL数据记录对比 关系型数据库 非关系型数据库 二.Redis相关概述 1.简介 2.五大数据类型 3.优缺点 3.1.优点 3.2.缺点 4.使用场景 5.采用…

阿里巴巴向国际用户开放人工智能模型平台ModelScope(魔搭社区)

阿里巴巴对 Hugging Face 和 Amazon Bedrock 的回应包含 5,000 多个中国专业模型,以及 1,500 个工具包和数据集 阿里云已将其人工智能模型存储库ModelScope(魔搭社区)的访问权限扩展至全球英语用户,意在吸引更多国际企业和开发者…

床旁交互,全视通打造以患者为中心的智慧病房

随着我国医疗建设的发展,医疗服务体系的不断建立健全,新形势下人们的医疗需求发生变化,医疗服务理念正逐步从传统的“以疾病为中心”向“以患者为中心”转变。 基于医院临床实际应用场景,在兼具实用性的前提下,建设了床…