mirror of
https://github.com/flutter/samples.git
synced 2025-11-08 22:09:06 +00:00
Update ColorScheme to show the newly added color roles (#2299)
This PR is to fix #2289 and add newly added `ColorScheme` roles since https://github.com/flutter/flutter/pull/144273 --------- Co-authored-by: Parker Lougheed <parlough@gmail.com>
This commit is contained in:
@@ -55,7 +55,8 @@ class ColorPalettesScreen extends StatelessWidget {
|
|||||||
const TextSpan(
|
const TextSpan(
|
||||||
text: 'To create color schemes based on a '
|
text: 'To create color schemes based on a '
|
||||||
'platform\'s implementation of dynamic color, '
|
'platform\'s implementation of dynamic color, '
|
||||||
'use the '),
|
'use the ',
|
||||||
|
),
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: 'dynamic_color',
|
text: 'dynamic_color',
|
||||||
style: const TextStyle(decoration: TextDecoration.underline),
|
style: const TextStyle(decoration: TextDecoration.underline),
|
||||||
@@ -75,7 +76,8 @@ class ColorPalettesScreen extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return Expanded(
|
return Expanded(
|
||||||
child: LayoutBuilder(builder: (context, constraints) {
|
child: LayoutBuilder(
|
||||||
|
builder: (context, constraints) {
|
||||||
if (constraints.maxWidth < narrowScreenWidthThreshold) {
|
if (constraints.maxWidth < narrowScreenWidthThreshold) {
|
||||||
return SingleChildScrollView(
|
return SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
@@ -123,7 +125,8 @@ class ColorPalettesScreen extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}),
|
},
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -136,7 +139,7 @@ class ColorSchemeView extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: <Widget>[
|
||||||
ColorGroup(
|
ColorGroup(
|
||||||
children: [
|
children: [
|
||||||
ColorChip(
|
ColorChip(
|
||||||
@@ -162,6 +165,31 @@ class ColorSchemeView extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
divider,
|
divider,
|
||||||
|
ColorGroup(
|
||||||
|
children: [
|
||||||
|
ColorChip(
|
||||||
|
label: 'primaryFixed',
|
||||||
|
color: colorScheme.primaryFixed,
|
||||||
|
onColor: colorScheme.onPrimaryFixed,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'onPrimaryFixed',
|
||||||
|
color: colorScheme.onPrimaryFixed,
|
||||||
|
onColor: colorScheme.primaryFixed,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'primaryFixedDim',
|
||||||
|
color: colorScheme.primaryFixedDim,
|
||||||
|
onColor: colorScheme.onPrimaryFixedVariant,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'onPrimaryFixedVariant',
|
||||||
|
color: colorScheme.onPrimaryFixedVariant,
|
||||||
|
onColor: colorScheme.primaryFixedDim,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
divider,
|
||||||
ColorGroup(
|
ColorGroup(
|
||||||
children: [
|
children: [
|
||||||
ColorChip(
|
ColorChip(
|
||||||
@@ -187,6 +215,31 @@ class ColorSchemeView extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
divider,
|
divider,
|
||||||
|
ColorGroup(
|
||||||
|
children: [
|
||||||
|
ColorChip(
|
||||||
|
label: 'secondaryFixed',
|
||||||
|
color: colorScheme.secondaryFixed,
|
||||||
|
onColor: colorScheme.onSecondaryFixed,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'onSecondaryFixed',
|
||||||
|
color: colorScheme.onSecondaryFixed,
|
||||||
|
onColor: colorScheme.secondaryFixed,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'secondaryFixedDim',
|
||||||
|
color: colorScheme.secondaryFixedDim,
|
||||||
|
onColor: colorScheme.onSecondaryFixedVariant,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'onSecondaryFixedVariant',
|
||||||
|
color: colorScheme.onSecondaryFixedVariant,
|
||||||
|
onColor: colorScheme.secondaryFixedDim,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
divider,
|
||||||
ColorGroup(
|
ColorGroup(
|
||||||
children: [
|
children: [
|
||||||
ColorChip(
|
ColorChip(
|
||||||
@@ -212,6 +265,31 @@ class ColorSchemeView extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
divider,
|
divider,
|
||||||
|
ColorGroup(
|
||||||
|
children: [
|
||||||
|
ColorChip(
|
||||||
|
label: 'tertiaryFixed',
|
||||||
|
color: colorScheme.tertiaryFixed,
|
||||||
|
onColor: colorScheme.onTertiaryFixed,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'onTertiaryFixed',
|
||||||
|
color: colorScheme.onTertiaryFixed,
|
||||||
|
onColor: colorScheme.tertiaryFixed,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'tertiaryFixedDim',
|
||||||
|
color: colorScheme.tertiaryFixedDim,
|
||||||
|
onColor: colorScheme.onTertiaryFixedVariant,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'onTertiaryFixedVariant',
|
||||||
|
color: colorScheme.onTertiaryFixedVariant,
|
||||||
|
onColor: colorScheme.tertiaryFixedDim,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
divider,
|
||||||
ColorGroup(
|
ColorGroup(
|
||||||
children: [
|
children: [
|
||||||
ColorChip(
|
ColorChip(
|
||||||
@@ -239,30 +317,56 @@ class ColorSchemeView extends StatelessWidget {
|
|||||||
divider,
|
divider,
|
||||||
ColorGroup(
|
ColorGroup(
|
||||||
children: [
|
children: [
|
||||||
|
ColorChip(
|
||||||
|
label: 'surfaceDim',
|
||||||
|
color: colorScheme.surfaceDim,
|
||||||
|
onColor: colorScheme.onSurface,
|
||||||
|
),
|
||||||
ColorChip(
|
ColorChip(
|
||||||
label: 'surface',
|
label: 'surface',
|
||||||
color: colorScheme.surface,
|
color: colorScheme.surface,
|
||||||
onColor: colorScheme.onSurface,
|
onColor: colorScheme.onSurface,
|
||||||
),
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'surfaceBright',
|
||||||
|
color: colorScheme.surfaceBright,
|
||||||
|
onColor: colorScheme.onSurface,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'surfaceContainerLowest',
|
||||||
|
color: colorScheme.surfaceContainerLowest,
|
||||||
|
onColor: colorScheme.onSurface,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'surfaceContainerLow',
|
||||||
|
color: colorScheme.surfaceContainerLow,
|
||||||
|
onColor: colorScheme.onSurface,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'surfaceContainer',
|
||||||
|
color: colorScheme.surfaceContainer,
|
||||||
|
onColor: colorScheme.onSurface,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'surfaceContainerHigh',
|
||||||
|
color: colorScheme.surfaceContainerHigh,
|
||||||
|
onColor: colorScheme.onSurface,
|
||||||
|
),
|
||||||
|
ColorChip(
|
||||||
|
label: 'surfaceContainerHighest',
|
||||||
|
color: colorScheme.surfaceContainerHighest,
|
||||||
|
onColor: colorScheme.onSurface,
|
||||||
|
),
|
||||||
ColorChip(
|
ColorChip(
|
||||||
label: 'onSurface',
|
label: 'onSurface',
|
||||||
color: colorScheme.onSurface,
|
color: colorScheme.onSurface,
|
||||||
onColor: colorScheme.surface,
|
onColor: colorScheme.surface,
|
||||||
),
|
),
|
||||||
ColorChip(
|
ColorChip(
|
||||||
label: 'surfaceContainerHighest',
|
label: 'onSurfaceVariant',
|
||||||
color: colorScheme.surfaceContainerHighest,
|
color: colorScheme.onSurfaceVariant,
|
||||||
onColor: colorScheme.surfaceContainerHighest,
|
onColor: colorScheme.surfaceContainerHighest,
|
||||||
),
|
),
|
||||||
ColorChip(
|
|
||||||
label: 'surfaceContainerHighest',
|
|
||||||
color: colorScheme.surfaceContainerHighest,
|
|
||||||
onColor: colorScheme.surfaceContainerHighest,
|
|
||||||
),
|
|
||||||
ColorChip(
|
|
||||||
label: 'surfaceTint',
|
|
||||||
color: colorScheme.surfaceTint,
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
divider,
|
divider,
|
||||||
@@ -271,16 +375,13 @@ class ColorSchemeView extends StatelessWidget {
|
|||||||
ColorChip(
|
ColorChip(
|
||||||
label: 'outline',
|
label: 'outline',
|
||||||
color: colorScheme.outline,
|
color: colorScheme.outline,
|
||||||
|
onColor: null,
|
||||||
),
|
),
|
||||||
ColorChip(
|
ColorChip(
|
||||||
label: 'outlineVariant',
|
label: 'shadow',
|
||||||
color: colorScheme.outlineVariant,
|
color: colorScheme.shadow,
|
||||||
|
onColor: null,
|
||||||
),
|
),
|
||||||
],
|
|
||||||
),
|
|
||||||
divider,
|
|
||||||
ColorGroup(
|
|
||||||
children: [
|
|
||||||
ColorChip(
|
ColorChip(
|
||||||
label: 'inverseSurface',
|
label: 'inverseSurface',
|
||||||
color: colorScheme.inverseSurface,
|
color: colorScheme.inverseSurface,
|
||||||
@@ -298,30 +399,6 @@ class ColorSchemeView extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
divider,
|
|
||||||
ColorGroup(
|
|
||||||
children: [
|
|
||||||
ColorChip(
|
|
||||||
label: 'background',
|
|
||||||
color: colorScheme.surface,
|
|
||||||
onColor: colorScheme.onSurface,
|
|
||||||
),
|
|
||||||
ColorChip(
|
|
||||||
label: 'onSurface',
|
|
||||||
color: colorScheme.onSurface,
|
|
||||||
onColor: colorScheme.surface,
|
|
||||||
),
|
|
||||||
ColorChip(
|
|
||||||
label: 'scrim',
|
|
||||||
color: colorScheme.scrim,
|
|
||||||
),
|
|
||||||
ColorChip(
|
|
||||||
label: 'shadow',
|
|
||||||
color: colorScheme.shadow,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
divider,
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -330,7 +407,7 @@ class ColorSchemeView extends StatelessWidget {
|
|||||||
class ColorGroup extends StatelessWidget {
|
class ColorGroup extends StatelessWidget {
|
||||||
const ColorGroup({super.key, required this.children});
|
const ColorGroup({super.key, required this.children});
|
||||||
|
|
||||||
final List<Widget> children;
|
final List<ColorChip> children;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@@ -311,9 +311,8 @@ class _ColorSeedButton extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return PopupMenuButton(
|
return PopupMenuButton(
|
||||||
icon: Icon(
|
icon: const Icon(
|
||||||
Icons.palette_outlined,
|
Icons.palette_outlined,
|
||||||
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
|
||||||
),
|
),
|
||||||
tooltip: 'Select a seed color',
|
tooltip: 'Select a seed color',
|
||||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
|
||||||
@@ -365,16 +364,14 @@ class _ColorImageButton extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return PopupMenuButton(
|
return PopupMenuButton(
|
||||||
icon: Icon(
|
icon: const Icon(
|
||||||
Icons.image_outlined,
|
Icons.image_outlined,
|
||||||
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
|
||||||
),
|
),
|
||||||
tooltip: 'Select a color extraction image',
|
tooltip: 'Select a color extraction image',
|
||||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
|
||||||
itemBuilder: (context) {
|
itemBuilder: (context) {
|
||||||
return List.generate(ColorImageProvider.values.length, (index) {
|
return List.generate(ColorImageProvider.values.length, (index) {
|
||||||
ColorImageProvider currentImageProvider =
|
final currentImageProvider = ColorImageProvider.values[index];
|
||||||
ColorImageProvider.values[index];
|
|
||||||
|
|
||||||
return PopupMenuItem(
|
return PopupMenuItem(
|
||||||
value: index,
|
value: index,
|
||||||
@@ -392,8 +389,7 @@ class _ColorImageButton extends StatelessWidget {
|
|||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: BorderRadius.circular(8.0),
|
borderRadius: BorderRadius.circular(8.0),
|
||||||
child: Image(
|
child: Image(
|
||||||
image: NetworkImage(
|
image: NetworkImage(currentImageProvider.url),
|
||||||
ColorImageProvider.values[index].url),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// ignore_for_file: avoid_types_on_closure_parameters
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:material_3_demo/color_palettes_screen.dart';
|
import 'package:material_3_demo/color_palettes_screen.dart';
|
||||||
@@ -70,6 +69,6 @@ void main() {
|
|||||||
));
|
));
|
||||||
expect(find.text('Light ColorScheme'), findsOneWidget);
|
expect(find.text('Light ColorScheme'), findsOneWidget);
|
||||||
expect(find.text('Dark ColorScheme'), findsOneWidget);
|
expect(find.text('Dark ColorScheme'), findsOneWidget);
|
||||||
expect(find.byType(ColorGroup, skipOffstage: false), findsNWidgets(16));
|
expect(find.byType(ColorGroup, skipOffstage: false), findsNWidgets(18));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user