StreamBuilder не обновляет ListView.builder после изменения данных в Flutter

#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 Я реструктурирую свои виджеты и удалил ненужные виджеты