最近我又回到了Flutter 翼方块,我真的很纠结于我遇到的一些概念,我找不到任何可靠的资源来更清楚地说明这一点,除了一个13年前的帖子,有点老了.

你能帮我理解一下什么是:

  • 提供者
  • 存储库
  • 服务

以及他们之间是如何互动的?

推荐答案

这很难回答,因为这些术语在不同的背景下意味着不同的事情.根据您询问的对象和引用的设计模式,它们中的一些可能具有相同的含义.根据您引用的设计模式,术语之间的差异可能会很细微.这些术语也非常宽泛,所以你必须定义每个术语在每个上下文中的含义.

既然你一次又一次地提到了Fliw和Block这两个词,我可以假设(或许是错误的),你正在考虑flutter_bloc一揽子计划.在这种情况下,请参考official documentation的解释和术语.在本文档中,Word未提及术语服务.

为了扩大我的回答并包括术语服务,我会说,提供者和存储库可能意味着相同的事情,而存储库和服务可能意味着相同的事情.但我从来没有见过Provider 和服务在哪里可能意味着相同的事情.

数据提供程序/存储库

与数据库等进行通信并提供来自源的数据的类.这些在数据源之上添加了某种形式的抽象层.

存储库/服务

类包装一个或多个数据提供程序,或者包装一个或多个存储库(当包装器被称为服务时).可以包括其他业务逻辑和原始数据到域对象的映射.

提供者的其他含义

当涉及到沿小部件树向下提供信息时,术语提供者也用于Flutter 小部件上下文中.例如来自flutter_bloc个包装的BlocProvider个或来自provider个包装的Provider个.

摘要

无论您将事物称为提供者、存储库、服务、Apples还是香蕉,关键部分都是分离UI、业务逻辑和数据获取.

Flutter相关问答推荐

如何在列表磁贴上添加行

Dexing时出错.将Flutter 升级到3.19.0后

MobX Build_Runner问题:不生成.G文件(Flutter )

在框中保存对象列表时,类型推断无法正常工作

为什么在setState之后Ffltter Pageview重置为第0页

确保通过在CheckIfFavoriteMovieEvent((event,emit){...})上注册处理程序误差

将侧边菜单和底部导航栏放在同一Flutter 应用程序中

在flutter web上渲染多个Youtube视频

Flutter:如何设置 PersistentFooterButtons 背景?

如何在Flutter中显示ListView Builder区域外的列表数据?

无法将Null类型的值分配给 const 构造函数中List类型的参数

如何在android中 Select 任何文件/文件路径 - Flutter

将状态维护到 asyncNotifier

Flutter:为什么我的 listTile colored颜色 被容器 colored颜色 覆盖了?

如何建立最近的文件列表?

改变步进器的线条 colored颜色 Flutter

Flutter HLS .m3u8 视频无法实时播放

如何让多个图标转到不同的网址

Flutter - 检测手指何时进入容器

Flutter 评级栏包选中和未选中的容器