访问ThemeData在Flutter中的primarySwatch



我使用两个不同的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中的不同键?否则制作样品有什么意义?

<希望行为/strong>

Container(
color: Theme.of(context).primarySwatch.shade100,
)

bool _isDarkTheme = Theme.of(context).brightness == Brightness.dark;
Container(
color: _isDarkTheme ? lightSwatch.shade100 : darkSwatch.shade100
)

Theme.of(context).primaryColorTheme.of(context).colorScheme.primaryColor型。primarySwatch是继承自ColorMaterialColor。你需要将你的原色设置为Materialolor来获得你的色板的色调:

((Theme.of(context).colorScheme.primary) as MaterialColor).shade900

最新更新