有没有办法在不创建自定义 Stepper 的情况下更改 Steps 的颜色?当前步骤为蓝色。
https://docs.flutter.io/flutter/material/Stepper-class.html
https://docs.flutter.io/flutter/material/Step-class.html
有没有办法在不创建自定义 Stepper 的情况下更改 Steps 的颜色?当前步骤为蓝色。
https://docs.flutter.io/flutter/material/Stepper-class.html
https://docs.flutter.io/flutter/material/Step-class.html
将您的步进器包装在主题小部件中。
body: Theme(
data: ThemeData(
accentColor: Colors.orange,
primarySwatch: Colors.orange,
colorScheme: ColorScheme.light(
primary: Colors.orange
)
),
child: Stepper(
steps: []
))
它将步进器的索引颜色以及继续按钮颜色更改为橙色(根据您自己的要求设置颜色)。
步骤的颜色取决于ColorScheme.primary
颜色,要更改它,您必须Stepper
使用Theme
并ThemeData
添加 colorScheme 属性,如下所示:
Theme(
data: ThemeData(
colorScheme: Theme.of(context).colorScheme.copyWith(primary: yourColor),
),
child: Stepper(...),
);
从颤振版本 1.22.0 开始,步进按钮颜色由ThemeData.colorScheme
而不是确定ThemeData.primaryColor
。
出于某种原因, stepper 不会继承您的 mainMaterialApp()
主题。但是你可以用你的Stepper()
小部件包装Theme()
并使用你的主要主题的颜色。
假设您正在使用 的theme
属性MaterialApp()
,并且您已经使用和颜色设置了colorScheme
属性。(从 Flutter 2.5 开始,accentColor 已被正式弃用)primary
secondary
一个基本的colorScheme
例子ThemeData()
:
colorScheme: ColorScheme.fromSwatch().copyWith(primary: Colors.green, secondary: Colors.lightGreen),
要将此 colorScheme 应用到您的Stepper()
小部件,您可以使用复制主主题Theme.of(context)
。
Container(
child: Theme(
data: Theme.of(context),
child: Stepper(
...
),
),
),
只需在该属性上创建新的配色方案data
,就像您将 应用ThemeData()
到您MaterialApp()
的theme
属性一样。
将您的步进器包装在主题小部件中
body: Theme(
data: ThemeData(
primaryColor: Colors.blueAccent
),
child: Stepper(
steps: []
),
)
In Flutter 2 just follow this :
Theme(
data: ThemeData(colorScheme: ColorScheme.fromSwatch().copyWith( primary: Color(0xfffada36),
),
),
在颤振 2 中,只需遵循以下内容: Theme( data: ThemeData( colorScheme: ColorScheme.fromSwatch().copyWith( primary: Color(0xfffada36), ), ),
Ctrl + 右键单击 Step(它会将您带到 Stepper.dart 文件)在这里您可以找到该步骤的所有配置和颜色。对我来说,通过更改此代码更改了继续在此处输入图像描述平面按钮。
如果您查看 Flutter 包材料步进器代码,您会看到该步骤的圆形图标/指示符取决于它是否处于活动状态。
它会colorScheme.primary
在浅色模式下使用您的颜色,或者colorScheme.secondary
在深色模式下使用您的颜色。
当一个步骤不是当前活动的步骤时,它将使用:
浅色模式:colorScheme.onSurface
不透明度为 0.38 的您的值
深色模式:您的colorScheme.background
颜色
因此,您可以使用包裹在步进器周围的自定义主题来覆盖您的默认主题;或者,使用步进器的活动状态来控制小部件预期的当前步骤的颜色。
颤振步进器_circleColor
方法:
Color _circleColor(int index) {
final ColorScheme colorScheme = Theme.of(context).colorScheme;
if (!_isDark()) {
return widget.steps[index].isActive ? colorScheme.primary : colorScheme.onSurface.withOpacity(0.38);
} else {
return widget.steps[index].isActive ? colorScheme.secondary : colorScheme.background;
}
}
光模式下的示例实现:
Theme(
data: Theme.of(context).copyWith(
colorScheme: Theme.of(context)
.colorScheme
.copyWith(onSurface: Colors.red.shade200,
primary: Colors.red)),
child: Stepper());
这是我实现这一目标的方法:
body: Theme(
data: ThemeData(
accentColor: Colors.blueAccent
),
child: Stepper(
steps: []
),
)
基本上将您的步进器包装在一个主题小部件中并将 of 设置accentColor
为ThemeData
您想要的颜色。