宠物领养

这是一个使用 Flutter 构建的宠物领养应用程序,用户可以在其中浏览和领养宠物。它包括分页列表、搜索功能和领养历史记录功能。

特点

  • 分页列表:应用程序以分页方式获取和显示宠物列表,允许用户浏览多页可领养的宠物。

  • 搜索:用户可以根据名称、年龄、性别等不同标准搜索宠物。应用程序提供一个搜索栏,用户可以在其中输入搜索查询并获得过滤后的结果。

  • 领养历史:应用程序会跟踪用户过去领养的宠物。它提供一个历史记录部分,用户可以在其中查看先前领养宠物的详细信息。

截图

架构

数据层

这一层是最低层,负责从数据库、API 等外部源检索原始数据。

领域层

这一层结合了一个或多个数据提供程序,并对数据应用“业务规则”。这一层中的每个组件都称为存储库,每个存储库通常管理一个单一的域。存储库层中的包通常应该只与数据层交互。

功能层

这一层包含所有应用程序特定的功能和用例。每个功能通常包含一些UI 和业务逻辑。功能之间通常应该是独立的,以便它们可以轻松地添加/删除而不会影响代码库的其余部分。在每个功能中,功能的 UI 状态和任何业务逻辑由 bloc 管理。Bloc 与零个或多个存储库进行交互。Bloc 对事件做出反应并发出状态,从而触发 UI 的更改。每个功能中的小部件通常应该只依赖于相应的 bloc,并根据当前状态渲染 UI。UI 可以通过事件将用户输入通知 bloc。

在对各层进行了高级概述之后,让我们开始构建我们的应用程序,从数据层开始!

数据库查询是

  • 查找限制为 n 的记录。

    final List<PetDataModel?> dataModel = await isar.petDataModels.where().limit(20).findAll();

  • 使用 ISAR 数据库进行分页。

    var offsetCount = index * perPage;

    await dataModel.where().offset(offsetCount).limit(10).findAll();

  • 搜索项目(又名宠物)

    List<PetDataModel?> dataModel = await isar.petDataModels .filter() .nameContains(searchText ?? “”) .findAll();

  • 设置模型属性

    await isar.petDataModels.filter().isAdoptedEqualTo(true).findAll();

入门

要开始此项目,请按照以下步骤操作

  1. 克隆仓库

  2. 进入项目目录

  3. 安装依赖项

  4. 运行应用

依赖项

此项目依赖于以下著名依赖项

  • flutter_bloc:状态管理库,可为管理应用程序状态提供可预测的方式。
  • isar:Flutter 超快速跨平台数据库
  • provider:状态管理库,可为管理应用程序状态提供可预测的方式。
  • get_it:这是 Dart 和 Flutter 项目的简单服务定位器,带有一些额外的附加功能,深受 Splat 的启发。它可以在 InheritedWidget 或 Provider 之外使用,用于从 UI 等访问对象。

请务必检查 pubspec.yaml 文件以了解项目中使用的这些依赖项的特定版本。

贡献

欢迎贡献!如果您发现任何问题或有改进建议,请打开一个问题或提交一个拉取请求。

许可证

[在此处添加您的许可证信息]

GitHub

查看 Github