![](/img/trans.png)
[英]Flutter The relevant error-causing widget was Scaffold lib\main.dart:14
[英]Flutter dart error (The relevant error-causing widget was ...)
由于我的小部件的大小或数据(我猜),我收到了多个错误。 我试图重新写这部分,但没有成功。 是因为小部件大小还是其他原因?
@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),
],
),
))
],
)),
);
}
这是错误部分:
════════ 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
═══════════════════════════════
毕竟我得到的是这样的平面蓝屏
我试过的东西。 首先,我认为这是因为 stream 构建器,我尝试更改 stream 构建器和 listview 部分,但它没有用。 比我用扩展和灵活(给定 flex)包装小部件,但它也不起作用。
在 ListView.builder 中将 shrinkWrap 属性添加为 true,如下所示
return ListView.builder(
shrinkWrap:true
itemBuilder: (context, index) {
return Text('${listOfDocumentSnap[index].data()}');
},
itemCount: listOfDocumentSnap.length,
);
将此属性添加到您的 listview.builder 物理: const BouncingScrollPhysics(),
将这些属性用于您的 ListView
shrinkWrap: true,
physics: BouncingScrollPhysics(),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.