【问题标题】:Flutter: FutureBuilder no list shownFlutter:FutureBuilder没有显示列表
【发布时间】:2020-09-08 10:29:54
【问题描述】:

我有一个以未来形式出现的列表

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

【问题讨论】:

  • 这是ListView 嵌套在Column 中吗?
  • 我编辑我的帖子。

标签: flutter future flutter-futurebuilder


【解决方案1】:

ListViewshrinkWrap属性设置为true

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

  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]),
                ],
              ),
            ));
      },
    );

【讨论】:

  • 我添加了但没有变化
  • 检查控制台是否有任何警告或错误。当我尝试发布的修复程序时它起作用了。
  • progress indicator 显示了吗?它停止了吗?停止后立即发生什么?
  • 继续旋转,不会停止。我在上面添加了一个视觉效果以更好地理解
  • 我可以看到您传递给FutureBuilder 小部件的future 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
相关资源
最近更新 更多