Я задал этот вопрос и получил точный ответ
Он работал нормально, затем я попытался обернуть его в 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?
Положи это
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();
}
}),