可以更改容器背景颜色/颤动颜色的按钮

Posted

技术标签:

【中文标题】可以更改容器背景颜色/颤动颜色的按钮【英文标题】:Button that can change container background color/color for flutter 【发布时间】:2020-09-25 22:11:44 【问题描述】:

我是 Flutter 的新手,我只是在学习 Flutter 的所有基础知识。我遇到了按钮小部件和按下的功能,我创建了一个简单的容器,其中有一个像这样的按钮

这是容器

Container(

    child: Padding(
    padding: const EdgeInsets.only(top: 25.0, left: 30),
    child: Text("Item 1", style: TextStyle(
    color: Colors.lightBlueAccent,
    fontWeight: FontWeight.bold,
    fontSize: 20,
            ),
           ),
          ),

这是按钮

child: FloatingActionButton(

     onPressed(),
    child: Text("+", style: TextStyle(
    fontSize: 20,
                 ),
                ),
    backgroundColor: Colors.lightBlue,

               ),

我想让按钮具有将容器背景更改为某种颜色的功能,例如蓝色。但我似乎无法在互联网上找到答案,我猜对我来说。有什么我可以应用的方法或我不知道的代码吗?

提前致谢!!

【问题讨论】:

【参考方案1】:

声明默认材质颜色

MaterialColor _color = Colors.green;

在 onPressed() 中改变上面的颜色

Container(
        color: _color,
        child: RaisedButton(onPressed: () 
          setState(() 
            _color = Colors.blue; // This change Container color
          );
        ),
      )

【讨论】:

哇哦!这完全有道理。我必须在类中声明颜色吗?或者我可以在我的 void main runApp 函数中声明它(或任何它被调用的函数)?我完全一无所知。【参考方案2】:

虽然你已经从 jitsm555 得到了很好的答案,但这里是完整的例子,我希望这对你有进一步的帮助。


import 'package:flutter/material.dart';

void main() 
  runApp(ColorChange());


class ColorChange extends StatefulWidget 
  @override
  _ColorChangeState createState() => _ColorChangeState();


class _ColorChangeState extends State<ColorChange> 
  //Initially color is set to yellow which will be changed when button is pressed
  Color color = Colors.yellow;
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("Change Container Color"),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Container(
                width: 300,
                height: 300,
                color: color, //value of color which we will change by pressing buttons
              ),

             /* Below Row of Button when pressed will fire up 
                the setState and the state of our default color variable will 
                change according to Button which is pressed
             */
              Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  RaisedButton(
                    color: Colors.red,
                    child: Text("Red"),
                    onPressed: () 
                      setState(() 
                        color = Colors.red;
                      );
                    ,
                  ),
                  RaisedButton(
                    color: Colors.green,
                    child: Text("Green"),
                    onPressed: () 
                      setState(() 
                        color = Colors.green;
                      );
                    ,
                  ),
                  RaisedButton(
                    color: Colors.blue,
                    child: Text("Blue"),
                    onPressed: () 
                      setState(() 
                        color = Colors.blue;
                      );
                    ,
                  ),
                ],
              ),
            ],
          ),
        ),
      ),
    );
  


输出:

【讨论】:

天哪,非常感谢您,先生,这真的解释了很多。我的意思是jitsm555确实解释了它,但我不明白。再次感谢您,它就像一个魅力! 欢迎 :) 编码愉快。

以上是关于可以更改容器背景颜色/颤动颜色的按钮的主要内容,如果未能解决你的问题,请参考以下文章

出现错误时如何在颤动中更改背景颜色文本框?

颤动如何从 ListTile 更改所选图块的背景颜色

在颤动中更改标签栏的背景颜色

如何在颤动/飞镖的 ListView 项目中更改背景颜色

如何在卡片内的按钮上进行 onclick 事件:更改卡片背景颜色、按钮背景和文本颜色以及文本内容

每次单击按钮时,是不是可以更改背景颜色并以纯 javascript 变回原始颜色?