【发布时间】:2019-06-01 10:29:31
【问题描述】:
将 Flutter 与实时数据库(例如 Firebase 数据库)一起使用时,不仅要知道集合已更新,还要知道确切的更新位置。比如显示一个漂亮的list animation,或者根据哪个项目更新触发一些额外的事件。 Dart 已经有一个 amazing infrastructure 用于传递事件。
一个典型的例子是使用FirebaseAnimatedList,但它与Firebase 绑定,不支持过滤和排序(除了非常基本的Firebase model)。我正在寻找一个更通用的解决方案,它允许在数据库(通知项目更改/插入/删除)和前面提到的 AnimatedList 之间注入一些逻辑,它期望相同的事件。
最近的趋势似乎支持不可变集合,例如 built_value,这在 Dart 中很有意义,因为对象创建是 very cheap。但是,不可变集合无法判断哪个项目已更改,它们只是提供一个新集合。这种方法还使得难以将一些本地信息附加到项目,例如当用户多选项目或自定义排序时的“选择”位。因为,嗯,项目是不可变的,它们的引用(又名指针,又名对象 ID)不断变化。
另一种解决方案是实现一种可观察列表,例如package:observable 提供的列表,但似乎它的作者不再相信它的受欢迎程度。那么,在 Flutter 中创建动画、过滤、排序、选择支持列表并由实时数据库支持的方法是什么?
【问题讨论】: