ListView.builder 不工作

Has*_*sef 6 dart flutter

在尝试实现flutter-firebase 时ListView.builder未能显示!

请注意,当我尝试在没有ListView.builder它的情况下显示第一个元素时,它工作正常,即错误仅与此代码块相关:

return ListView.builder(
    itemCount: snapshot.data.documents.length,
    padding: const EdgeInsets.only(top: 10.0),
    itemExtent: 25.0,
    itemBuilder: (context, index) {
    DocumentSnapshot ds = snapshot.data.documents[index];
    return Text(" ${ds['name']} ${ds['vote']}");
});
Run Code Online (Sandbox Code Playgroud)

我的完整代码是:

import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

void main() => runApp(MyApp(
  textInput: Text("Text Widget"),
));

class MyApp extends StatefulWidget {
  final Widget textInput;
  MyApp({this.textInput});

  @override
  State<StatefulWidget> createState() => MyAppState();
}

class MyAppState extends State<MyApp> {
  bool checkBoxValue = false;
  @override
  Widget build(BuildContext ctxt) {
    return new MaterialApp(
      home: SafeArea(
        child: Scaffold(
            body: new Center(
                child: new Column(
                  children: <Widget>[
                    widget.textInput,
                    Checkbox(
                        value: checkBoxValue,
                        onChanged: (bool newValue){
                          setState(() {
                            checkBoxValue = newValue;
                          });
                        }
                    ),
                    StreamBuilder(
                        stream: Firestore.instance.collection('baby').snapshots(),
                        builder: (context, snapshot) {
                          if (!snapshot.hasData) return const Text('Loading...');

                           //   DocumentSnapshot ds = snapshot.data.documents[0];
                           //   return new Text(" ${ds['name']} ${ds['vote']}");

                          // When i try to replace the above code by the below it fails!
                               return ListView.builder(
                                itemCount: snapshot.data.documents.length,
                                padding: const EdgeInsets.only(top: 10.0),
                                itemExtent: 25.0,
                                itemBuilder: (context, index) {
                                DocumentSnapshot ds = snapshot.data.documents[index];
                                return Text(" ${ds['name']} ${ds['vote']}");
                              });
                           // End of the ListView builder that fails!

                        }),
                  ],
                ))),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

更新

我得到的错误是:

执行热重载...我/颤振(9119):???通过渲染库捕获的异常 ????????????????????????????????????????????? ???????????? I/flutter (9119):在 performResize() 期间抛出以下断言:I/flutter (9119):垂直视口被赋予无限高度。I/flutter (9119):视口在滚动方向扩展以填充其容器。在这种情况下,垂直 I/flutter (9119):视口被赋予无限量的垂直空间来扩展。这种情况 I/flutter (9119):通常发生在可滚动小部件嵌套在另一个可滚动小部件中时。I/flutter (9119):如果这个小部件总是嵌套在一个可滚动的小部件中,则不需要使用视口,因为 I/flutter (9119):总是有足够的垂直空间供孩子使用。在这种情况下,考虑使用 Column I/flutter ( 9119): 代替。否则,请考虑使用“shrinkWrap”属性(或 ShrinkWrappingViewport)来调整 I/flutter (9119) 的大小:视口的高度与其子项的高度之和。I/flutter(9119):I/flutter(9119):当抛出异常时,这是堆栈:I/flutter(9119):#0 RenderViewport.performResize。(package:flutter/src/rendering/viewport.dart:985:15) I/flutter (9119): #1 RenderViewport.performResize (package:flutter/src/rendering/viewport.dart:1038:6) I/flutter ( 9119): #2 RenderObject.layout (package:flutter/src/rendering/object.dart:1555:9) I/flutter (9119): #3 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart 109:#72 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15) I/flutter (9119): #73 _WidgetsFlutterBinding&BindingpackageSchedulerBindings:&SchedulerBinding:990:15 )I/flutter(9119):#74 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.scheduleWarmUpFrame。(package:flutter/src/scheduler/binding.dart:751:7) I/flutter (9119): #76 _Timer._runTimers (dart:isolate/runtime/libtimer_impl.dart:382:19) I/flutter (9119) : #77 _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:416:5) I/flutter (9119): #78 _RawReceivePortImpl._handleMessage (dart: isolate/runtime/libisolate_patch.dart:165:12) I/flutter (9119): (从包 dart:async 中删除了一帧) I/flutter (9119): I/flutter (9119): 以下 RenderObject 正在被处理时异常被触发:I/flutter (9119): RenderViewport#a2532 NEEDS-LAYOUT NEEDS-PAINT I/flutter (9119): creator: Viewport ? _ScrollableScope ? 忽略指针-[GlobalKey#363cb] ? 语义?听众?我/颤振(9119):_GestureSemantics?RawGestureDetector-[LabeledGlobalKey#08fb7] ? I/flutter (9119): _ExcludableScrollSemantics-[GlobalKey#8d2f7] ? 重绘边界 ? 自定义油漆?重绘边界 ? I/flutter (9119): NotificationListener ?? I/flutter (9119): parentData: (can use size) I/flutter (9119): 约束:BoxConstraints(0.0<=w<=384.0, 0.0<=h<=Infinity) I/flutter (9119): size: ?????????????????????????????????????????????????????? ?????????????????????????????????????????????????????? I/flutter ( 9119): 另一个异常被抛出: RenderBox is not layout: RenderViewport#a2532 NEEDS-LAYOUT NEEDS-PAINT I/flutter (9119): 另一个异常被抛出: RenderBox 没有被布局: RenderViewport#a2532 NEEDS- PAINT I/flutter(9119):抛出另一个异常:RenderBox没有布局:RenderIgnorePointer#cfad6relayoutBoundary=up10 NEEDS-PAINT I/flutter(9119):抛出另一个异常:RenderBox没有布局:RenderSemanticsAnnotations#2fd15relayoutBound =up9 NEEDS-PAINT I/flutter (9119):抛出另一个异常:RenderBox 没有布局:RenderPointerListener#0da92relayoutBoundary=up8 NEEDS-PAINT I/flutter(9119):抛出另一个异常:RenderBox 没有布局:RenderSemanticsGestureHandler#588c9relayoutBoundary=up7 NEEDS-PAINT I/flutter(9119):抛出另一个异常:RenderBox没有布局:_RenderExcludableScrollSemantics#ad008relayoutBoundary=up6 NEEDS-PAINT I/flutter(9119被抛出另一个异常RenderBox:):未布局:RenderRepaintBoundary#1e512relayoutBoundary=up5 NEEDS-PAINT I/flutter (9119):抛出另一个异常:RenderBox 未布局:RenderCustomPaint#ab136relayoutBoundary=up4 NEEDS-PAINT I/flutter (9119):另一个异常是抛出:RenderBox 未布局:RenderRepaintBoundary#e6025relayoutBoundary=up3 NEEDS-PAINT 在 1,363 毫秒内重新加载了 394 个库中的 1 个。I/flutter (9119): 另一个异常被抛出:RenderBox 没有被布局:RenderRepaintBoundary#e6025relayoutBoundary=up3 NEEDS-PAINT

Rém*_*let 5

将您StreamBuilderExpanded. 由于它在一个Column


Has*_*sef -2

我发现真正的问题在于:

   return ListView.builder(
         itemExtent: 25.0 . // this made the limitation
)
Run Code Online (Sandbox Code Playgroud)

我应该删除itemExtent,这样列表默认就可以扩展了:)