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();
                          }

                        }),)

看起来像这样,但是没有显示项目

enter image description here

我这样设置数据

else{

        _showData = !_showData;
       shows.forEach((element) {
               showCode = element.showName;
               showList.add(element.showName);
                show.setStringList(
              'showName',showList);
                getCode();
                                           
                                            })

解决方法

shrinkWrap的{​​{1}}属性设置为ListView

我以您的代码为例添加了一个演示:

true