问题描述
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