-1

我有一个以未来形式出现的清单

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

1 回答 1

0

设置toshrinkWrap的属性:ListViewtrue

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

  return ListView.builder(
      itemCount: snapshot.data.length,
      shrinkWrap: true, // new line
      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]),
                ],
              ),
            ));
      },
    );
于 2020-09-08T10:50:30.797 回答