Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 什么是材料状态属性<;颜色>;?_Flutter - Fatal编程技术网

Flutter 什么是材料状态属性<;颜色>;?

Flutter 什么是材料状态属性<;颜色>;?,flutter,Flutter,按钮样式中的MaterialStateProperty是什么 ThemeData( textButtonTheme: TextButtonThemeData( style: ButtonStyle( backgroundColor: , //? ), ), ), 它用于根据按钮的当前交互状态计算值,按钮可以悬停、按下、聚焦等,。。。() 如果需要固定值,可以使用MaterialStateProperty.all(您的值),此值将应用于所有按钮状态 您可以在此

按钮样式中的MaterialStateProperty是什么

ThemeData(
  textButtonTheme: TextButtonThemeData(
    style: ButtonStyle(
      backgroundColor: , //?
    ),
  ),
),

它用于根据按钮的当前交互状态计算值,按钮可以悬停、按下、聚焦等,。。。()

如果需要固定值,可以使用
MaterialStateProperty.all(您的值)
,此值将应用于所有按钮状态


您可以在此处找到更多信息:

类的接口,这些类根据小部件的交互“状态”(定义为一组MaterialStates)解析为类型为
T
的值

材质状态属性表示依赖于小部件材质“状态”的值。状态编码为一组
MaterialState
值,如
MaterialState.focused
MaterialState.hovered
MaterialState.pressed
。例如,
InkWell.OverlyColor
定义了按下、聚焦或悬停时填充墨水池的颜色(“飞溅颜色”)。墨水池使用覆盖颜色的“解析”方法计算墨水池当前状态的颜色

ButtonStyle
,用于配置按钮的外观,如
TextButton
ElevatedButton
OutlinedButton
,具有许多材质状态属性。按钮小部件跟踪其当前材质状态,并在需要其值时解析按钮样式的材质状态属性

代码示例:

小部件构建(构建上下文){
颜色getColor(设置状态){
常量集属性={
MaterialState.pressed,
材料状态悬停,
材料状态聚焦,
};
if(states.any(interactiveestate.contains)){
返回颜色。蓝色;
}
返回颜色。红色;
}
返回文本按钮(
样式:钮扣样式(
foregroundColor:MaterialStateProperty.resolveWith(getColor),
),
按下:(){},
子项:Text('TextButton'),
);
}

要获得更多信息,您可以查看由Flatter团队制作的官方材质状态属性。

我假设您想知道如何为ButtonStyle小部件的backgroundColor参数指定颜色。如果是这种情况,只需键入如下内容:

backgroundColor: MaterialStateProperty.all(Colors.green),


这回答了你的问题吗?这太可怕了。有没有任何情况下你会做一些不同的事情呢?如果没有,那么为什么会出现这种可怕的语法?是的,当您想根据按钮的状态为按钮设置某种颜色时,例如,一种颜色表示正常状态,另一种颜色表示悬停状态,另一种颜色表示按下状态,等等。但是对于短代码和静态代码,请使用
.all
将颜色应用于所有这些状态。哦,您为我们提供了一个非常好的答案,谢谢!听到这个我很高兴!非常感谢。
backgroundColor: MaterialStateProperty.all(Color(0xFF5D5F6E)),