Как использовать AnimatedList в StreamBuilder во Flutter? - PullRequest
0 голосов
/ 05 апреля 2020

Я хочу иметь AnimatedList, который разворачивается сверху вниз, когда я получаю Данные из StreamBuilder, но я не могу заставить его работать.

Это мой код:


class _TransferListState extends State<TransferList> {
  final GlobalKey<AnimatedListState> _animatedListKey = GlobalKey<AnimatedListState>();

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: DatabaseService().transfers,
      builder: (BuildContext context, AsyncSnapshot builderSnapshot) {
        switch (builderSnapshot.connectionState) {
          case ConnectionState.waiting:
            ...
          default:
            if (builderSnapshot.hasError) {
              ...
            } else {
              return AnimatedList(
                key: _animatedListKey,
                physics: BouncingScrollPhysics(),
                itemCount: _dateMap.length,
                itemBuilder: (
                  BuildContext context,
                  int dayindex,
                  Animation<double> animation
                ) {
                  return Column(
                    children: <Widget>[
                      //Headercontainer
                      Container(
                       ...
                      ),
                      //Tilecontainer
                      Container(
                        ...
                        child: ListView.builder(
                          physics: ClampingScrollPhysics(),
                          shrinkWrap: true,
                          itemCount: _dateMap[_dateMap.keys.toList()[dayindex]].length,
                          itemBuilder: (BuildContext context, int index) {
                            return TransactionTile(                                  <-- i want these widgets to unfold from top to bottom
                              transfer: _dateMap[_dateMap.keys.toList()[dayindex]][index],
                            );
                          },
                        ),
                      ),
                      SizedBox(height: 20)
                    ],
                  );
                },
              );
            }
        }
      },
    );
  }
}

Я попытался обернуть Fadetransition внутри Widgettree, а также передать значение «animation» в виджет «TransactionTile», чтобы анимировать его внутри другого виджета, но ничего не помогло.

Когда я пытаюсь напечатать "анимацию" из метода построителя AnimatedList, я получаю kAlwaysCompleteAnimation, и его .value всегда равен 1.0, почему это так?

Каков правильный путь к реализовать это?

...