Значение обновления setState на основе потока - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь установить значение внутри построителя потока, но когда я хочу установить значение с помощью функции setState, я получаю эту ошибку.

setState () или markNeedsBuild () вызывается во время сборки.

Вот мой фрагмент

int countRecent = 0;

...

return StreamBuilder<Object>(
      stream: Data(uid: user.uid).getTrips,
      builder: (context, snapshot) {
        dynamic items = snapshot.data;
        setState(() => countRecent = items.length);
} 

...

Text(
  "$countRecent",
  style: TextStyle(
   color: Colors.white,
     fontWeight: FontWeight.w900,
     fontSize: 43,
     letterSpacing: 0.2,
     fontFamily: "VarelaRound",
  ),
),

По сути, я хочу обновлять эту переменную каждый раз, при изменении документа (или, скорее, по длине этого документа).

У вас есть идеи?

1 Ответ

3 голосов
/ 17 января 2020

Вы можете просто отобразить Text с данными, которые вы получаете на StreamBuilder:

return StreamBuilder(
  stream: Data(uid: user.uid).getTrips,
  builder: (context, snapshot) {
    dynamic items = snapshot.data;
    return Text(
      "${items.length}",
      style: TextStyle(
      color: Colors.white,
        fontWeight: FontWeight.w900,
        fontSize: 43,
        letterSpacing: 0.2,
        fontFamily: "VarelaRound",
      ),
    )
  } 
);
...