在尝试实现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
Has*_*sef -2
我发现真正的问题在于:
return ListView.builder(
itemExtent: 25.0 . // this made the limitation
)
Run Code Online (Sandbox Code Playgroud)
我应该删除itemExtent,这样列表默认就可以扩展了:)
| 归档时间: |
|
| 查看次数: |
3094 次 |
| 最近记录: |