@@ -9,6 +9,7 @@ import 'package:flutter/foundation.dart';
99import 'package:flutter/painting.dart' ;
1010import 'package:flutter/scheduler.dart' show SchedulerBinding, timeDilation;
1111import 'package:flutter_test/flutter_test.dart' ;
12+ import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart' ;
1213
1314import '../image_data.dart' ;
1415import 'fake_codec.dart' ;
@@ -84,7 +85,7 @@ void main() {
8485 image200x100 = await createTestImage (width: 200 , height: 100 );
8586 });
8687
87- testWidgets ('Codec future fails' , (WidgetTester tester) async {
88+ testWidgetsWithLeakTracking ('Codec future fails' , (WidgetTester tester) async {
8889 final Completer <Codec > completer = Completer <Codec >();
8990 MultiFrameImageStreamCompleter (
9091 codec: completer.future,
@@ -95,7 +96,7 @@ void main() {
9596 expect (tester.takeException (), 'failure message' );
9697 });
9798
98- testWidgets ('Decoding starts when a listener is added after codec is ready' , (WidgetTester tester) async {
99+ testWidgetsWithLeakTracking ('Decoding starts when a listener is added after codec is ready' , (WidgetTester tester) async {
99100 final Completer <Codec > completer = Completer <Codec >();
100101 final MockCodec mockCodec = MockCodec ();
101102 mockCodec.frameCount = 1 ;
@@ -114,7 +115,7 @@ void main() {
114115 expect (mockCodec.numFramesAsked, 1 );
115116 });
116117
117- testWidgets ('Decoding starts when a codec is ready after a listener is added' , (WidgetTester tester) async {
118+ testWidgetsWithLeakTracking ('Decoding starts when a codec is ready after a listener is added' , (WidgetTester tester) async {
118119 final Completer <Codec > completer = Completer <Codec >();
119120 final MockCodec mockCodec = MockCodec ();
120121 mockCodec.frameCount = 1 ;
@@ -133,7 +134,7 @@ void main() {
133134 expect (mockCodec.numFramesAsked, 1 );
134135 });
135136
136- testWidgets ('Decoding does not crash when disposed' , (WidgetTester tester) async {
137+ testWidgetsWithLeakTracking ('Decoding does not crash when disposed' , (WidgetTester tester) async {
137138 final Completer <Codec > completer = Completer <Codec >();
138139 final MockCodec mockCodec = MockCodec ();
139140 mockCodec.frameCount = 1 ;
@@ -158,7 +159,7 @@ void main() {
158159 await tester.idle ();
159160 });
160161
161- testWidgets ('Chunk events of base ImageStreamCompleter are delivered' , (WidgetTester tester) async {
162+ testWidgetsWithLeakTracking ('Chunk events of base ImageStreamCompleter are delivered' , (WidgetTester tester) async {
162163 final List <ImageChunkEvent > chunkEvents = < ImageChunkEvent > [];
163164 final StreamController <ImageChunkEvent > streamController = StreamController <ImageChunkEvent >();
164165 final ImageStreamCompleter imageStream = FakeEventReportingImageStreamCompleter (
@@ -182,7 +183,7 @@ void main() {
182183 expect (chunkEvents[1 ].expectedTotalBytes, 3 );
183184 });
184185
185- testWidgets ('Chunk events of base ImageStreamCompleter are not buffered before listener registration' , (WidgetTester tester) async {
186+ testWidgetsWithLeakTracking ('Chunk events of base ImageStreamCompleter are not buffered before listener registration' , (WidgetTester tester) async {
186187 final List <ImageChunkEvent > chunkEvents = < ImageChunkEvent > [];
187188 final StreamController <ImageChunkEvent > streamController = StreamController <ImageChunkEvent >();
188189 final ImageStreamCompleter imageStream = FakeEventReportingImageStreamCompleter (
@@ -205,7 +206,7 @@ void main() {
205206 expect (chunkEvents[0 ].expectedTotalBytes, 3 );
206207 });
207208
208- testWidgets ('Chunk events of MultiFrameImageStreamCompleter are delivered' , (WidgetTester tester) async {
209+ testWidgetsWithLeakTracking ('Chunk events of MultiFrameImageStreamCompleter are delivered' , (WidgetTester tester) async {
209210 final List <ImageChunkEvent > chunkEvents = < ImageChunkEvent > [];
210211 final Completer <Codec > completer = Completer <Codec >();
211212 final StreamController <ImageChunkEvent > streamController = StreamController <ImageChunkEvent >();
@@ -232,7 +233,7 @@ void main() {
232233 expect (chunkEvents[1 ].expectedTotalBytes, 3 );
233234 });
234235
235- testWidgets ('Chunk events of MultiFrameImageStreamCompleter are not buffered before listener registration' , (WidgetTester tester) async {
236+ testWidgetsWithLeakTracking ('Chunk events of MultiFrameImageStreamCompleter are not buffered before listener registration' , (WidgetTester tester) async {
236237 final List <ImageChunkEvent > chunkEvents = < ImageChunkEvent > [];
237238 final Completer <Codec > completer = Completer <Codec >();
238239 final StreamController <ImageChunkEvent > streamController = StreamController <ImageChunkEvent >();
@@ -258,7 +259,7 @@ void main() {
258259 expect (chunkEvents[0 ].expectedTotalBytes, 3 );
259260 });
260261
261- testWidgets ('Chunk errors are reported' , (WidgetTester tester) async {
262+ testWidgetsWithLeakTracking ('Chunk errors are reported' , (WidgetTester tester) async {
262263 final List <ImageChunkEvent > chunkEvents = < ImageChunkEvent > [];
263264 final Completer <Codec > completer = Completer <Codec >();
264265 final StreamController <ImageChunkEvent > streamController = StreamController <ImageChunkEvent >();
@@ -284,7 +285,7 @@ void main() {
284285 expect (chunkEvents[0 ].expectedTotalBytes, 3 );
285286 });
286287
287- testWidgets ('getNextFrame future fails' , (WidgetTester tester) async {
288+ testWidgetsWithLeakTracking ('getNextFrame future fails' , (WidgetTester tester) async {
288289 final MockCodec mockCodec = MockCodec ();
289290 mockCodec.frameCount = 1 ;
290291 final Completer <Codec > codecCompleter = Completer <Codec >();
@@ -309,7 +310,7 @@ void main() {
309310 expect (tester.takeException (), 'frame completion error' );
310311 });
311312
312- testWidgets ('ImageStream emits frame (static image)' , (WidgetTester tester) async {
313+ testWidgetsWithLeakTracking ('ImageStream emits frame (static image)' , (WidgetTester tester) async {
313314 final MockCodec mockCodec = MockCodec ();
314315 mockCodec.frameCount = 1 ;
315316 final Completer <Codec > codecCompleter = Completer <Codec >();
@@ -334,7 +335,7 @@ void main() {
334335 expect (emittedImages.every ((ImageInfo info) => info.image.isCloneOf (frame.image)), true );
335336 });
336337
337- testWidgets ('ImageStream emits frames (animated images)' , (WidgetTester tester) async {
338+ testWidgetsWithLeakTracking ('ImageStream emits frames (animated images)' , (WidgetTester tester) async {
338339 final MockCodec mockCodec = MockCodec ();
339340 mockCodec.frameCount = 2 ;
340341 mockCodec.repetitionCount = - 1 ;
@@ -380,7 +381,7 @@ void main() {
380381 await tester.pump (const Duration (milliseconds: 400 ));
381382 });
382383
383- testWidgets ('animation wraps back' , (WidgetTester tester) async {
384+ testWidgetsWithLeakTracking ('animation wraps back' , (WidgetTester tester) async {
384385 final MockCodec mockCodec = MockCodec ();
385386 mockCodec.frameCount = 2 ;
386387 mockCodec.repetitionCount = - 1 ;
@@ -421,7 +422,7 @@ void main() {
421422 await tester.pump (const Duration (milliseconds: 200 ));
422423 });
423424
424- testWidgets ("animation doesn't repeat more than specified" , (WidgetTester tester) async {
425+ testWidgetsWithLeakTracking ("animation doesn't repeat more than specified" , (WidgetTester tester) async {
425426 final MockCodec mockCodec = MockCodec ();
426427 mockCodec.frameCount = 2 ;
427428 mockCodec.repetitionCount = 0 ;
@@ -459,7 +460,7 @@ void main() {
459460 expect (emittedImages[1 ].image.isCloneOf (frame2.image), true );
460461 });
461462
462- testWidgets ('frames are only decoded when there are listeners' , (WidgetTester tester) async {
463+ testWidgetsWithLeakTracking ('frames are only decoded when there are listeners' , (WidgetTester tester) async {
463464 final MockCodec mockCodec = MockCodec ();
464465 mockCodec.frameCount = 2 ;
465466 mockCodec.repetitionCount = - 1 ;
@@ -499,7 +500,7 @@ void main() {
499500 handle.dispose ();
500501 });
501502
502- testWidgets ('multiple stream listeners' , (WidgetTester tester) async {
503+ testWidgetsWithLeakTracking ('multiple stream listeners' , (WidgetTester tester) async {
503504 final MockCodec mockCodec = MockCodec ();
504505 mockCodec.frameCount = 2 ;
505506 mockCodec.repetitionCount = - 1 ;
@@ -546,7 +547,7 @@ void main() {
546547
547548 });
548549
549- testWidgets ('timer is canceled when listeners are removed' , (WidgetTester tester) async {
550+ testWidgetsWithLeakTracking ('timer is canceled when listeners are removed' , (WidgetTester tester) async {
550551 final MockCodec mockCodec = MockCodec ();
551552 mockCodec.frameCount = 2 ;
552553 mockCodec.repetitionCount = - 1 ;
@@ -579,7 +580,7 @@ void main() {
579580 // point.
580581 });
581582
582- testWidgets ('timeDilation affects animation frame timers' , (WidgetTester tester) async {
583+ testWidgetsWithLeakTracking ('timeDilation affects animation frame timers' , (WidgetTester tester) async {
583584 final MockCodec mockCodec = MockCodec ();
584585 mockCodec.frameCount = 2 ;
585586 mockCodec.repetitionCount = - 1 ;
@@ -616,7 +617,7 @@ void main() {
616617 timeDilation = 1.0 ; // restore time dilation, or it will affect other tests
617618 });
618619
619- testWidgets ('error handlers can intercept errors' , (WidgetTester tester) async {
620+ testWidgetsWithLeakTracking ('error handlers can intercept errors' , (WidgetTester tester) async {
620621 final MockCodec mockCodec = MockCodec ();
621622 mockCodec.frameCount = 1 ;
622623 final Completer <Codec > codecCompleter = Completer <Codec >();
@@ -651,7 +652,7 @@ void main() {
651652 expect (capturedException, 'frame completion error' );
652653 });
653654
654- testWidgets ('remove and add listener ' , (WidgetTester tester) async {
655+ testWidgetsWithLeakTracking ('remove and add listener ' , (WidgetTester tester) async {
655656 final MockCodec mockCodec = MockCodec ();
656657 mockCodec.frameCount = 3 ;
657658 mockCodec.repetitionCount = 0 ;
@@ -682,7 +683,7 @@ void main() {
682683 await tester.pump (const Duration (milliseconds: 200 )); // emit 2nd frame.
683684 });
684685
685- testWidgets ('ImageStreamListener hashCode and equals' , (WidgetTester tester) async {
686+ testWidgetsWithLeakTracking ('ImageStreamListener hashCode and equals' , (WidgetTester tester) async {
686687 void handleImage (ImageInfo image, bool synchronousCall) { }
687688 void handleImageDifferently (ImageInfo image, bool synchronousCall) { }
688689 void handleError (dynamic error, StackTrace ? stackTrace) { }
@@ -714,7 +715,7 @@ void main() {
714715 compare (onImage1: handleImage, onChunk1: handleChunk, onError1: handleError, onImage2: handleImage, onError2: handleError, areEqual: false );
715716 });
716717
717- testWidgets ('Keep alive handles do not drive frames or prevent last listener callbacks' , (WidgetTester tester) async {
718+ testWidgetsWithLeakTracking ('Keep alive handles do not drive frames or prevent last listener callbacks' , (WidgetTester tester) async {
718719 final Image image10x10 = (await tester.runAsync (() => createTestImage (width: 10 , height: 10 )))! ;
719720 final MockCodec mockCodec = MockCodec ();
720721 mockCodec.frameCount = 2 ;
0 commit comments