File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -265,6 +265,11 @@ class ScaffoldMessengerState extends State<ScaffoldMessenger> with TickerProvide
265265 /// ** See code in examples/api/lib/material/scaffold/scaffold_messenger_state.show_snack_bar.0.dart **
266266 /// {@end-tool}
267267 ScaffoldFeatureController <SnackBar , SnackBarClosedReason > showSnackBar (SnackBar snackBar) {
268+ assert (
269+ _scaffolds.isNotEmpty,
270+ 'ScaffoldMessenger.showSnackBar was called, but there are currently no '
271+ 'descendant Scaffolds to present to.' ,
272+ );
268273 _snackBarController ?? = SnackBar .createAnimationController (vsync: this )
269274 ..addStatusListener (_handleSnackBarStatusChanged);
270275 if (_snackBars.isEmpty) {
Original file line number Diff line number Diff line change @@ -2090,6 +2090,34 @@ void main() {
20902090 await tester.pump (const Duration (milliseconds: 750 ));
20912091 await expectLater (find.byType (MaterialApp ), matchesGoldenFile ('snack_bar.goldenTest.backdropFilter.png' ));
20922092 });
2093+
2094+ testWidgets ('ScaffoldMessenger will alert for snackbars that cannot be presented' , (WidgetTester tester) async {
2095+ // Regression test for https://github.com/flutter/flutter/issues/103004
2096+ await tester.pumpWidget (const MaterialApp (
2097+ home: Center (),
2098+ ));
2099+
2100+ final ScaffoldMessengerState scaffoldMessengerState = tester.state <ScaffoldMessengerState >(
2101+ find.byType (ScaffoldMessenger ),
2102+ );
2103+ expect (
2104+ () {
2105+ scaffoldMessengerState.showSnackBar (const SnackBar (
2106+ content: Text ('I am a snack bar.' ),
2107+ ));
2108+ },
2109+ throwsA (
2110+ isA <AssertionError >().having (
2111+ (AssertionError error) => error.toString (),
2112+ 'description' ,
2113+ contains (
2114+ 'ScaffoldMessenger.showSnackBar was called, but there are currently '
2115+ 'no descendant Scaffolds to present to.'
2116+ )
2117+ ),
2118+ ),
2119+ );
2120+ });
20932121}
20942122
20952123/// Start test for "SnackBar dismiss test".
You can’t perform that action at this time.
0 commit comments