如何解决Flutter:FutureBuilder未显示列表
我有一个以未来形式出现的列表
Future<List<String>> _future;
List<String> showList = [];
String showCode;
Future<List<String>> getCode() async {
final show = await SharedPreferences.getInstance();
setState(() {
showList = show.getStringList('companyName');
});
print('here ${showList.toString()}');
return showList;
}
当我打印时,我的控制台将像这样输出
[朋友,擦洗]
我试图通过使用Futurebuilder向用户显示此列表,但我的值未显示。我将其作为一列添加到了容器的底部居中位置,但是仅显示了CircularProgressIndicator()部分,知道吗?
? Container(
child: Padding(
padding: const EdgeInsets.all(16.0),child: Column(
children: [
Column(
children: [
IconButton(
icon: Icon(Icons.close),onPressed: () {
Navigator.pushNamed(
context,ShowScreen.routeName);
}),Text(
'Please Select Show',],),FutureBuilder(
future: _future,builder: (context,AsyncSnapshot<List<String>> snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data.length,itemBuilder: (context,index) {
return Card(
elevation: 6.0,child: Padding(
padding: const EdgeInsets.all(8.0),child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,children: <Widget>[
Text(snapshot.data[index]),));
});
} else{
return CircularProgressIndicator();
}
}),)
看起来像这样,但是没有显示项目
我这样设置数据
else{
_showData = !_showData;
shows.forEach((element) {
showCode = element.showName;
showList.add(element.showName);
show.setStringList(
'showName',showList);
getCode();
})
解决方法
将shrinkWrap
的{{1}}属性设置为ListView
:
我以您的代码为例添加了一个演示:
true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。