[camera] Add implementations for `camera_platform_interface` package. (#3302)

* First suggestion for camera platform interface

* Remove test coverage folder

* Renamed onLatestImageAvailableHandler definition

* Split CameraEvents into separate streams

* Implemented & tested first parts of method channel implementation

* Remove unused EventChannelMock class

* Add missing unit tests

* Added placeholders in default method channel implementation

* Updated platform interface

* Update packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart

Co-authored-by: Maurits van Beusekom <maurits@vnbskm.nl>

* Add unit test for availableCameras

* Expand availableCameras unit test. Added unit test for takePicture.

* Add unit test for startVideoRecording

* Add unit test for prepareForVideoRecording

* Add unit test for stopVideoRecording

* Add unit test for pauseVideoRecording

* Add unit test for buildView

* WIP: Dart and Android implementation

* Fix formatting

* Have resolution stream replay last value on subscription. Replace stream_transform with rxdart.

* Added reverse method channel to replace event channel. Updated initialise and takePicture implementations for android. WIP implementation for startVideoRecording

* Fixed example app for Android. Removed isRecordingVideo and isStreamingImages from buildView method.

* Added some first tests for camera/camera

* More tests and some feedback

* iOS implementation: Removed standard event channel. Added reverse method channel. Updated initialize method. Added resolution changed event. Updated error reporting to use new method channel.

* Started splitting initialize method

* Finish splitting up initialize for iOS

* Update unit tests

* Fix takePicture method on iOS

* Split initialize method on Android

* Fix video recording on iOS. Updated platform interface.

* Update unit tests

* Update error handling of video methods in iOS code. Make iOS code more consistent.

* Updated startVideoRecording documentation

* Make sure file is returned by stopVideoRecording

* Use correct event-type after initializing

* Fix DartMessenger unit-tests

* Change cast

* Fix formatting

* Fixed tests, formatting and analysis warnings

* Added missing license to Dart files

* Updated CHANGELOG and version

* Added additional unit-tests to platform_interface

* Added more tests

* Formatted code

* Re-added the CameraPreview widget

* Use import/export instead of part implementation

* fixed formatting

* Resolved additional feedback

* Update dependency to git repo

* Depend on pub.dev for camera_platform_interface

* Fix JAVA formatting

* Fix changelog

* Make sure camera package can be published

* Assert when stream methods are called from wrong platform

* Add dev_dependency on plugin_platform_interface package, required by tests.

* Remove pedantic requirement from initialize() method. Remove unnecessary completers.

* Remove dependency on dart:io

* Restrict exposed types from platform interface

* Moved test for image stream in separate file

* Fixed formatting issue

* Fix deprecation warning

* Apply feedback from bparrishMines

* Fix formatting issues

* Removed redundant podspec files

* Removed redundant ios files

* Handle SecurityException

Co-authored-by: Maurits van Beusekom <maurits@baseflow.com>
Co-authored-by: Maurits van Beusekom <maurits@vnbskm.nl>
Co-authored-by: daniel <daniel.roek@gmail.com>
Co-authored-by: David Iglesias Teixeira <ditman@gmail.com>
20 files changed
tree: 411e16906dda834fe6387eeb52f554755cd33135
  1. .ci/
  2. .github/
  3. .opensource/
  4. packages/
  5. script/
  6. .cirrus.yml
  7. .clang-format
  8. .gitattributes
  9. .gitignore
  10. analysis_options.yaml
  11. AUTHORS
  12. CODEOWNERS
  13. CONTRIBUTING.md
  14. FlutterFire.md
  15. LICENSE
  16. README.md
README.md

Flutter plugins

Build Status

This repo is a companion repo to the main flutter repo. It contains the source code for Flutter first-party plugins (i.e., plugins developed by the core Flutter team). Check the packages directory for all plugins.

Flutter plugins enable access to platform-specific APIs. For more information about plugins, and how to use them, see https://flutter.dev/platform-plugins/.

These plugins are also available on pub.

Issues

Please file any issues, bugs, or feature requests in the main flutter repo.

Contributing

If you wish to contribute a new plugin to the Flutter ecosystem, please see the documentation for developing packages and platform channels. You can store your plugin source code in any GitHub repository (the present repo is only intended for plugins developed by the core Flutter team). Once your plugin is ready you can publish to the pub repository.

If you wish to contribute a change to any of the existing plugins in this repo, please review our contribution guide, and send a pull request.

Plugins

These are the available plugins in this repository.

PluginPubPointsPopularityLikes
android_alarm_managerpub packagepub pointspopularitylikes
android_intentpub packagepub pointspopularitylikes
batterypub packagepub pointspopularitylikes
camerapub packagepub pointspopularitylikes
connectivitypub packagepub pointspopularitylikes
device_infopub packagepub pointspopularitylikes
e2e (Discontinued, use integration_test)pub packagepub pointspopularitylikes
espressopub packagepub pointspopularitylikes
flutter_plugin_android_lifecyclepub packagepub pointspopularitylikes
google_maps_flutterpub packagepub pointspopularitylikes
google_sign_inpub packagepub pointspopularitylikes
image_pickerpub packagepub pointspopularitylikes
integration_testpub packagepub pointspopularitylikes
in_app_purchasepub packagepub pointspopularitylikes
ios_platform_imagespub packagepub pointspopularitylikes
local_authpub packagepub pointspopularitylikes
package_infopub packagepub pointspopularitylikes
path_providerpub packagepub pointspopularitylikes
plugin_platform_interfacepub packagepub pointspopularitylikes
quick_actionspub packagepub pointspopularitylikes
sensorspub packagepub pointspopularitylikes
sharepub packagepub pointspopularitylikes
shared_preferencespub packagepub pointspopularitylikes
url_launcherpub packagepub pointspopularitylikes
video_playerpub packagepub pointspopularitylikes
webview_flutterpub packagepub pointspopularitylikes