File tree 2 files changed +33
-0
lines changed
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
265
265
/// ** See code in examples/api/lib/material/scaffold/scaffold_messenger_state.show_snack_bar.0.dart **
266
266
/// {@end-tool}
267
267
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
+ );
268
273
_snackBarController ?? = SnackBar .createAnimationController (vsync: this )
269
274
..addStatusListener (_handleSnackBarStatusChanged);
270
275
if (_snackBars.isEmpty) {
Original file line number Diff line number Diff line change @@ -2090,6 +2090,34 @@ void main() {
2090
2090
await tester.pump (const Duration (milliseconds: 750 ));
2091
2091
await expectLater (find.byType (MaterialApp ), matchesGoldenFile ('snack_bar.goldenTest.backdropFilter.png' ));
2092
2092
});
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
+ });
2093
2121
}
2094
2122
2095
2123
/// Start test for "SnackBar dismiss test".
You can’t perform that action at this time.
0 commit comments