代码之家  ›  专栏  ›  技术社区  ›  Malak

为参数的|省道颤振指定颜色值

  •  0
  • Malak  · 技术社区  · 4 年前

    我有GridView,其中有40个按钮,这是其中之一:

    MyCalcButton(
           //clr: Colors.amber
             myNum: "2",
             funkcja: () {},
    ),
    

    myNum funkcja 还有一个是不需要的-> clr: . 现在我想改变这个的值(颜色) clr 参数中的一些按钮,而不是每个。有没有办法将这种颜色分配给其中一些,并给其余部分一种静态颜色?有必要给这个一个一个的颜色吗 相干激光雷达 ??

    这个按钮有一个类

    String myNum = "";
    
    class MyCalcButton extends StatefulWidget {
      const MyCalcButton({Key? key, this.myNum, required this.funkcja, this.clr})
          : super(key: key);
    
      final Function funkcja;
      final myNum;
      final Color? clr;
    
      @override
      State<MyCalcButton> createState() => _MyCalcButtonState();
    }
    
    class _MyCalcButtonState extends State<MyCalcButton> {
      @override
      Widget build(BuildContext context) {
        return ElevatedButton(
          onPressed: () {
            widget.funkcja();
          },
          style: ElevatedButton.styleFrom(
    //maybe here i can change something to do this?? I dont know
            primary: const Color.fromARGB(255, 195, 204, 203),
          ),
          child: Center(
              child: Text(
            widget.myNum.toString(),
          )),
        );
      }
    }
    
    

    app

    1 回复  |  直到 4 年前
        1
  •  1
  •   Md. Yeasin Sheikh    4 年前

    您可以在参数上提供默认值,在您的示例中为 clr

    class MyCalcButton extends StatefulWidget {
      const MyCalcButton({
        Key? key,
        this.myNum,
        required this.funkcja,
        this.clr =const Color.fromARGB(255, 195, 204, 203),
      }) : super(key: key);
    

    然后像这样使用 primary: widget.clr, .


    或者只在null上提供默认值 相干激光雷达 大小写

    primary: widget.clr ?? const Color.fromARGB(255, 195, 204, 203),
    

    如果要在此状态下更新颜色。可以在状态类内创建局部变量。

    class _MyCalcButtonState extends State<MyCalcButton> {
      late Color? color = widget.clr;
    
      @override
      Widget build(BuildContext context) {
        return ElevatedButton(
          onPressed: () {
            widget.funkcja();
          },
          style: ElevatedButton.styleFrom(
            primary: color,
          ),
          child: Center(
              child: Text(
            widget.myNum.toString(),
          )),
        );
      }
    }