首页 > 解决方案 > 在充满相同小部件的列表中删除特定小部件

问题描述

当我按下 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,
                    ),
                ),
              ),
            ],
          ),

打开这个看看我到目前为止的照片

标签: flutter

解决方案


推荐阅读