繁体   English   中英

如何在flutter中创建自定义复选框列表?

[英]How to create a list of custom checkboxes in flutter?

我想在 flutter 中创建一个自定义复选框列表(自定义形状和颜色 + 图标),它可以在点击时更改它们的状态,到目前为止我已经创建了复选框列表,但是当我点击其中一个时,它们都会改变他们的状态。 我希望只有我点击的复选框才能改变它的状态。

 Widget checkbox(){
    return InkWell(                ///CHECKBOX
      onTap: () {
        setState(() {
          this.value = !this.value;
        });
      },
      child: Container(
        decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.white),
        child:
        value ? Container(
            padding: EdgeInsets.all(5.0),
            decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.green),
            child: Icon(
              Icons.check,
              size: 20.0,
              color: Colors.white,
            )
        )
            :
        Container(
          decoration: BoxDecoration(shape: BoxShape.circle, color: Colors.black, ),
          padding: EdgeInsets.all(0.0),
          child: Icon(
            Icons.circle,
            size: 30.0,
            color: Colors.white,
          ),
        ),

      ),
    );

编辑:

  1. 为此,我使用了 Inkwell 类
  2. 'value' 被初始化为 false

提前致谢

将您的复选框放在单独的有状态小部件中,以便它可以控制自己的状态

class MyCheckbox extends StatefulWidget {
MyCheckbox({Key key}) : super(key: key);

@override
_MyCheckboxState createState() => _MyCheckboxState();
}

class _MyCheckboxState extends State<MyCheckbox> {
 bool value = false;

 @override
 Widget build(BuildContext context) {
    return InkWell(

    ///CHECKBOX
    onTap: () {
      setState(() {
        this.value = !this.value;
      });
    },
    child: Container(
      decoration:
          BoxDecoration(shape: BoxShape.circle, color: Colors.white),
      child: value
          ? Container(
              padding: EdgeInsets.all(5.0),
              decoration: BoxDecoration(
                  shape: BoxShape.circle, color: Colors.green),
              child: Icon(
                Icons.check,
                size: 20.0,
                color: Colors.white,
              ))
          : Container(
              decoration: BoxDecoration(
                shape: BoxShape.circle,
                color: Colors.black,
              ),
              padding: EdgeInsets.all(0.0),
              child: Icon(
                Icons.circle,
                size: 30.0,
                color: Colors.white,
              ),
            ),
    ));
  }
 }

当你调用你的小部件时,添加key: UniqueKey(),以确保一切按预期工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM