Open13
Design of Flutter
ピン留めされたアイテム

ピン留めされたアイテム

ピン留めされたアイテム

ThemeDataでのcolorの設定パターン
colorSchemeSeed
単一の色から Material 3 のカラースキームを自動生成したい場合に使用します
より簡単に一貫したテーマを作成できます
Material 3 (Material You) のデザイン言語を活用したい場合に最適です
ThemeData.from(colorScheme: ColorScheme.fromSeed(seedColor: myColor))の短縮形です
colorScheme
カラースキームをより細かく制御したい場合に使用します
すべての色を自分で指定したい場合に適しています
カスタムブランディングに適しており、より細かい調整が可能です
- ColorScheme.fromSeed
- ColorScheme.fromSwatch
非推奨
- primarySwatch
- primaryColor
ピン留めされたアイテム

ピン留めされたアイテム

ピン留めされたアイテム

ピン留めされたアイテム

補色

colorScheme

カラーチャート

以下は等価
return ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
colorSchemeSeed: Colors.indigo,
);
return ThemeData.dark(useMaterial3: true).copyWith(
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.indigo,
brightness: Brightness.dark,
),
);
理由
if (colorSchemeSeed != null || useMaterial3) {
if (colorSchemeSeed != null) {
colorScheme = ColorScheme.fromSeed(seedColor: colorSchemeSeed, brightness: effectiveBrightness);
}

colorSchemeSeedを指定した時の色の作られ方
class ThemeData with Diagnosticable {
factory ThemeData({
...
if (colorSchemeSeed != null || useMaterial3) {
if (colorSchemeSeed != null) {
colorScheme = ColorScheme.fromSeed(seedColor: colorSchemeSeed, brightness: effectiveBrightness);
}
factory ColorScheme.fromSeed({
required Color seedColor,
Brightness brightness = Brightness.light,
Color? primary,
...
}) {
final Scheme scheme;
switch (brightness) {
case Brightness.light:
scheme = Scheme.light(seedColor.value);
case Brightness.dark:
scheme = Scheme.dark(seedColor.value);
}
return ColorScheme(
primary: primary ?? Color(scheme.primary),
static Scheme light(int color) => lightFromCorePalette(CorePalette.of(color));
static Scheme lightFromCorePalette(CorePalette palette) => Scheme(
primary: palette.primary.get(40),
onPrimary: palette.primary.get(100),
primaryContainer: palette.primary.get(90),
onPrimaryContainer: palette.primary.get(10),
secondary: palette.secondary.get(40),
onSecondary: palette.secondary.get(100),
secondaryContainer: palette.secondary.get(90),
onSecondaryContainer: palette.secondary.get(10),
tertiary: palette.tertiary.get(40),
onTertiary: palette.tertiary.get(100),
tertiaryContainer: palette.tertiary.get(90),
onTertiaryContainer: palette.tertiary.get(10),
error: palette.error.get(40),
onError: palette.error.get(100),
errorContainer: palette.error.get(90),
onErrorContainer: palette.error.get(10),
background: palette.neutral.get(99),
onBackground: palette.neutral.get(10),
surface: palette.neutral.get(99),
onSurface: palette.neutral.get(10),
surfaceVariant: palette.neutralVariant.get(90),
onSurfaceVariant: palette.neutralVariant.get(30),
outline: palette.neutralVariant.get(50),
outlineVariant: palette.neutralVariant.get(80),
shadow: palette.neutral.get(0),
scrim: palette.neutral.get(0),
inverseSurface: palette.neutral.get(20),
inverseOnSurface: palette.neutral.get(95),
inversePrimary: palette.primary.get(80),
);

チャート