flutter - 在充满相同小部件的列表中删除特定小部件
问题描述
当我按下 GestureDetector 时如何删除特定的小部件?当我按下一个容器时,它会添加一个新的 ClassContainer(黄色容器)并将其存储在 InputPage 类中名为 List classes 的列表中。我现在要做的是,当我按下 GestureDetector 时,我希望删除特定的 ClassContainer(黄色容器)。我在下面链接了一张图片供您查看。我将衷心感谢您的帮助!
这是我的 InputPage 文件中的第一页(如下图链接所示),它将所有不同的类/文件添加在一起。
class InputPage extends StatefulWidget {
@override
_InputPageState createState() => _InputPageState();
}
class _InputPageState extends State<InputPage> {
List<Widget> classes = []; //where the widgets are stored inside
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: SingleChildScrollView(
child: Column(
children: <Widget>[
DisplayFeature(totalUnits: classes.length),
AddNewSubject(
onPressed: (){
setState(() {
classes.add(ClassContainer(
onPressed: (){
setState(() {
classes.removeAt(**I don't know what to do here**);
});
}
));
});
},
),
]..addAll(classes),
),
),
);
}
}
这是在我的 ClassContainer 文件中,其中包含整个容器(黄色容器)。下面只显示文件的一部分
class ClassContainer extends StatefulWidget {
ClassContainer({this.onPressed});
final Function onPressed;
@override
_ClassContainerState createState() => _ClassContainerState();
}
String selectedCredit = 'Regular';
class _ClassContainerState extends State<ClassContainer> {
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Flexible(
flex: 7,
child: TextField(
decoration: InputDecoration(
border: InputBorder.none,
contentPadding: EdgeInsets.only(bottom: 0),
hintText: 'Class',
hintStyle: kClassTitle,
),
style: kClassTitle,
),
),
GestureDetector(
onTap: widget.onPressed,
child: Container(
alignment: Alignment.center,
child: Icon(
Icons.restore_from_trash,
color: Colors.black,
size: 25,
),
),
),
],
),