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
Dart 如果嵌套在子项中,则不会呈现StreamBuilder小部件:<;Widget>;[]_Dart_Google Cloud Firestore_Flutter - Fatal编程技术网

Dart 如果嵌套在子项中,则不会呈现StreamBuilder小部件:<;Widget>;[]

Dart 如果嵌套在子项中,则不会呈现StreamBuilder小部件:<;Widget>;[],dart,google-cloud-firestore,flutter,Dart,Google Cloud Firestore,Flutter,我正在尝试从Firebase的FireStore数据库读取数据,并在Flatter应用程序中显示为列表 我遇到了这个问题,需要将StreamBuilder作为Widget数组的一部分。如果StreamBuilder小部件作为小部件的单个子部件,则会呈现OK。但是如果它是子窗口小部件数组的一部分,它就不起作用。e、 g 下面是我的小部件,它使用StreamBuilder Widget postsListWidget = new StreamBuilder( stream: Fire

我正在尝试从Firebase的FireStore数据库读取数据,并在Flatter应用程序中显示为列表

我遇到了这个问题,需要将StreamBuilder作为Widget数组的一部分。如果StreamBuilder小部件作为小部件的单个子部件,则会呈现OK。但是如果它是子窗口小部件数组的一部分,它就不起作用。e、 g

下面是我的小部件,它使用StreamBuilder

Widget postsListWidget = new StreamBuilder(
        stream: Firestore.instance.collection('baby').snapshots(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) return const Text('Loading...');
          return new ListView.builder(
            itemCount: snapshot.data.documents.length,
            padding: const EdgeInsets.only(top: 10.0),
            itemExtent: 55.0,
            itemBuilder: (context, index) =>
                _buildListItem(context, snapshot.data.documents[index]),
          );
        });
下面是我在使用StreamBuilder小部件时使用的单子级父项,例如容器

return new Scaffold(
        body: new Container(
      child: postsListWidget,
    )
上述代码可以正常工作,因为容器只有一个“子”元素

但是,如果我使用另一个小部件,该小部件可以有多个子部件,例如行,StreamBuilder将不会渲染。e、 g

 return new Scaffold(
        body: new Row(
      children: <Widget>[postsListWidget],
    )

如果有人能帮忙,我会很感激的,我就是找不到谷歌来帮我

我认为您缺少对错误和数据的检查,这些错误和数据尚未可用,如中所示

新建StreamBuilder(
流:\ u lot?.bids,//流或空
生成器:(BuildContext上下文,异步快照){
if(snapshot.hasError)
返回新文本('Error:${snapshot.Error}');
交换机(快照.连接状态){
case ConnectionState.none:返回新文本(“选择批次”);
case ConnectionState.waiting:返回新文本('waiting bids…');
case ConnectionState.active:返回新文本(“\$${snapshot.data}”);
case ConnectionState.done:返回新文本(“\$${snapshot.data}(closed)”;
}
},
)

Widget-postslitwidget=new StreamBuilder(
看起来可疑。你在用
postslitwidget
做什么?我正在尝试从firebase FireStore数据库获取流并显示在列表中。因为它在行->子数组下不工作,所以我为来自数据库的帖子创建了一个单独的小部件,即postslitwidget!
flutter: Another exception was thrown: RenderBox was not laid out: RenderViewport#9162d NEEDS-LAYOUT NEEDS-PAINT
flutter: Another exception was thrown: RenderBox was not laid out: RenderViewport#9162d NEEDS-PAINT
flutter: Another exception was thrown: Tried to paint a RenderObject reentrantly.
flutter: Another exception was thrown: 'package:flutter/src/widgets/text.dart': Failed assertion: line 213 pos 15: 'data != null': is not true.
flutter: Another exception was thrown: Tried to paint a RenderObject reentrantly.
new StreamBuilder<int>(
  stream: _lot?.bids, // a Stream<int> or null
  builder: (BuildContext context, AsyncSnapshot<int> snapshot) {
    if (snapshot.hasError)
      return new Text('Error: ${snapshot.error}');
    switch (snapshot.connectionState) {
      case ConnectionState.none: return new Text('Select lot');
      case ConnectionState.waiting: return new Text('Awaiting bids...');
      case ConnectionState.active: return new Text('\$${snapshot.data}');
      case ConnectionState.done: return new Text('\$${snapshot.data} (closed)');
    }
  },
)