mirror of
https://github.com/flutter/samples.git
synced 2025-11-08 13:58:47 +00:00
Updates for 3.22 (#2266)
Updates for 3.22 --------- Co-authored-by: Brett Morgan <brettmorgan@google.com> Co-authored-by: Qun Cheng <chengqunq@gmail.com> Co-authored-by: Brett Morgan <brett.morgan@gmail.com>
This commit is contained in:
@@ -17,8 +17,7 @@ void main() {
|
||||
|
||||
// Get the initial color of the button.
|
||||
ElevatedButton button = tester.widget(find.byType(ElevatedButton));
|
||||
MaterialStateProperty<Color?>? initialColor =
|
||||
button.style!.backgroundColor;
|
||||
WidgetStateProperty<Color?>? initialColor = button.style!.backgroundColor;
|
||||
|
||||
// Tap the button.
|
||||
await tester.tap(find.byType(ElevatedButton));
|
||||
@@ -26,8 +25,7 @@ void main() {
|
||||
|
||||
// Get the updated color of the button.
|
||||
button = tester.widget(find.byType(ElevatedButton));
|
||||
MaterialStateProperty<Color?>? updatedColor =
|
||||
button.style!.backgroundColor;
|
||||
WidgetStateProperty<Color?>? updatedColor = button.style!.backgroundColor;
|
||||
|
||||
// Check if the color has changed.
|
||||
expect(initialColor, isNot(updatedColor));
|
||||
@@ -38,8 +36,7 @@ void main() {
|
||||
|
||||
// Get the initial color of the button.
|
||||
ElevatedButton button = tester.widget(find.byType(ElevatedButton));
|
||||
MaterialStateProperty<Color?>? initialColor =
|
||||
button.style!.backgroundColor;
|
||||
WidgetStateProperty<Color?>? initialColor = button.style!.backgroundColor;
|
||||
|
||||
// Tap the button to trigger the animation but don't wait for it to finish.
|
||||
await tester.tap(find.byType(ElevatedButton));
|
||||
@@ -48,8 +45,7 @@ void main() {
|
||||
|
||||
// Check that the color has changed but not to the final color.
|
||||
button = tester.widget(find.byType(ElevatedButton));
|
||||
MaterialStateProperty<Color?>? changedColor =
|
||||
button.style!.backgroundColor;
|
||||
WidgetStateProperty<Color?>? changedColor = button.style!.backgroundColor;
|
||||
expect(initialColor, isNot(changedColor));
|
||||
|
||||
// Wait for the animation to finish.
|
||||
@@ -57,7 +53,7 @@ void main() {
|
||||
|
||||
// Check that the color has changed to the final color.
|
||||
button = tester.widget(find.byType(ElevatedButton));
|
||||
MaterialStateProperty<Color?>? finalColor = button.style!.backgroundColor;
|
||||
WidgetStateProperty<Color?>? finalColor = button.style!.backgroundColor;
|
||||
expect(changedColor, isNot(finalColor));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -39,7 +39,7 @@ class MessageWidget extends StatelessWidget {
|
||||
decoration: BoxDecoration(
|
||||
color: isFromUser
|
||||
? Theme.of(context).colorScheme.primaryContainer
|
||||
: Theme.of(context).colorScheme.surfaceVariant,
|
||||
: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
borderRadius: BorderRadius.circular(18),
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(
|
||||
|
||||
@@ -86,10 +86,8 @@ abstract class AppTheme {
|
||||
error: AppColors.red200,
|
||||
onPrimary: AppColors.black900,
|
||||
onSecondary: AppColors.black900,
|
||||
onBackground: AppColors.white50,
|
||||
onSurface: AppColors.white50,
|
||||
onError: AppColors.black900,
|
||||
background: AppColors.black900Alpha087,
|
||||
),
|
||||
textTheme: _buildReplyDarkTextTheme(base.textTheme),
|
||||
scaffoldBackgroundColor: AppColors.black900,
|
||||
|
||||
@@ -31,16 +31,16 @@ class TextStyles {
|
||||
class ButtonStyles {
|
||||
static ButtonStyle style() {
|
||||
return ButtonStyle(
|
||||
fixedSize: MaterialStateProperty.resolveWith<Size>((states) {
|
||||
fixedSize: WidgetStateProperty.resolveWith<Size>((states) {
|
||||
return const Size(100, 36);
|
||||
}),
|
||||
shape: MaterialStateProperty.resolveWith<OutlinedBorder>((states) {
|
||||
shape: WidgetStateProperty.resolveWith<OutlinedBorder>((states) {
|
||||
return const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(18)));
|
||||
}),
|
||||
overlayColor: null,
|
||||
backgroundColor: MaterialStateProperty.resolveWith<Color?>((states) {
|
||||
if (states.contains(MaterialState.hovered)) {
|
||||
backgroundColor: WidgetStateProperty.resolveWith<Color?>((states) {
|
||||
if (states.contains(WidgetState.hovered)) {
|
||||
return Colors.black; // Hovered bg (for desktop with mouse)
|
||||
}
|
||||
return Colors.grey[600]; // Default bg
|
||||
|
||||
@@ -266,7 +266,7 @@ class MyApp extends StatelessWidget {
|
||||
theme: ThemeData.from(
|
||||
colorScheme: ColorScheme.fromSeed(
|
||||
seedColor: palette.darkPen,
|
||||
background: palette.backgroundMain,
|
||||
surface: palette.backgroundMain,
|
||||
),
|
||||
textTheme: TextTheme(
|
||||
bodyMedium: TextStyle(
|
||||
|
||||
@@ -39,7 +39,7 @@ class MessageWidget extends StatelessWidget {
|
||||
decoration: BoxDecoration(
|
||||
color: isFromUser
|
||||
? Theme.of(context).colorScheme.primaryContainer
|
||||
: Theme.of(context).colorScheme.surfaceVariant,
|
||||
: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
borderRadius: BorderRadius.circular(18),
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(
|
||||
|
||||
@@ -250,14 +250,14 @@ class ColorSchemeView extends StatelessWidget {
|
||||
onColor: colorScheme.surface,
|
||||
),
|
||||
ColorChip(
|
||||
label: 'surfaceVariant',
|
||||
color: colorScheme.surfaceVariant,
|
||||
onColor: colorScheme.onSurfaceVariant,
|
||||
label: 'surfaceContainerHighest',
|
||||
color: colorScheme.surfaceContainerHighest,
|
||||
onColor: colorScheme.surfaceContainerHighest,
|
||||
),
|
||||
ColorChip(
|
||||
label: 'onSurfaceVariant',
|
||||
color: colorScheme.onSurfaceVariant,
|
||||
onColor: colorScheme.surfaceVariant,
|
||||
label: 'surfaceContainerHighest',
|
||||
color: colorScheme.surfaceContainerHighest,
|
||||
onColor: colorScheme.surfaceContainerHighest,
|
||||
),
|
||||
ColorChip(
|
||||
label: 'surfaceTint',
|
||||
@@ -303,13 +303,13 @@ class ColorSchemeView extends StatelessWidget {
|
||||
children: [
|
||||
ColorChip(
|
||||
label: 'background',
|
||||
color: colorScheme.background,
|
||||
onColor: colorScheme.onBackground,
|
||||
color: colorScheme.surface,
|
||||
onColor: colorScheme.onSurface,
|
||||
),
|
||||
ColorChip(
|
||||
label: 'onBackground',
|
||||
color: colorScheme.onBackground,
|
||||
onColor: colorScheme.background,
|
||||
label: 'onSurface',
|
||||
color: colorScheme.onSurface,
|
||||
onColor: colorScheme.surface,
|
||||
),
|
||||
ColorChip(
|
||||
label: 'scrim',
|
||||
|
||||
@@ -501,7 +501,7 @@ class Cards extends StatelessWidget {
|
||||
SizedBox(
|
||||
width: cardWidth,
|
||||
child: Card(
|
||||
color: Theme.of(context).colorScheme.surfaceVariant,
|
||||
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
elevation: 0,
|
||||
child: Container(
|
||||
padding: const EdgeInsets.fromLTRB(10, 5, 5, 10),
|
||||
@@ -849,9 +849,9 @@ class _SwitchRowState extends State<SwitchRow> {
|
||||
bool value0 = false;
|
||||
bool value1 = true;
|
||||
|
||||
final MaterialStateProperty<Icon?> thumbIcon =
|
||||
MaterialStateProperty.resolveWith<Icon?>((states) {
|
||||
if (states.contains(MaterialState.selected)) {
|
||||
final WidgetStateProperty<Icon?> thumbIcon =
|
||||
WidgetStateProperty.resolveWith<Icon?>((states) {
|
||||
if (states.contains(WidgetState.selected)) {
|
||||
return const Icon(Icons.check);
|
||||
}
|
||||
return const Icon(Icons.close);
|
||||
@@ -2508,7 +2508,10 @@ class ComponentGroupDecoration extends StatelessWidget {
|
||||
child: Card(
|
||||
margin: EdgeInsets.zero,
|
||||
elevation: 0,
|
||||
color: Theme.of(context).colorScheme.surfaceVariant.withOpacity(0.3),
|
||||
color: Theme.of(context)
|
||||
.colorScheme
|
||||
.surfaceContainerHighest
|
||||
.withOpacity(0.3),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 20.0),
|
||||
child: Center(
|
||||
|
||||
@@ -313,7 +313,7 @@ class _ColorSeedButton extends StatelessWidget {
|
||||
return PopupMenuButton(
|
||||
icon: Icon(
|
||||
Icons.palette_outlined,
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant,
|
||||
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
),
|
||||
tooltip: 'Select a seed color',
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
|
||||
@@ -367,7 +367,7 @@ class _ColorImageButton extends StatelessWidget {
|
||||
return PopupMenuButton(
|
||||
icon: Icon(
|
||||
Icons.image_outlined,
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant,
|
||||
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
),
|
||||
tooltip: 'Select a color extraction image',
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
|
||||
|
||||
@@ -320,7 +320,7 @@ void main() {
|
||||
|
||||
testWidgets('Color theme changes when a color is selected from menu',
|
||||
(tester) async {
|
||||
Color m3BaseColor = const Color(0xff6750a4);
|
||||
Color m3BaseColor = const Color(0xff65558f);
|
||||
await tester.pumpWidget(Container());
|
||||
await tester.pumpWidget(const App());
|
||||
await tester.pump();
|
||||
|
||||
@@ -58,8 +58,8 @@ class _AddButton extends StatelessWidget {
|
||||
cart.add(item);
|
||||
},
|
||||
style: ButtonStyle(
|
||||
overlayColor: MaterialStateProperty.resolveWith<Color?>((states) {
|
||||
if (states.contains(MaterialState.pressed)) {
|
||||
overlayColor: WidgetStateProperty.resolveWith<Color?>((states) {
|
||||
if (states.contains(WidgetState.pressed)) {
|
||||
return Theme.of(context).primaryColor;
|
||||
}
|
||||
return null; // Defer to the widget's default.
|
||||
|
||||
@@ -16,8 +16,7 @@ declare -ar PROJECT_NAMES=(
|
||||
"add_to_app/prebuilt_module/flutter_module"
|
||||
"analysis_defaults"
|
||||
"android_splash_screen"
|
||||
# TODO: 'MaterialStateProperty' is deprecated and shouldn't be used.
|
||||
# "animations"
|
||||
"animations"
|
||||
"background_isolate_channels"
|
||||
"code_sharing/client"
|
||||
"code_sharing/server"
|
||||
@@ -26,42 +25,36 @@ declare -ar PROJECT_NAMES=(
|
||||
"deeplink_store_example"
|
||||
"desktop_photo_search/fluent_ui"
|
||||
"desktop_photo_search/material"
|
||||
# TODO: 'surfaceVariant' is deprecated and shouldn't be used.
|
||||
# "dynamic_theme"
|
||||
"dynamic_theme"
|
||||
"experimental/federated_plugin/federated_plugin"
|
||||
"experimental/federated_plugin/federated_plugin/example"
|
||||
"experimental/federated_plugin/federated_plugin_macos"
|
||||
"experimental/federated_plugin/federated_plugin_platform_interface"
|
||||
"experimental/federated_plugin/federated_plugin_web"
|
||||
"experimental/federated_plugin/federated_plugin_windows"
|
||||
# TODO: 'onBackground' is deprecated and shouldn't be used.
|
||||
# TODO: ewindmill to talk to team about removing.
|
||||
# Depends on package context_menus, which breaks with Material3 by default.
|
||||
# "experimental/linting_tool"
|
||||
# TODO: 'MaterialStateProperty' is deprecated and shouldn't be used.
|
||||
# "experimental/pedometer"
|
||||
# "experimental/pedometer/example"
|
||||
# 'MaterialStateProperty' is deprecated and shouldn't be used.
|
||||
# "experimental/varfont_shader_puzzle"
|
||||
"experimental/pedometer"
|
||||
"experimental/pedometer/example"
|
||||
"experimental/varfont_shader_puzzle"
|
||||
"experimental/web_dashboard"
|
||||
"flutter_maps_firestore"
|
||||
"form_app"
|
||||
# TODO: 'onBackground' is deprecated and shouldn't be used.
|
||||
# "game_template"
|
||||
# TODO: 'surfaceVariant' is deprecated and shouldn't be used.
|
||||
# "gemini_tasks"
|
||||
"game_template"
|
||||
"gemini_tasks"
|
||||
"google_maps"
|
||||
"infinite_list"
|
||||
"ios_app_clip"
|
||||
"isolate_example"
|
||||
# TODO(ewindmill): Add back when deps allow
|
||||
# "material_3_demo"
|
||||
"material_3_demo"
|
||||
"navigation_and_routing"
|
||||
"place_tracker"
|
||||
"platform_channels"
|
||||
"platform_design"
|
||||
"platform_view_swift"
|
||||
"provider_counter"
|
||||
# TODO: 'MaterialStateProperty' is deprecated and shouldn't be used.
|
||||
# "provider_shopper"
|
||||
"provider_shopper"
|
||||
"simple_shader"
|
||||
"simplistic_calculator"
|
||||
"simplistic_editor"
|
||||
|
||||
@@ -8,68 +8,60 @@ source "$DIR/flutter_ci_script_shared.sh"
|
||||
flutter doctor -v
|
||||
|
||||
declare -ar PROJECT_NAMES=(
|
||||
"add_to_app/android_view/flutter_module_using_plugin"
|
||||
"add_to_app/books/flutter_module_books"
|
||||
"add_to_app/fullscreen/flutter_module"
|
||||
"add_to_app/multiple_flutters/multiple_flutters_module"
|
||||
"add_to_app/plugin/flutter_module_using_plugin"
|
||||
"add_to_app/prebuilt_module/flutter_module"
|
||||
"analysis_defaults"
|
||||
"android_splash_screen"
|
||||
# TODO: 'MaterialStateProperty' is deprecated and shouldn't be used.
|
||||
# "animations"
|
||||
"background_isolate_channels"
|
||||
"code_sharing/client"
|
||||
"code_sharing/server"
|
||||
"code_sharing/shared"
|
||||
"context_menus"
|
||||
"deeplink_store_example"
|
||||
"desktop_photo_search/fluent_ui"
|
||||
"desktop_photo_search/material"
|
||||
# TODO: 'surfaceVariant' is deprecated and shouldn't be used.
|
||||
# "dynamic_theme"
|
||||
"experimental/federated_plugin/federated_plugin"
|
||||
"experimental/federated_plugin/federated_plugin/example"
|
||||
"experimental/federated_plugin/federated_plugin_macos"
|
||||
"experimental/federated_plugin/federated_plugin_platform_interface"
|
||||
"experimental/federated_plugin/federated_plugin_web"
|
||||
"experimental/federated_plugin/federated_plugin_windows"
|
||||
# TODO: 'onBackground' is deprecated and shouldn't be used.
|
||||
# "experimental/linting_tool"
|
||||
# TODO: 'MaterialStateProperty' is deprecated and shouldn't be used.
|
||||
# "experimental/pedometer"
|
||||
# "experimental/pedometer/example"
|
||||
# 'MaterialStateProperty' is deprecated and shouldn't be used.
|
||||
# "experimental/varfont_shader_puzzle"
|
||||
"experimental/web_dashboard"
|
||||
"flutter_maps_firestore"
|
||||
"form_app"
|
||||
# TODO: 'onBackground' is deprecated and shouldn't be used.
|
||||
# "game_template"
|
||||
# TODO: 'surfaceVariant' is deprecated and shouldn't be used.
|
||||
# "gemini_tasks"
|
||||
"google_maps"
|
||||
"infinite_list"
|
||||
"ios_app_clip"
|
||||
"isolate_example"
|
||||
# TODO(ewindmill): Add back when deps allow
|
||||
# "material_3_demo"
|
||||
"navigation_and_routing"
|
||||
"place_tracker"
|
||||
"platform_channels"
|
||||
"platform_design"
|
||||
"platform_view_swift"
|
||||
"provider_counter"
|
||||
# TODO: 'MaterialStateProperty' is deprecated and shouldn't be used.
|
||||
# "provider_shopper"
|
||||
"simple_shader"
|
||||
"simplistic_calculator"
|
||||
"simplistic_editor"
|
||||
"testing_app"
|
||||
"veggieseasons"
|
||||
"web_embedding/element_embedding_demo"
|
||||
"web/_tool"
|
||||
"web/samples_index"
|
||||
"add_to_app/android_view/flutter_module_using_plugin"
|
||||
"add_to_app/books/flutter_module_books"
|
||||
"add_to_app/fullscreen/flutter_module"
|
||||
"add_to_app/multiple_flutters/multiple_flutters_module"
|
||||
"add_to_app/plugin/flutter_module_using_plugin"
|
||||
"add_to_app/prebuilt_module/flutter_module"
|
||||
"analysis_defaults"
|
||||
"android_splash_screen"
|
||||
"animations"
|
||||
"background_isolate_channels"
|
||||
"code_sharing/client"
|
||||
"code_sharing/server"
|
||||
"code_sharing/shared"
|
||||
"context_menus"
|
||||
"deeplink_store_example"
|
||||
"desktop_photo_search/fluent_ui"
|
||||
"desktop_photo_search/material"
|
||||
"experimental/federated_plugin/federated_plugin"
|
||||
"experimental/federated_plugin/federated_plugin/example"
|
||||
"experimental/federated_plugin/federated_plugin_macos"
|
||||
"experimental/federated_plugin/federated_plugin_platform_interface"
|
||||
"experimental/federated_plugin/federated_plugin_web"
|
||||
"experimental/federated_plugin/federated_plugin_windows"
|
||||
# TODO: ewindmill to talk to team about removing.
|
||||
# Depends on package context_menus, which breaks with Material3 by default.
|
||||
# "experimental/linting_tool"
|
||||
"experimental/pedometer"
|
||||
"experimental/pedometer/example"
|
||||
"experimental/varfont_shader_puzzle"
|
||||
"experimental/web_dashboard"
|
||||
"flutter_maps_firestore"
|
||||
"form_app"
|
||||
"game_template"
|
||||
"google_maps"
|
||||
"infinite_list"
|
||||
"ios_app_clip"
|
||||
# Don't use 'BuildContext's across async gaps.
|
||||
# "isolate_example"
|
||||
"material_3_demo"
|
||||
"navigation_and_routing"
|
||||
"place_tracker"
|
||||
"platform_channels"
|
||||
"platform_design"
|
||||
"platform_view_swift"
|
||||
"provider_counter"
|
||||
"provider_shopper"
|
||||
"simple_shader"
|
||||
"simplistic_calculator"
|
||||
"simplistic_editor"
|
||||
"testing_app"
|
||||
"veggieseasons"
|
||||
"web_embedding/element_embedding_demo"
|
||||
"web/_tool"
|
||||
"web/samples_index"
|
||||
)
|
||||
|
||||
ci_projects "master" "${PROJECT_NAMES[@]}"
|
||||
|
||||
@@ -32,7 +32,9 @@ declare -ar PROJECT_NAMES=(
|
||||
"experimental/federated_plugin/federated_plugin_platform_interface"
|
||||
"experimental/federated_plugin/federated_plugin_web"
|
||||
"experimental/federated_plugin/federated_plugin_windows"
|
||||
"experimental/linting_tool"
|
||||
# TODO: ewindmill to talk to team about removing.
|
||||
# Depends on package context_menus, which breaks with Material3 by default.
|
||||
# "experimental/linting_tool"
|
||||
"experimental/pedometer"
|
||||
"experimental/pedometer/example"
|
||||
"experimental/varfont_shader_puzzle"
|
||||
|
||||
Reference in New Issue
Block a user