#flutter
#flutter
Вопрос:
Я новичок в Flutter и столкнулся с проблемой с StreamBuilder amp; ListView.builder.
Я выполняю сетевой вызов по нажатию кнопки (Применить кнопку), доступной в списке карты, на основе которой отображаются другие кнопки.
проблема, с которой я сталкиваюсь, заключается в том, что виджеты не обновляются после успешного сетевого вызова, но когда я обновляю страницу, я получаю обновленный результат.
Что я делаю не так?
Я не использую какое-либо состояние для этого. Нужно ли мне это использовать?
Код виджета
StreamBuilder(
initialData: [],
stream: dataBoc.ListData,
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemBuilder: (BuildContext context, index) {
return InkWell(
key: Key(snapshot.data[index]["lid"]),
child: DataCard(
DataModel(snapshot.data[index]),
),
onTap: () {
Navigator.pushNamed(context, "/detailPage",
arguments: snapshot.data[index]["id"]);
},
);
},
itemCount: snapshot.data.length,
);
}
},
),
Код блока
// Вот как я добавляю данные в поток
if (res.statusCode == 200) {
var data = json.decode(res.body);
if (data['status'] == true) {
// listDataStream.sink.add(data['result']);
listDataStream.add(data['result']);
} else {
listDataStream.sink.addError("Failed to Load");
}
}
Ожидаемый результат: когда я выполняю сетевой вызов, и если это удается, то на основе сетевого результата на соответствующей карте должны отображаться другие кнопки.
Комментарии:
1. Можете ли вы предоставить полный исходный код?
2. @nucleartux Я устранил проблему. Спасибо
Ответ №1:
Я исправил эту проблему. Проблема заключалась в том, что мое дерево виджетов было плохо структурировано, и это нарушало процесс сборки виджета.
Комментарии:
1. Можете ли вы сказать, что конкретно вы изменили? Я столкнулся с аналогичной проблемой.
2. @pyetti Я реструктурирую свои виджеты и удалил ненужные виджеты