我的Flutter应用程序出现问题,我有一个仅返回StreamBuilder的类,它运行良好,可以显示Cloud Firestore中的数据。但是,当我尝试将此类包装在Column或ListView类中时,它什么也没显示。
我需要它来显示当前页面的名称。而且AppBar类已经带有应用程序名称,所以我也不能使用它。
有人知道我该如何包装它并使它继续运行吗?
示例代码有效
class NewCardsList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new StreamBuilder<QuerySnapshot>(
stream: firestore.collection('cards_list').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) return const Text('Connecting...');
final int cardLength = snapshot.data.documents.length;
return new ListView.builder(
itemCount: cardLength,
itemBuilder: (int index) {
final DocumentSnapshot _card= snapshot.data.documents[index];
return new ListTile(
title: new Text(_card['title']),
subtitle: new Text(_card['description']),
);
},
);
},
);
}
}
示例代码不起作用
class NewCardsList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Column(
children: <Widget> [
Text("Your Card List"),
StreamBuilder<QuerySnapshot>(
stream: firestore.collection('cards_list').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) return const Text('Connecting...');
final int cardLength = snapshot.data.documents.length;
return new ListView.builder(
itemCount: cardLength,
itemBuilder: (int index) {
final DocumentSnapshot _card= snapshot.data.documents[index];
return new ListTile(
title: new Text(_card['title']),
subtitle: new Text(_card['description']),
);
},
);
},
]));
}
}
答案 0 :(得分:4)
使用Flexible()包装Streambuilder,然后使用Column()包装Flexible,将column设置为scaffold()的主体
答案 1 :(得分:0)
此外,您只需在shrinkWrap: true
内创建属性ListView.builder()
。
return new ListView.builder(
shrinkWrap: true,
itemCount: cardLength,
itemBuilder: (int index) {
final DocumentSnapshot _card= snapshot.data.documents[index];
return new ListTile(
title: new Text(_card['title']),
subtitle: new Text(_card['description']),
);