ListView.builder显示任何内容

时间:2019-05-22 08:11:50

标签: flutter

AlertCardWidget是我编写的小部件。我在itemBuilder中将其返回,但未显示任何内容。这是我的代码:

       Flexible(
         child: Padding(
           child: SingleChildScrollView(
                  child: ListView.builder(
                        itemCount: state.data.length,
                        itemBuilder: (BuildContext context, int index) {

                    state.data["datas"].map<Widget>((f) {

                          return AlertCardWidget(
                            positionId: "${f["8020074"]}",
                            shipowner: "${f["8020076"]}",
                            customer: "${f["8020170"]}",
                            salesRepresenter: "${f["8020176"]}",
                            operationRepresenter: "${f["8020177"]}",
                            textContentFontColor:
                                AppTheme(Theme.of(context).brightness)
                                    .cardFontBackgroundColor,
                            textfont: Colors.redAccent,
                          );
                        }).toList();
                      },
                    ),
                  ),
                ),
              ),

没有错误显示。

3 个答案:

答案 0 :(得分:1)

我有一些为什么要使用ListView的项目。使用Listview而不是ListView.builder的问题是“给了垂直视口无限的高度错误”。像展开小部件的子项那样编写Listview时,问题已解决。这是我的代码:

             Expanded(
                                  child: Padding(
                  padding: const EdgeInsets.all(4.0),
                  child: ListView(
                    children: state.data["datas"].map<Widget>((f) => AlertCardWidget(positionId: "${f["8020074"]}",
                                  shipowner: "${f["8020076"]}",        
                                  customer: "${f["8020170"]}",
                                  salesRepresenter: "${f["8020176"]}",
                                  operationRepresenter: "${f["8020177"]}",
                                  textContentFontColor: AppTheme(Theme.of(context).brightness).cardFontBackgroundColor,
                                  textfont: Colors.redAccent,)).toList(),
                  ),

                ),
              ),

答案 1 :(得分:0)

您的itemBuilder函数不返回值。

编辑:它应该为列表中的每个条目返回一个小部件。 这样的事情应该起作用。 另外,Padding Widget缺少padding属性。

   Flexible(
     child: Padding(
       child: SingleChildScrollView(
              child: ListView.builder(
                    itemCount: state.data.length,
                    itemBuilder: (BuildContext context, int index) {

                     final f  = state.data[index];

                      return AlertCardWidget(
                        positionId: "${f["8020074"]}",
                        shipowner: "${f["8020076"]}",
                        customer: "${f["8020170"]}",
                        salesRepresenter: "${f["8020176"]}",
                        operationRepresenter: "${f["8020177"]}",
                        textContentFontColor:
                            AppTheme(Theme.of(context).brightness)
                                .cardFontBackgroundColor,
                        textfont: Colors.redAccent,
                      );
                  },
                ),
              ),
            ),
          ),

答案 2 :(得分:0)

也许是一个愚蠢的问题,但是为什么要将列表映射到ListView.builder中呢? 您是否尝试过将索引用于每次迭代? 因为我从该代码中了解到,您拥有的每个["datas"]项都会生成整个列表,其生成次数是state.data.length的两倍。

也许可以尝试一下:

Flexible(
     child: Padding(
       child: SingleChildScrollView(
              child: ListView.builder(
                    itemCount: state.data.length,
                    itemBuilder: (BuildContext context, int index) {
                      return AlertCardWidget(
                        positionId: state.data[index]["datas"]["8020074"],
                        shipowner: state.data[index]["datas"]["8020076"],
                        customer: state.data[index]["datas"]["8020170"],
                        salesRepresenter: state.data[index]["datas"]["8020176"],
                        operationRepresenter: state.data[index]["datas"]["8020177"],
                        textContentFontColor:
                            AppTheme(Theme.of(context).brightness)
                                .cardFontBackgroundColor,
                        textfont: Colors.redAccent,
                      );
                  },
                ),
              ),
            ),
          ),

如果这行不通,您介意向我们展示您要检索哪些数据吗?