From 613a92b6682915f2942e559c47789c4ff140e8c9 Mon Sep 17 00:00:00 2001 From: "Bodhi Mulders (BeMacized)" Date: Thu, 12 Nov 2020 12:51:05 +0100 Subject: [PATCH 1/8] Updated platform interface to have recording methods return XFile instances. --- .../lib/src/platform_interface/camera_platform.dart | 7 ++++--- packages/camera/camera_platform_interface/pubspec.yaml | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index af200e682777..634a052da832 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -4,6 +4,7 @@ import 'dart:async'; +import 'package:file_selector_platform_interface/file_selector_platform_interface.dart'; import 'package:flutter/widgets.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; import 'package:camera_platform_interface/src/method_channel/method_channel_camera.dart'; @@ -67,7 +68,7 @@ abstract class CameraPlatform extends PlatformInterface { } /// Captures an image and saves it to [path]. - Future takePicture(int cameraId, String path) { + Future takePicture(int cameraId) { throw UnimplementedError('takePicture() is not implemented.'); } @@ -84,12 +85,12 @@ abstract class CameraPlatform extends PlatformInterface { /// The file is written on the flight as the video is being recorded. /// If a file already exists at the provided path an error will be thrown. /// The file can be read as soon as [stopVideoRecording] returns. - Future startVideoRecording(int cameraId, String path) { + Future startVideoRecording(int cameraId) { throw UnimplementedError('startVideoRecording() is not implemented.'); } /// Stop the video recording. - Future stopVideoRecording(int cameraId) { + Future stopVideoRecording(int cameraId) { throw UnimplementedError('stopVideoRecording() is not implemented.'); } diff --git a/packages/camera/camera_platform_interface/pubspec.yaml b/packages/camera/camera_platform_interface/pubspec.yaml index 4d6f4733927c..1316e35f0706 100644 --- a/packages/camera/camera_platform_interface/pubspec.yaml +++ b/packages/camera/camera_platform_interface/pubspec.yaml @@ -10,6 +10,7 @@ dependencies: sdk: flutter meta: ^1.0.5 plugin_platform_interface: ^1.0.1 + file_selector_platform_interface: ^1.0.0 dev_dependencies: flutter_test: From 247d9c9f016f8a1be97fa126042a5550a1d07455 Mon Sep 17 00:00:00 2001 From: "Bodhi Mulders (BeMacized)" Date: Thu, 12 Nov 2020 13:02:50 +0100 Subject: [PATCH 2/8] Update documentation and unit tests to match platform interface changes --- .../lib/src/platform_interface/camera_platform.dart | 11 ++++------- .../test/camera_platform_interface_test.dart | 4 ++-- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index 634a052da832..0a8615cba4b0 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -67,7 +67,7 @@ abstract class CameraPlatform extends PlatformInterface { throw UnimplementedError('onCameraError() is not implemented.'); } - /// Captures an image and saves it to [path]. + /// Captures an image and returns the file where it was saved Future takePicture(int cameraId) { throw UnimplementedError('takePicture() is not implemented.'); } @@ -77,19 +77,16 @@ abstract class CameraPlatform extends PlatformInterface { throw UnimplementedError('prepareForVideoRecording() is not implemented.'); } - /// Start a video recording and save the file to [path]. - /// - /// A path can for example be obtained using - /// [path_provider](https://pub.dartlang.org/packages/path_provider). + /// Starts a video recording /// /// The file is written on the flight as the video is being recorded. /// If a file already exists at the provided path an error will be thrown. - /// The file can be read as soon as [stopVideoRecording] returns. + /// The file can be read as soon as [stopVideoRecording] returns it. Future startVideoRecording(int cameraId) { throw UnimplementedError('startVideoRecording() is not implemented.'); } - /// Stop the video recording. + /// Stops the video recording and returns the file where it was saved Future stopVideoRecording(int cameraId) { throw UnimplementedError('stopVideoRecording() is not implemented.'); } diff --git a/packages/camera/camera_platform_interface/test/camera_platform_interface_test.dart b/packages/camera/camera_platform_interface/test/camera_platform_interface_test.dart index fff072ff1f1f..bccdf3a86abd 100644 --- a/packages/camera/camera_platform_interface/test/camera_platform_interface_test.dart +++ b/packages/camera/camera_platform_interface/test/camera_platform_interface_test.dart @@ -156,7 +156,7 @@ void main() { // Act & Assert expect( - () => cameraPlatform.startVideoRecording(1, null), + () => cameraPlatform.startVideoRecording(1), throwsUnimplementedError, ); }); @@ -182,7 +182,7 @@ void main() { // Act & Assert expect( - () => cameraPlatform.takePicture(1, null), + () => cameraPlatform.takePicture(1), throwsUnimplementedError, ); }); From 51c25b57f991aa31ac59d1c7e92dacbf51e1fa93 Mon Sep 17 00:00:00 2001 From: "Bodhi Mulders (BeMacized)" Date: Thu, 12 Nov 2020 13:08:41 +0100 Subject: [PATCH 3/8] Make file input optional for recording methods in platform interface. Update docs. --- .../lib/src/platform_interface/camera_platform.dart | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index 0a8615cba4b0..b62439cbfa52 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -67,8 +67,9 @@ abstract class CameraPlatform extends PlatformInterface { throw UnimplementedError('onCameraError() is not implemented.'); } - /// Captures an image and returns the file where it was saved - Future takePicture(int cameraId) { + /// Captures an image and returns the file where it was saved. + /// If no [file] parameter is provided, the file returned will be in a temporary location. + Future takePicture(int cameraId, { XFile file }) { throw UnimplementedError('takePicture() is not implemented.'); } @@ -79,10 +80,12 @@ abstract class CameraPlatform extends PlatformInterface { /// Starts a video recording /// + /// If no [file] parameter is provided, the recording will be saved to a new file in a temporary location. + /// /// The file is written on the flight as the video is being recorded. - /// If a file already exists at the provided path an error will be thrown. + /// If a file already exists at the path for the provided file instance, an error will be thrown. /// The file can be read as soon as [stopVideoRecording] returns it. - Future startVideoRecording(int cameraId) { + Future startVideoRecording(int cameraId, { XFile file }) { throw UnimplementedError('startVideoRecording() is not implemented.'); } From 1b0632296db0cfe7a245cfbeae44f19e78806149 Mon Sep 17 00:00:00 2001 From: "Bodhi Mulders (BeMacized)" Date: Thu, 12 Nov 2020 13:10:46 +0100 Subject: [PATCH 4/8] Add missing full stop in docs. --- .../lib/src/platform_interface/camera_platform.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index b62439cbfa52..7c4c7ecf3856 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -81,7 +81,7 @@ abstract class CameraPlatform extends PlatformInterface { /// Starts a video recording /// /// If no [file] parameter is provided, the recording will be saved to a new file in a temporary location. - /// + /// /// The file is written on the flight as the video is being recorded. /// If a file already exists at the path for the provided file instance, an error will be thrown. /// The file can be read as soon as [stopVideoRecording] returns it. @@ -89,7 +89,7 @@ abstract class CameraPlatform extends PlatformInterface { throw UnimplementedError('startVideoRecording() is not implemented.'); } - /// Stops the video recording and returns the file where it was saved + /// Stops the video recording and returns the file where it was saved. Future stopVideoRecording(int cameraId) { throw UnimplementedError('stopVideoRecording() is not implemented.'); } From 8e94057e28878acdb0b8000ea88d29c9a7ae247b Mon Sep 17 00:00:00 2001 From: "Bodhi Mulders (BeMacized)" Date: Thu, 12 Nov 2020 13:52:08 +0100 Subject: [PATCH 5/8] Run dartfmt. Wrapped docs after max 80 cols. Added missing full stop. --- .../src/platform_interface/camera_platform.dart | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index 7c4c7ecf3856..9b486a509984 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -4,10 +4,10 @@ import 'dart:async'; +import 'package:camera_platform_interface/src/method_channel/method_channel_camera.dart'; import 'package:file_selector_platform_interface/file_selector_platform_interface.dart'; import 'package:flutter/widgets.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; -import 'package:camera_platform_interface/src/method_channel/method_channel_camera.dart'; import '../../camera_platform_interface.dart'; @@ -68,8 +68,9 @@ abstract class CameraPlatform extends PlatformInterface { } /// Captures an image and returns the file where it was saved. - /// If no [file] parameter is provided, the file returned will be in a temporary location. - Future takePicture(int cameraId, { XFile file }) { + /// If no [file] parameter is provided, the file returned will be in a + /// temporary location. + Future takePicture(int cameraId, {XFile file}) { throw UnimplementedError('takePicture() is not implemented.'); } @@ -78,14 +79,16 @@ abstract class CameraPlatform extends PlatformInterface { throw UnimplementedError('prepareForVideoRecording() is not implemented.'); } - /// Starts a video recording + /// Starts a video recording. /// - /// If no [file] parameter is provided, the recording will be saved to a new file in a temporary location. + /// If no [file] parameter is provided, the recording will be saved to a new + /// file in a temporary location. /// /// The file is written on the flight as the video is being recorded. - /// If a file already exists at the path for the provided file instance, an error will be thrown. + /// If a file already exists at the path for the provided file instance, + /// an error will be thrown. /// The file can be read as soon as [stopVideoRecording] returns it. - Future startVideoRecording(int cameraId, { XFile file }) { + Future startVideoRecording(int cameraId, {XFile file}) { throw UnimplementedError('startVideoRecording() is not implemented.'); } From 96bccd422e7b74561e83bc5180b231ee42c4ed68 Mon Sep 17 00:00:00 2001 From: "Bodhi Mulders (BeMacized)" Date: Fri, 13 Nov 2020 13:54:06 +0100 Subject: [PATCH 6/8] Updated platform interface --- .../src/platform_interface/camera_platform.dart | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index 9b486a509984..243fdfa75879 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -68,9 +68,7 @@ abstract class CameraPlatform extends PlatformInterface { } /// Captures an image and returns the file where it was saved. - /// If no [file] parameter is provided, the file returned will be in a - /// temporary location. - Future takePicture(int cameraId, {XFile file}) { + Future takePicture(int cameraId) { throw UnimplementedError('takePicture() is not implemented.'); } @@ -79,21 +77,16 @@ abstract class CameraPlatform extends PlatformInterface { throw UnimplementedError('prepareForVideoRecording() is not implemented.'); } - /// Starts a video recording. - /// - /// If no [file] parameter is provided, the recording will be saved to a new - /// file in a temporary location. + /// Starts a video recording and returns the file where it will be saved. /// /// The file is written on the flight as the video is being recorded. - /// If a file already exists at the path for the provided file instance, - /// an error will be thrown. /// The file can be read as soon as [stopVideoRecording] returns it. - Future startVideoRecording(int cameraId, {XFile file}) { + Future startVideoRecording(int cameraId) { throw UnimplementedError('startVideoRecording() is not implemented.'); } - /// Stops the video recording and returns the file where it was saved. - Future stopVideoRecording(int cameraId) { + /// Stops the video recording. + Future stopVideoRecording(int cameraId) { throw UnimplementedError('stopVideoRecording() is not implemented.'); } From 79b58c81ba13d018a03559b0a7bda01bd60202b6 Mon Sep 17 00:00:00 2001 From: Bodhi Mulders Date: Fri, 13 Nov 2020 14:10:14 +0100 Subject: [PATCH 7/8] Update packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart Co-authored-by: Maurits van Beusekom --- .../lib/src/platform_interface/camera_platform.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index 243fdfa75879..2357d3ce0b45 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -80,7 +80,7 @@ abstract class CameraPlatform extends PlatformInterface { /// Starts a video recording and returns the file where it will be saved. /// /// The file is written on the flight as the video is being recorded. - /// The file can be read as soon as [stopVideoRecording] returns it. + /// The file can be read as soon as [stopVideoRecording] returns. Future startVideoRecording(int cameraId) { throw UnimplementedError('startVideoRecording() is not implemented.'); } From 6c32fa94722402e1158b047223090c6bc48a39bd Mon Sep 17 00:00:00 2001 From: Bodhi Mulders Date: Fri, 13 Nov 2020 14:10:57 +0100 Subject: [PATCH 8/8] Update packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart Co-authored-by: Maurits van Beusekom --- .../lib/src/platform_interface/camera_platform.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index 2357d3ce0b45..5e4a6b9ffe6e 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -86,6 +86,10 @@ abstract class CameraPlatform extends PlatformInterface { } /// Stops the video recording. + /// + /// When the [stopVideoRecording] method completes successfully the recorded + /// video can be accessed through the file returned by the + /// [startVideoRecording] method. Future stopVideoRecording(int cameraId) { throw UnimplementedError('stopVideoRecording() is not implemented.'); }