Flutter:如何在包含其他类型小部件的 ListView.builder 末尾添加按钮小部件?

Moo*_*rer 6 listview flutter

我正在尝试构建一个小部件的水平滑块 (ListView),并希望在 ListView 的末尾添加一个按钮(以便您可以添加另一张卡片)。到目前为止,如果我尝试通过从中提取的小部件列表来添加它以生成 ListView.builder,它不允许我,因为小部件与我指定的小部件不同,正在制作列表。

我不知道如何以另一种方式将它添加到列表的末尾。我已经能够将它放在列表旁边,但这会占用不应占用的屏幕空间,因为所需的效果应该是将它添加到 ListView 的末尾,而不是旁边。

这是代码:

Column(
      children: <Widget>[
        Expanded(
          flex: 20,
          child: Column(
            children: <Widget>[
              Padding(
                padding:
                    const EdgeInsets.only(left: 20, top: 10, bottom: 10),
                child: Align(
                  alignment: Alignment.topLeft,
                  child: Text(
                    'Buildings',
                    style: TextStyle(
                        color: Colors.white,
                        fontSize: 30,
                        fontFamily: 'Montserrat',
                        fontWeight: FontWeight.w300),
                  ),
                ),
              ),
              Expanded(
                child: Padding(
                  padding: const EdgeInsets.symmetric(horizontal: 20),
                  child: SearchBar(),
                ),
              ),
            ],
          ),
        ),
        Expanded(
          flex: 30,
          child: Row(
            children: <Widget>[
              Expanded(
                child: Consumer<BuildingData>(
                  builder: (context, buildingData, child) {
                    return ListView.builder(
                      scrollDirection: Axis.horizontal,
                      itemBuilder: (context, index) {
                        final building = buildingData.buildingInputs[index];
                        return BuildingCard(
                          buildingName: building.buildingName,
                        );
                      },
                      itemCount: buildingData.buildingCount,
                    );
                  },
                ),
              ),
              AddBuildingButton(
                onPressed: () {
                  print('success');
                },
              ),
            ],
          ),
        ),
        Expanded(
          flex: 50,
          child: Container(
            padding: EdgeInsets.only(top: 30, left: 30, right: 30),
            decoration: BoxDecoration(
              color: Color(0xff2e3032),
              borderRadius: BorderRadius.only(
                topLeft: Radius.circular(50),
                topRight: Radius.circular(50),
              ),
            ),
          ),
        )
      ],
    ),
Run Code Online (Sandbox Code Playgroud)

Jay*_*ara 14

只需按如下方式更改您的代码,

               return ListView.builder(
                      scrollDirection: Axis.horizontal,
                      itemBuilder: (context, index) {
                        // checking if the index item is the last item of the list or not
                        if (index == buildingData.buildingCount){
                           return Your_New_Card_Widget;
                        }

                        final building = buildingData.buildingInputs[index];

                        return BuildingCard(
                        buildingName: building.buildingName,
                        );
                      },
                      itemCount: buildingData.buildingCount+1,
                    );
Run Code Online (Sandbox Code Playgroud)

“Your_New_Card_Widget”是您想要在列表中添加新产品的小部件。

  • 我收到错误“RangeError(索引):无效值:值范围为空:0 (3认同)
  • 成功了!谢谢你们,我正在开发我的第一个应用程序,像你们这样的人让这次旅程变得如此有意义! (3认同)