在Flutter中,可以使用StatefulWidget和ListView.builder来实现在点击卡片项时动态创建ListView。
首先,你需要在StatefulWidget的build方法中创建一个ListView.builder,该builder接受一个itemBuilder回调函数来构建列表项。你需要维护一个状态变量,例如selectedCardIndex,用于存储当前选中的卡片项索引。
当点击卡片项时,可以通过setState方法更新selectedCardIndex的值,并重新构建Widget树。在ListView.builder的itemBuilder回调函数中,根据selectedCardIndex的值来动态创建ListView中的列表项。
以下是一个简单的示例代码:
import 'package:flutter/material.dart';
class MyCard extends StatefulWidget {
@override
_MyCardState createState() => _MyCardState();
}
class _MyCardState extends State<MyCard> {
int selectedCardIndex = -1; // 初始值为-1,表示没有选中任何卡片项
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: 5, // 假设有5个卡片项
itemBuilder: (context, index) {
return Card(
color: selectedCardIndex == index ? Colors.blue : Colors.white,
child: ListTile(
title: Text('Card $index'),
onTap: () {
setState(() {
selectedCardIndex = index; // 更新选中的卡片项索引
});
},
),
);
},
);
}
}
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Dynamic ListView'),
),
body: MyCard(),
),
));
}
在这个示例中,我们创建了一个MyCard的StatefulWidget,其中维护了一个selectedCardIndex状态变量。在ListView.builder的itemBuilder回调函数中,根据selectedCardIndex的值来设置选中的卡片项的颜色。当点击卡片项时,通过setState方法更新selectedCardIndex的值,从而触发Widget的重建。
领取专属 10元无门槛券
手把手带您无忧上云