在脚手架的构建方法中,我尝试将主体替换为
具有指定高度的容器,包裹在_questionList()周围(返回ListView.builder),
包含一个子级Expanded的列,该列环绕_questionList()
它们都不起作用。传递了builder函数内部if-else块中的前两个子句。错误可能是什么?
class _QuestionPageState extends State<QuestionPage> {
final String roomName;
final String roomID;
_QuestionPageState(this.roomName, this.roomID);
Widget _questionList() {
return StreamBuilder<QuerySnapshot>(
stream: RoomDbService(roomName, roomID).getRoomQuestions(),
builder: (context, snapshot) {
if (!snapshot.hasData) { // passed
return new Text('Loading...');
} else if (snapshot.hasError) { // passed
return new Text("Error...");
} else {
// snapshot.data.documents.forEach((element) {print(element);}); (prints nothing)
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
final docSS = snapshot.data.documents[index];
// print(snapshot.data.documents[index].data["text"]); (prints nothing)
//return Text(snapshot.data.documents[index].data["text"]); (returns nothing)
return QuestionTile(
questionID: docSS.documentID,
text: docSS.data["text"],
roomName: roomName,
roomID: roomID
);
}
);
}
}
);
}
@override
Widget build(BuildContext context) {
RoomDbService dbService = RoomDbService(roomName, roomID);
return Scaffold(
appBar: ... ,
body: CustomScrollView(
slivers: <Widget>[
SliverFixedExtentList(
itemExtent: 500,
delegate: SliverChildListDelegate([_questionList()]),
),
],
),
);
}
}
如果我设法正确输入if-else块的第3个子句,那么流肯定没有问题吗?
答案 0 :(得分:0)
尝试实现此代码
class _QuestionPageState extends State<QuestionPage> {
final String roomName;
final String roomID;
_QuestionPageState(this.roomName, this.roomID);
Widget _questionList() {
return StreamBuilder<QuerySnapshot>(
stream: RoomDbService(roomName, roomID).getRoomQuestions(),
builder: (context, snapshot) {
if (!snapshot.hasData) { // passed
return new Text('Loading...');
} else if (snapshot.hasError) { // passed
return new Text("Error...");
} else {
// snapshot.data.documents.forEach((element) {print(element);}); (prints nothing)
return ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
if (itemCount === 0) return Text('item count value is 0');
final docSS = snapshot.data.documents[index];
// print(snapshot.data.documents[index].data["text"]); (prints nothing)
//return Text(snapshot.data.documents[index].data["text"]); (returns nothing)
return QuestionTile(
questionID: docSS.documentID,
text: docSS.data["text"],
roomName: roomName,
roomID: roomID
);
}
);
}
}
);
}
@override
Widget build(BuildContext context) {
RoomDbService dbService = RoomDbService(roomName, roomID);
return Scaffold(
appBar: ... ,
body: CustomScrollView(
slivers: <Widget>[
SliverFixedExtentList(
itemExtent: 500,
delegate: SliverChildListDelegate([_questionList()]),
),
],
),
);
}
}
答案 1 :(得分:0)
请尝试以下解决方案:
return ListView.builder(
itemCount: snapshot.data.documents.length,
shrinkWrap : true,
itemBuilder: (context, index) {
if (itemCount === 0) return Text('item count value is 0');
final docSS = snapshot.data.documents[index];
// print(snapshot.data.documents[index].data["text"]); (prints nothing)
//return Text(snapshot.data.documents[index].data["text"]); (returns nothing)
return QuestionTile(
questionID: docSS.documentID,
text: docSS.data["text"],
roomName: roomName,
roomID: roomID
);
}
);
您可以使用shrinWrap:true
`