我正在使用两个不同ThemeData
的类在暗模式和亮模式之间切换。但是,我使用的配色方案要求我访问我定义的样本内的颜色。
static const int _greyPrimaryValue = 0xFF1E1E1E;
static const MaterialColor darkSwatch = MaterialColor(
_greyPrimaryValue,
<int, Color>{
0: Color(0xFF000000),
50: Color(_greyPrimaryValue),
100: Color(0xFF222222),
200: Color(0xFF242424),
300: Color(0xFF272727),
400: Color(0xFF2C2C2C),
500: Color(0xFF2E2E2E),
600: Color(0xFF333333),
700: Color(0xFF353535),
800: Color(0xFF383838),
900: Color(0xFF424242),
},
);
get darkTheme => ThemeData(
primaryColor: darkSwatch.shade50,
primarySwatch: darkSwatch,
)
有没有办法访问我的 primarySwatch 中的值?我可以Theme.of(context)
用来访问不同的值,例如primaryColor
. 有没有办法访问我在样本中定义的颜色,而不是将它们分配给 ThemeData 中的不同键?否则创建样本有什么意义?
通缉行为
Container(
color: Theme.of(context).primarySwatch.shade100,
)
现在的情况
bool _isDarkTheme = Theme.of(context).brightness == Brightness.dark;
Container(
color: _isDarkTheme ? lightSwatch.shade100 : darkSwatch.shade100
)