diff --git a/ai_recipe_generation/lib/features/prompt/prompt_screen.dart b/ai_recipe_generation/lib/features/prompt/prompt_screen.dart index a44d8bd61c1..0abc8a2b497 100644 --- a/ai_recipe_generation/lib/features/prompt/prompt_screen.dart +++ b/ai_recipe_generation/lib/features/prompt/prompt_screen.dart @@ -251,6 +251,7 @@ class PromptScreen extends StatelessWidget { child: MarketplaceButton( onPressed: () async { await viewModel.submitPrompt().then((_) async { + if (!context.mounted) return; if (viewModel.recipe != null) { bool? shouldSave = await showDialog( context: context, diff --git a/ai_recipe_generation/lib/widgets/icon_loading_indicator.dart b/ai_recipe_generation/lib/widgets/icon_loading_indicator.dart index cc98a3d467f..3b746222cb8 100644 --- a/ai_recipe_generation/lib/widgets/icon_loading_indicator.dart +++ b/ai_recipe_generation/lib/widgets/icon_loading_indicator.dart @@ -30,7 +30,6 @@ class IconLoadingAnimator extends StatefulWidget { var rand = Random(); class _IconLoadingAnimatorState extends State { - late List notYetSeenIcons; late IconData currentIcon; late Color currentColor; late Timer timer; @@ -38,10 +37,8 @@ class _IconLoadingAnimatorState extends State { @override void initState() { super.initState(); - notYetSeenIcons = widget.icons; - currentIcon = - notYetSeenIcons.removeAt(rand.nextInt(notYetSeenIcons.length)); + currentIcon = widget.icons[rand.nextInt(widget.icons.length)]; currentColor = widget.colors[rand.nextInt(widget.colors.length)]; timer = Timer.periodic( @@ -53,10 +50,8 @@ class _IconLoadingAnimatorState extends State { } void nextIcon() { - if (notYetSeenIcons.length == 1) notYetSeenIcons = widget.icons; setState(() { - currentIcon = - notYetSeenIcons.removeAt(rand.nextInt(notYetSeenIcons.length)); + currentIcon = widget.icons[rand.nextInt(widget.icons.length)]; currentColor = widget.colors[rand.nextInt(widget.colors.length)]; }); } diff --git a/isolate_example/lib/performance_page.dart b/isolate_example/lib/performance_page.dart index 06ba6d4c7f7..8af4a7d88c8 100644 --- a/isolate_example/lib/performance_page.dart +++ b/isolate_example/lib/performance_page.dart @@ -92,6 +92,7 @@ class _PerformancePageState extends State { var snackBar = const SnackBar( content: Text('Main Isolate Done!'), ); + if (!context.mounted) return; ScaffoldMessenger.of(context).showSnackBar(snackBar); }); @@ -106,6 +107,7 @@ class _PerformancePageState extends State { var snackBar = const SnackBar( content: Text('Secondary Isolate Done!'), ); + if (!context.mounted) return; ScaffoldMessenger.of(context).showSnackBar(snackBar); }); diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index 7ac919823e2..b4f8bd5b208 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -8,61 +8,63 @@ 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" - "animations" - "asset_transformation" - "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" + "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" + "ai_recipe_generation" + "analysis_defaults" + "android_splash_screen" + "animations" + "asset_transformation" + "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" + "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: 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" + "gemini_tasks" + "google_maps" + "infinite_list" + "ios_app_clip" + "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 "beta" "${PROJECT_NAMES[@]}" diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh index 19bba5cf567..588a0dc2cd6 100755 --- a/tool/flutter_ci_script_master.sh +++ b/tool/flutter_ci_script_master.sh @@ -8,63 +8,63 @@ 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" - # Don't use 'BuildContext's across async gaps. - # "ai_recipe_generation" - "analysis_defaults" - "android_splash_screen" - "animations" - "asset_transformation" - "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" + "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" + "ai_recipe_generation" + "analysis_defaults" + "android_splash_screen" + "animations" + "asset_transformation" + "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" + "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: 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" + "gemini_tasks" + "google_maps" + "infinite_list" + "ios_app_clip" + "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[@]}"