Flatter/Dart和Firebase,如何获取列表中的数据而不是realdatetime

Flatter/Dart和Firebase,如何获取列表中的数据而不是realdatetime,firebase,dart,flutter,real-time-data,Firebase,Dart,Flutter,Real Time Data,我正在创建一个flatter应用程序,它允许一个商店的产品列表。为了练习,我把自己的基地设在了Flatter firebase: 我已经设法显示了存储在firebase中的产品列表,但我的问题是,当用户添加产品时,列表会自动刷新,因为它是realdatatime。示例代码: new Flexible( child: new FirebaseAnimatedList( key: new ValueKey<bool>(_anchorToBottom), query: _mes

我正在创建一个flatter应用程序,它允许一个商店的产品列表。为了练习,我把自己的基地设在了Flatter firebase:

我已经设法显示了存储在firebase中的产品列表,但我的问题是,当用户添加产品时,列表会自动刷新,因为它是realdatatime。示例代码:

  new Flexible(
child: new FirebaseAnimatedList(
  key: new ValueKey<bool>(_anchorToBottom),
  query: _messagesRef,
  reverse: _anchorToBottom,
  sort: _anchorToBottom
      ? (DataSnapshot a, DataSnapshot b) => b.key.compareTo(a.key)
      : null,
  itemBuilder: (BuildContext context, DataSnapshot snapshot,
      Animation<double> animation, int index) {
    return new SizeTransition(
      sizeFactor: animation,
      child: new Text("$index: ${snapshot.value.toString()}"),
    );
  },
),
newflexible(
子级:新的FirebaseAnimatedList(
键:新值键(_anchortobotom),
查询:_messagesRef,
反向:锚定,
排序:_anchortobotom
?(DataSnapshot a,DataSnapshot b)=>b.key.比较(a.key)
:null,
itemBuilder:(BuildContext上下文、DataSnapshot快照、,
动画(整数索引){
返回新的SizeTransition(
sizeFactor:动画,
子项:新文本(“$index:${snapshot.value.toString()}”),
);
},
),
),

在我使用firebase AnimatedList()从firebase加载查询的代码中,它工作得非常好,但是当在短时间内添加许多产品时,对用户来说,这将非常烦人。 我希望用户手动刷新此文件

我已经看到了这个库的存在,但是我找不到任何关于如何使用它的例子,我也不知道它是否能解决这个问题


感谢您的帮助或建议。

添加子项时,您似乎可以覆盖,而不是调用
setState
,例如,请使用
needsRefresh
变量注意更改

@override
  void didChangeDependencies() {
    if (widget.sort != null) {
      _model = new FirebaseSortedList(
        query: widget.query,
        comparator: widget.sort,
        onChildAdded: (_) => _needsRefresh = true, //_onChildAdded,
        onChildRemoved: _onChildRemoved,
        onChildChanged: _onChildChanged,
        onValue: _onValue,
      );
    } else {
      _model = new FirebaseList(
        query: widget.query,
        onChildAdded: _onChildAdded,
        onChildRemoved: _onChildRemoved,
        onChildChanged: _onChildChanged,
        onChildMoved: _onChildMoved,
        onValue: _onValue,
      );
    }
    super.didChangeDependencies();
  }

非常感谢您的回复,请原谅我是新来的,我不太明白这一点。我知道你告诉我修改颤振包和他的firebase_animated_list.dart文件。我做了一个测试,但没有成功,我一直在实时显示信息。根据您的想法,我修改了函数_onValue中的文件/ui/firebase_sorted_list.dart,以执行clear(),然后再执行onValue(event.snapshot)。它似乎有效,但我不知道它是否是正确的解决方案。不要修改库,扩展类并重写方法。例如,
class MyList扩展了FirebaseAnimatedList
,并在类内部,
@override didChangeDependencies…
。我在手机上,所以我现在不能说太多。好的,Jacob,我知道,FirebaseAnimatedList.dart包含类FirebaseAnimatedListState和包含didChangeDependencies(),在这种情况下,我需要创建类FirebaseAnimatedListState扩展FirebaseAnimatedListState并覆盖didChangeDependencies()。我去测试一下。谢谢