Как добавить автоматическую прокрутку в список StreamBuilder во флаттере

Я задал этот вопрос и получил точный ответ

Он работал нормально, затем я попытался обернуть его в StreamBuilder, как показано ниже, он перестал работать

StreamBuilder<List<WinsModel>>(
                              stream: WinController().readWins(),
                              builder: (context, snapshot2) {
                                if (snapshot2.hasError) {
                                  return NoData(
                                      text: "Error: 947474774", title: "");
                                } else if (snapshot2.hasData) {
                                  final testi = snapshot2.data!;
                                  return ListView.builder(
                                    controller: _controller,
                                    key: itemKey,
                                    itemCount: testi.length,
                                    itemBuilder: (BuildContext context, index) {
                                      return ListTile(
                                        title: SmallText(
                                          text: testi[index].body,
                                          color: Colors.white,
                                          size: FDiamension.getSize(16),
                                          isBold: true,
                                        ),
                                      );
                                    },
                                  );
                                } else {
                                  return Container();
                                }
                              }),
                   
           

Пожалуйста, каким способом добавить автоматическую прокрутку в список StreamBuilder?

1
0
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Положи это

WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      if (_controller.hasClients) {
        _controller.animateTo(_controller.position.maxScrollExtent,
            duration: const Duration(milliseconds: 500),
            curve: Curves.easeInOut);
      }
    });

после

} иначе если (snapshot2.hasData) {

Нравиться

StreamBuilder<List<WinsModel>>(
                              stream: WinController().readWins(),
                              builder: (context, snapshot2) {
                                if (snapshot2.hasError) {
                                  return NoData(
                                      text: "Error: 947474774", title: "");
                                } else if (snapshot2.hasData) {

    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
          if (_controller.hasClients) {
            _controller.animateTo(_controller.position.maxScrollExtent,
                duration: const Duration(milliseconds: 500),
                curve: Curves.easeInOut);
          }
        });
                                  final testi = snapshot2.data!;
                                  return ListView.builder(
                                    controller: _controller,
                                    key: itemKey,
                                    itemCount: testi.length,
                                    itemBuilder: (BuildContext context, index) {
                                      return ListTile(
                                        title: SmallText(
                                          text: testi[index].body,
                                          color: Colors.white,
                                          size: FDiamension.getSize(16),
                                          isBold: true,
                                        ),
                                      );
                                    },
                                  );
                                } else {
                                  return Container();
                                }
                              }),
                   

Другие вопросы по теме