Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit 5897588

Browse files
committed
✅ Add "Disposed controller removed correctly" test
1 parent cb003b6 commit 5897588

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

packages/camera/camera/example/integration_test/camera_test.dart

+30-3
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44

55
import 'dart:async';
66
import 'dart:io';
7-
import 'dart:ui';
7+
import 'dart:ui' as ui;
88

99
import 'package:camera/camera.dart';
10-
import 'package:flutter/painting.dart';
10+
import 'package:camera_example/main.dart';
11+
import 'package:flutter/material.dart';
1112
import 'package:flutter_test/flutter_test.dart';
1213
import 'package:path_provider/path_provider.dart';
1314
import 'package:video_player/video_player.dart';
@@ -63,7 +64,9 @@ void main() {
6364

6465
// Load picture
6566
final File fileImage = File(file.path);
66-
final Image image = await decodeImageFromList(fileImage.readAsBytesSync());
67+
final ui.Image image = await decodeImageFromList(
68+
fileImage.readAsBytesSync(),
69+
);
6770

6871
// Verify image dimensions are as expected
6972
expect(image, isNotNull);
@@ -240,4 +243,28 @@ void main() {
240243
},
241244
skip: !Platform.isAndroid,
242245
);
246+
247+
testWidgets(
248+
'Disposed controller removed correctly',
249+
(WidgetTester tester) async {
250+
cameras = await availableCameras();
251+
if (cameras.isEmpty) {
252+
return;
253+
}
254+
255+
// Bump the example.
256+
await tester.pumpWidget(CameraApp());
257+
await tester.pumpAndSettle(const Duration(seconds: 3));
258+
259+
// Tap to switch to the first camera.
260+
await tester.tap(
261+
find.byIcon(getCameraLensIcon(cameras.first.lensDirection)),
262+
);
263+
// Wait a few seconds to make sure the lifecycle changed.
264+
await tester.pumpAndSettle(const Duration(seconds: 3));
265+
// Ensure the controller is no longer depended by widgets.
266+
final dynamic exception = tester.takeException();
267+
expect(exception, isNull);
268+
},
269+
);
243270
}

0 commit comments

Comments
 (0)