Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 设置基于流的状态更新值_Flutter_Dart_Stream Builder - Fatal编程技术网

Flutter 设置基于流的状态更新值

Flutter 设置基于流的状态更新值,flutter,dart,stream-builder,Flutter,Dart,Stream Builder,我试图在stream builder中设置值,但是当我想使用setState函数设置值时,我得到了这个错误 在生成过程中调用setState()或markNeedsBuild() 这是我剪下来的 int countRecent = 0; ... return StreamBuilder<Object>( stream: Data(uid: user.uid).getTrips, builder: (context, snapshot) {

我试图在stream builder中设置值,但是当我想使用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",
  ),
),

int countRecent=0;
...
返回流生成器(
流:数据(uid:user.uid).getTrips,
生成器:(上下文,快照){
动态项=snapshot.data;
setState(()=>countRecent=items.length);
} 
...
正文(
“$countRecent”,
样式:TextStyle(
颜色:颜色,白色,
fontWeight:fontWeight.w900,
尺码:43,
字母间距:0.2,
fontFamily:“瓦雷拉朗”,
),
),
基本上,我想要的是每次文档更改(或者更确切地说是文档的长度)时更新这个变量


你有什么想法吗?

你可以用
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",
      ),
    )
  } 
);

您只需使用在
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",
      ),
    )
  } 
);

如果某个答案解决了您的问题,请记住将其标记为正确,以便将来能够帮助其他用户。如果某个答案解决了您的问题,请记住将其标记为正确,以便将来能够帮助其他用户。我很高兴我能提供帮助。使用它们的流和小部件起初可能会让人困惑,但一旦掌握了窍门,您将使用它们轻松删除它们。祝你的应用好运!如果我们想停止流,因为不再需要流,但仍然希望获得来自流的变量的最后更新/值,该怎么办?你可以简单地将它们保存到类上的变量中,在返回之前在生成器中执行赋值。我有类似的情况,但我需要数据(streambuilder的结果)显示在应用程序栏的抽屉中,这样我就不能按照这里的建议将代码移动到streambuilder中。我该怎么做?@vikasm如果这个问题不符合您的要求,您应该发布一个新问题。请记住分享您的代码并清楚地解释您试图实现的目标。我很高兴能提供帮助。流和小部件一开始使用它们可能会让人困惑,但一旦你掌握了窍门,你就会很容易地使用它们。祝你的应用好运!如果我们想停止流,因为不再需要,但仍然想得到流中变量的最后更新/值,该怎么办?你可以简单地将它们保存到类中的变量中,在内部执行赋值返回之前的生成器。我有类似的情况,但我需要数据(streambuilder的结果)显示在应用程序栏的抽屉中,这样我就无法按照此处的建议将代码移动到streambuilder中。我该怎么做?@vikasm如果这个问题不符合您的要求,您应该发布一个新问题。请记住共享您的代码并清楚地解释您试图实现的目标。