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

Commit 530a187

Browse files
authored
[camera_web] Add buildPreview implementation (#4190)
1 parent 31c598c commit 530a187

File tree

4 files changed

+42
-4
lines changed

4 files changed

+42
-4
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,24 @@ void main() {
507507
});
508508
});
509509

510+
group('getViewType', () {
511+
testWidgets('returns a correct view type', (tester) async {
512+
const textureId = 1;
513+
514+
final camera = Camera(
515+
textureId: textureId,
516+
window: window,
517+
);
518+
519+
await camera.initialize();
520+
521+
expect(
522+
camera.getViewType(),
523+
equals('plugins.flutter.io/camera_$textureId'),
524+
);
525+
});
526+
});
527+
510528
group('dispose', () {
511529
testWidgets('resets the video element\'s source', (tester) async {
512530
final camera = Camera(

packages/camera/camera_web/example/integration_test/camera_web_test.dart

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'package:camera_web/camera_web.dart';
1111
import 'package:camera_web/src/camera.dart';
1212
import 'package:camera_web/src/camera_settings.dart';
1313
import 'package:camera_web/src/types/types.dart';
14+
import 'package:flutter/widgets.dart' as widgets;
1415
import 'package:flutter/services.dart';
1516
import 'package:flutter_test/flutter_test.dart';
1617
import 'package:integration_test/integration_test.dart';
@@ -634,10 +635,24 @@ void main() {
634635
);
635636
});
636637

637-
testWidgets('buildPreview throws UnimplementedError', (tester) async {
638+
testWidgets(
639+
'buildPreview returns an HtmlElementView '
640+
'with an appropriate view type', (tester) async {
641+
final camera = Camera(
642+
textureId: cameraId,
643+
window: window,
644+
);
645+
646+
// Save the camera in the camera plugin.
647+
(CameraPlatform.instance as CameraPlugin).cameras[cameraId] = camera;
648+
638649
expect(
639-
() => CameraPlatform.instance.buildPreview(cameraId),
640-
throwsUnimplementedError,
650+
CameraPlatform.instance.buildPreview(cameraId),
651+
isA<widgets.HtmlElementView>().having(
652+
(view) => view.viewType,
653+
'viewType',
654+
camera.getViewType(),
655+
),
641656
);
642657
});
643658

packages/camera/camera_web/lib/src/camera.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,9 @@ class Camera {
196196
}
197197
}
198198

199+
/// Returns the registered view type of the camera.
200+
String getViewType() => _getViewType(textureId);
201+
199202
/// Disposes the camera by stopping the camera stream
200203
/// and reloading the camera source.
201204
void dispose() {

packages/camera/camera_web/lib/src/camera_web.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,9 @@ class CameraPlugin extends CameraPlatform {
361361

362362
@override
363363
Widget buildPreview(int cameraId) {
364-
throw UnimplementedError('buildPreview() is not implemented.');
364+
return HtmlElementView(
365+
viewType: getCamera(cameraId).getViewType(),
366+
);
365367
}
366368

367369
@override

0 commit comments

Comments
 (0)