【发布时间】:2020-04-10 19:06:50
【问题描述】:
我试图从两个表中获取数据并显示到 ListView。
child: Container(
child: StreamBuilder<List<ABC>>(
stream: _abcBloc
.getListStream,
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Center(
child: Image.asset(
'assets/loading.gif',
width: 200.0,
height: 200.0,
),
);
break;
case ConnectionState.active:
if (snapshot.data.isEmpty) {
return Container(child: Text('empty'));
} else {
return ListView.builder(
shrinkWrap: true,
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
var _reading = snapshot.data[index];
var name;
_abcBloc.getName(_reading.Id)
.then((onValue) {
name = onValue.name;
});
return InkWell(
onTap: () {},
child: Padding(
padding: EdgeInsets.all(10),
child: Column(
children: <Widget>[
Text(name == null ? '' : name),
],
),
));
});
}
break;
default:
return Text("edwqd");
}
}))
首先它会调用_abcBloc.getListStream。我能够得到这一行的数据
(var _reading = snapshot.data[index];)。
之后,我想通过调用此函数_abcBloc.getName(_reading.Id) 从另一个表中获取名称。但是,名称总是显示为空。
【问题讨论】:
-
试试这个:
name = await _abcBloc.getName(_reading.Id);它应该可以工作,因为name被用作Text的值。
标签: listview flutter dart setstate