diff --git a/packages/flutter/lib/src/material/app.dart b/packages/flutter/lib/src/material/app.dart index 4a80123f79d..3b871d56a26 100644 --- a/packages/flutter/lib/src/material/app.dart +++ b/packages/flutter/lib/src/material/app.dart @@ -986,6 +986,16 @@ class _MaterialAppState extends State { }, ); } + + childWidget = ScaffoldMessenger( + key: widget.scaffoldMessengerKey, + child: DefaultSelectionStyle( + selectionColor: effectiveSelectionColor, + cursorColor: effectiveCursorColor, + child: childWidget, + ), + ); + if (widget.themeAnimationStyle != AnimationStyle.noAnimation) { childWidget = AnimatedTheme( data: theme, @@ -1000,14 +1010,7 @@ class _MaterialAppState extends State { ); } - return ScaffoldMessenger( - key: widget.scaffoldMessengerKey, - child: DefaultSelectionStyle( - selectionColor: effectiveSelectionColor, - cursorColor: effectiveCursorColor, - child: childWidget, - ), - ); + return childWidget; } Widget _buildWidgetApp(BuildContext context) { diff --git a/packages/flutter/test/material/scaffold_test.dart b/packages/flutter/test/material/scaffold_test.dart index c0cf2cd5e1e..a3efc1cec34 100644 --- a/packages/flutter/test/material/scaffold_test.dart +++ b/packages/flutter/test/material/scaffold_test.dart @@ -2867,7 +2867,30 @@ void main() { expect(tester.takeException(), isNull); }); - testWidgets('ScaffoldMessenger showSnackBar default animation', (WidgetTester tester) async { + // Regression test for https://github.com/flutter/flutter/issues/115924. + testWidgets('Default ScaffoldMessenger can access ambient theme', (WidgetTester tester) async { + final GlobalKey scaffoldMessengerKey = GlobalKey(); + + final ColorScheme colorScheme = ColorScheme.fromSeed(seedColor: Colors.deepPurple); + final ThemeData customTheme = ThemeData( + colorScheme: colorScheme, + visualDensity: VisualDensity.comfortable, + ); + + await tester.pumpWidget( + MaterialApp( + scaffoldMessengerKey: scaffoldMessengerKey, + theme: customTheme, + home: const SizedBox.shrink(), + ), + ); + + final ThemeData messengerTheme = Theme.of(scaffoldMessengerKey.currentContext!); + expect(messengerTheme.colorScheme, colorScheme); + expect(messengerTheme.visualDensity, VisualDensity.comfortable); + }); + + testWidgets('ScaffoldMessenger showSnackBar default animation', (WidgetTester tester) async { await tester.pumpWidget(MaterialApp( home: Scaffold( body: Builder(