我正在尝试构建一个小部件的水平滑块 (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”是您想要在列表中添加新产品的小部件。
| 归档时间: |
|
| 查看次数: |
4845 次 |
| 最近记录: |