[英]Flutter dart error (The relevant error-causing widget was ...)
Im getting multiple errors because of my widget's size or datas ( i guess).由于我的小部件的大小或数据(我猜),我收到了多个错误。 I tried to wrote this part all over again but it didn't work.
我试图重新写这部分,但没有成功。 Is it because of widgets size or something else?
是因为小部件大小还是其他原因?
@override
Widget build(BuildContext context) {
var questionsOf = widget.setType(InputPage.topicN);
CollectionReference contestantsRef =
FirebaseFirestore.instance.collection('contestants');
return Scaffold(
backgroundColor: Colors.blue,
appBar: AppBar(
centerTitle: true,
),
body: SafeArea(
child: Column(
children: <Widget>[
Flexible(
child: Container(
height: 100,
child: iconCreate(),
)),
Container(
child: StreamBuilder<QuerySnapshot>(
stream: contestantsRef.snapshots(),
builder: (BuildContext context, AsyncSnapshot asyncSnapshot) {
List<DocumentSnapshot> listOfDocumentSnap =
asyncSnapshot.data.docs;
return ListView.builder(
itemBuilder: (context, index) {
return Text('${listOfDocumentSnap[index].data()}');
},
itemCount: listOfDocumentSnap.length,
);
},
),
),
SizedBox(
height: 100,
),
Flexible(
flex: 4,
child: Container(
height: 200,
margin: EdgeInsets.all(20),
decoration:
BoxDecoration(border: Border.all(color: Colors.black)),
child: Center(
child: StreamBuilder(
stream: questionsOf.snapshots(),
builder: (BuildContext context, AsyncSnapshot asyncsnapshot) {
String question1 =
asyncsnapshot.data.data()['q$questionIndexa']
['q$questionIndexa' + 'Sent'];
return Text('$question1');
},
),
),
),
),
Flexible(
flex: 3,
child: Container(
child: Column(
children: [
buildAnswerBox(questionsOf, 1, questionIndexa),
SizedBox(
height: 10,
),
buildAnswerBox(questionsOf, 2, questionIndexa),
SizedBox(
height: 10,
),
buildAnswerBox(questionsOf, 3, questionIndexa),
SizedBox(
height: 10,
),
buildAnswerBox(questionsOf, 4, questionIndexa),
],
),
))
],
)),
);
}
This is the Error part:这是错误部分:
════════ Exception caught by rendering library ═════════════════════════════════
RenderBox was not laid out: RenderCustomPaint#60178 relayoutBoundary=up4 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
'package:flutter/src/rendering/box.dart':
package:flutter/…/rendering/box.dart:1
Failed assertion: line 1929 pos 12: 'hasSize'
The relevant error-causing widget was
ListView
lib\guess_page.dart:74
════════ Exception caught by rendering library ═════════════════════════════════
RenderBox was not laid out: RenderRepaintBoundary#c207a relayoutBoundary=up3 NEEDS-PAINT
'package:flutter/src/rendering/box.dart':
package:flutter/…/rendering/box.dart:1
Failed assertion: line 1929 pos 12: 'hasSize'
The relevant error-causing widget was
Column
lib\guess_page.dart:60
═══════════════════════════════
After all i get is a flat blue screen like this毕竟我得到的是这样的平面蓝屏
The things i tried.我试过的东西。 Firstly i thought it's because of stream builder and i tried to change stream builder and listview part but it didn't work.
首先,我认为这是因为 stream 构建器,我尝试更改 stream 构建器和 listview 部分,但它没有用。 Than i wrap widgets with expanded and flexible (given flex) but it didn'T work too.
比我用扩展和灵活(给定 flex)包装小部件,但它也不起作用。
add shrinkWrap property to true in ListView.builder like below在 ListView.builder 中将 shrinkWrap 属性添加为 true,如下所示
return ListView.builder(
shrinkWrap:true
itemBuilder: (context, index) {
return Text('${listOfDocumentSnap[index].data()}');
},
itemCount: listOfDocumentSnap.length,
);
add this property to your listview.builder physics: const BouncingScrollPhysics(),将此属性添加到您的 listview.builder 物理: const BouncingScrollPhysics(),
use these properties to your ListView将这些属性用于您的 ListView
shrinkWrap: true,
physics: BouncingScrollPhysics(),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.