Copy disabled (too large)
Download .txt
Showing preview only (14,401K chars total). Download the full file to get everything.
Repository: flutter/plugins
Branch: main
Commit: 557d3284ac9d
Files: 3782
Total size: 12.8 MB
Directory structure:
gitextract_ziolw3rl/
├── .ci/
│ ├── Dockerfile
│ ├── flutter_master.version
│ ├── flutter_stable.version
│ ├── scripts/
│ │ ├── build_all_plugins.sh
│ │ ├── build_examples_win32.sh
│ │ ├── create_all_plugins_app.sh
│ │ ├── create_simulator.sh
│ │ ├── drive_examples_win32.sh
│ │ ├── native_test_win32.sh
│ │ └── prepare_tool.sh
│ └── targets/
│ ├── ios_build_all_plugins.yaml
│ ├── ios_platform_tests.yaml
│ ├── macos_build_all_plugins.yaml
│ ├── macos_lint_podspecs.yaml
│ ├── macos_platform_tests.yaml
│ ├── windows_build_all_plugins.yaml
│ └── windows_build_and_platform_tests.yaml
├── .ci.yaml
├── .cirrus.yml
├── .clang-format
├── .gitattributes
├── .github/
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── dependabot.yml
│ ├── labeler.yml
│ ├── post_merge_labeler.yml
│ └── workflows/
│ ├── pull_request_label.yml
│ ├── release.yml
│ └── scorecards-analysis.yml
├── .gitignore
├── .gitmodules
├── .opensource/
│ └── project.json
├── AUTHORS
├── CODEOWNERS
├── CONTRIBUTING.md
├── FlutterFire.md
├── LICENSE
├── README.md
├── analysis_options.yaml
├── packages/
│ ├── camera/
│ │ ├── camera/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── cameraexample/
│ │ │ │ │ │ │ └── FlutterActivityTest.java
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── build.excerpt.yaml
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── camera_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── lib/
│ │ │ │ │ ├── main.dart
│ │ │ │ │ └── readme_full_example.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test/
│ │ │ │ │ └── main_test.dart
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── lib/
│ │ │ │ ├── camera.dart
│ │ │ │ └── src/
│ │ │ │ ├── camera_controller.dart
│ │ │ │ ├── camera_image.dart
│ │ │ │ └── camera_preview.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── camera_image_stream_test.dart
│ │ │ ├── camera_image_test.dart
│ │ │ ├── camera_preview_test.dart
│ │ │ ├── camera_test.dart
│ │ │ └── camera_value_test.dart
│ │ ├── camera_android/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── lint-baseline.xml
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── camera/
│ │ │ │ │ ├── Camera.java
│ │ │ │ │ ├── CameraCaptureCallback.java
│ │ │ │ │ ├── CameraPermissions.java
│ │ │ │ │ ├── CameraPlugin.java
│ │ │ │ │ ├── CameraProperties.java
│ │ │ │ │ ├── CameraRegionUtils.java
│ │ │ │ │ ├── CameraState.java
│ │ │ │ │ ├── CameraUtils.java
│ │ │ │ │ ├── DartMessenger.java
│ │ │ │ │ ├── ImageSaver.java
│ │ │ │ │ ├── MethodCallHandlerImpl.java
│ │ │ │ │ ├── features/
│ │ │ │ │ │ ├── CameraFeature.java
│ │ │ │ │ │ ├── CameraFeatureFactory.java
│ │ │ │ │ │ ├── CameraFeatureFactoryImpl.java
│ │ │ │ │ │ ├── CameraFeatures.java
│ │ │ │ │ │ ├── Point.java
│ │ │ │ │ │ ├── autofocus/
│ │ │ │ │ │ │ ├── AutoFocusFeature.java
│ │ │ │ │ │ │ └── FocusMode.java
│ │ │ │ │ │ ├── exposurelock/
│ │ │ │ │ │ │ ├── ExposureLockFeature.java
│ │ │ │ │ │ │ └── ExposureMode.java
│ │ │ │ │ │ ├── exposureoffset/
│ │ │ │ │ │ │ └── ExposureOffsetFeature.java
│ │ │ │ │ │ ├── exposurepoint/
│ │ │ │ │ │ │ └── ExposurePointFeature.java
│ │ │ │ │ │ ├── flash/
│ │ │ │ │ │ │ ├── FlashFeature.java
│ │ │ │ │ │ │ └── FlashMode.java
│ │ │ │ │ │ ├── focuspoint/
│ │ │ │ │ │ │ └── FocusPointFeature.java
│ │ │ │ │ │ ├── fpsrange/
│ │ │ │ │ │ │ └── FpsRangeFeature.java
│ │ │ │ │ │ ├── noisereduction/
│ │ │ │ │ │ │ ├── NoiseReductionFeature.java
│ │ │ │ │ │ │ └── NoiseReductionMode.java
│ │ │ │ │ │ ├── resolution/
│ │ │ │ │ │ │ ├── ResolutionFeature.java
│ │ │ │ │ │ │ └── ResolutionPreset.java
│ │ │ │ │ │ ├── sensororientation/
│ │ │ │ │ │ │ ├── DeviceOrientationManager.java
│ │ │ │ │ │ │ └── SensorOrientationFeature.java
│ │ │ │ │ │ └── zoomlevel/
│ │ │ │ │ │ ├── ZoomLevelFeature.java
│ │ │ │ │ │ └── ZoomUtils.java
│ │ │ │ │ ├── media/
│ │ │ │ │ │ └── MediaRecorderBuilder.java
│ │ │ │ │ └── types/
│ │ │ │ │ ├── CameraCaptureProperties.java
│ │ │ │ │ ├── CaptureTimeoutsWrapper.java
│ │ │ │ │ ├── ExposureMode.java
│ │ │ │ │ ├── FlashMode.java
│ │ │ │ │ ├── FocusMode.java
│ │ │ │ │ ├── ResolutionPreset.java
│ │ │ │ │ └── Timeout.java
│ │ │ │ └── test/
│ │ │ │ ├── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── camera/
│ │ │ │ │ ├── CameraCaptureCallbackStatesTest.java
│ │ │ │ │ ├── CameraCaptureCallbackTest.java
│ │ │ │ │ ├── CameraPermissionsTest.java
│ │ │ │ │ ├── CameraPropertiesImplTest.java
│ │ │ │ │ ├── CameraRegionUtils_convertPointToMeteringRectangleTest.java
│ │ │ │ │ ├── CameraRegionUtils_getCameraBoundariesTest.java
│ │ │ │ │ ├── CameraTest.java
│ │ │ │ │ ├── CameraTest_getRecordingProfileTest.java
│ │ │ │ │ ├── CameraUtilsTest.java
│ │ │ │ │ ├── DartMessengerTest.java
│ │ │ │ │ ├── ImageSaverTests.java
│ │ │ │ │ ├── MethodCallHandlerImplTest.java
│ │ │ │ │ ├── features/
│ │ │ │ │ │ ├── autofocus/
│ │ │ │ │ │ │ ├── AutoFocusFeatureTest.java
│ │ │ │ │ │ │ └── FocusModeTest.java
│ │ │ │ │ │ ├── exposurelock/
│ │ │ │ │ │ │ ├── ExposureLockFeatureTest.java
│ │ │ │ │ │ │ └── ExposureModeTest.java
│ │ │ │ │ │ ├── exposureoffset/
│ │ │ │ │ │ │ └── ExposureOffsetFeatureTest.java
│ │ │ │ │ │ ├── exposurepoint/
│ │ │ │ │ │ │ └── ExposurePointFeatureTest.java
│ │ │ │ │ │ ├── flash/
│ │ │ │ │ │ │ └── FlashFeatureTest.java
│ │ │ │ │ │ ├── focuspoint/
│ │ │ │ │ │ │ └── FocusPointFeatureTest.java
│ │ │ │ │ │ ├── fpsrange/
│ │ │ │ │ │ │ ├── FpsRangeFeaturePixel4aTest.java
│ │ │ │ │ │ │ └── FpsRangeFeatureTest.java
│ │ │ │ │ │ ├── noisereduction/
│ │ │ │ │ │ │ └── NoiseReductionFeatureTest.java
│ │ │ │ │ │ ├── resolution/
│ │ │ │ │ │ │ └── ResolutionFeatureTest.java
│ │ │ │ │ │ ├── sensororientation/
│ │ │ │ │ │ │ ├── DeviceOrientationManagerTest.java
│ │ │ │ │ │ │ └── SensorOrientationFeatureTest.java
│ │ │ │ │ │ └── zoomlevel/
│ │ │ │ │ │ ├── ZoomLevelFeatureTest.java
│ │ │ │ │ │ └── ZoomUtilsTest.java
│ │ │ │ │ ├── media/
│ │ │ │ │ │ └── MediaRecorderBuilderTest.java
│ │ │ │ │ ├── types/
│ │ │ │ │ │ ├── ExposureModeTest.java
│ │ │ │ │ │ ├── FlashModeTest.java
│ │ │ │ │ │ └── FocusModeTest.java
│ │ │ │ │ └── utils/
│ │ │ │ │ └── TestUtils.java
│ │ │ │ └── resources/
│ │ │ │ └── robolectric.properties
│ │ │ ├── example/
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── cameraexample/
│ │ │ │ │ │ │ └── FlutterActivityTest.java
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── camera_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ ├── camera_controller.dart
│ │ │ │ │ ├── camera_preview.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ ├── camera_android.dart
│ │ │ │ └── src/
│ │ │ │ ├── android_camera.dart
│ │ │ │ ├── type_conversion.dart
│ │ │ │ └── utils.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── android_camera_test.dart
│ │ │ ├── method_channel_mock.dart
│ │ │ ├── type_conversion_test.dart
│ │ │ └── utils_test.dart
│ │ ├── camera_android_camerax/
│ │ │ ├── .metadata
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── camerax/
│ │ │ │ │ ├── CameraAndroidCameraxPlugin.java
│ │ │ │ │ ├── CameraFlutterApiImpl.java
│ │ │ │ │ ├── CameraInfoFlutterApiImpl.java
│ │ │ │ │ ├── CameraInfoHostApiImpl.java
│ │ │ │ │ ├── CameraPermissionsManager.java
│ │ │ │ │ ├── CameraSelectorFlutterApiImpl.java
│ │ │ │ │ ├── CameraSelectorHostApiImpl.java
│ │ │ │ │ ├── CameraXProxy.java
│ │ │ │ │ ├── DeviceOrientationManager.java
│ │ │ │ │ ├── GeneratedCameraXLibrary.java
│ │ │ │ │ ├── InstanceManager.java
│ │ │ │ │ ├── JavaObjectHostApiImpl.java
│ │ │ │ │ ├── PreviewHostApiImpl.java
│ │ │ │ │ ├── ProcessCameraProviderFlutterApiImpl.java
│ │ │ │ │ ├── ProcessCameraProviderHostApiImpl.java
│ │ │ │ │ ├── SystemServicesFlutterApiImpl.java
│ │ │ │ │ └── SystemServicesHostApiImpl.java
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── camerax/
│ │ │ │ ├── CameraInfoTest.java
│ │ │ │ ├── CameraPermissionsManagerTest.java
│ │ │ │ ├── CameraSelectorTest.java
│ │ │ │ ├── CameraTest.java
│ │ │ │ ├── DeviceOrientationManagerTest.java
│ │ │ │ ├── InstanceManagerTest.java
│ │ │ │ ├── JavaObjectHostApiTest.java
│ │ │ │ ├── PreviewTest.java
│ │ │ │ ├── ProcessCameraProviderTest.java
│ │ │ │ └── SystemServicesTest.java
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── cameraxexample/
│ │ │ │ │ │ │ └── MainActivityTest.java
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── cameraexample/
│ │ │ │ │ │ │ │ └── MainActivity.java
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ ├── camera_controller.dart
│ │ │ │ │ ├── camera_image.dart
│ │ │ │ │ ├── camera_preview.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test/
│ │ │ │ │ └── widget_test.dart
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ ├── camera_android_camerax.dart
│ │ │ │ └── src/
│ │ │ │ ├── android_camera_camerax.dart
│ │ │ │ ├── android_camera_camerax_flutter_api_impls.dart
│ │ │ │ ├── camera.dart
│ │ │ │ ├── camera_info.dart
│ │ │ │ ├── camera_selector.dart
│ │ │ │ ├── camerax_library.g.dart
│ │ │ │ ├── instance_manager.dart
│ │ │ │ ├── java_object.dart
│ │ │ │ ├── preview.dart
│ │ │ │ ├── process_camera_provider.dart
│ │ │ │ ├── surface.dart
│ │ │ │ ├── system_services.dart
│ │ │ │ └── use_case.dart
│ │ │ ├── pigeons/
│ │ │ │ └── camerax_library.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── android_camera_camerax_test.dart
│ │ │ ├── android_camera_camerax_test.mocks.dart
│ │ │ ├── camera_info_test.dart
│ │ │ ├── camera_info_test.mocks.dart
│ │ │ ├── camera_selector_test.dart
│ │ │ ├── camera_selector_test.mocks.dart
│ │ │ ├── camera_test.dart
│ │ │ ├── instance_manager_test.dart
│ │ │ ├── preview_test.dart
│ │ │ ├── preview_test.mocks.dart
│ │ │ ├── process_camera_provider_test.dart
│ │ │ ├── process_camera_provider_test.mocks.dart
│ │ │ ├── system_services_test.dart
│ │ │ ├── system_services_test.mocks.dart
│ │ │ └── test_camerax_library.g.dart
│ │ ├── camera_avfoundation/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── camera_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── RunnerTests/
│ │ │ │ │ ├── AvailableCamerasTest.m
│ │ │ │ │ ├── CameraCaptureSessionQueueRaceConditionTests.m
│ │ │ │ │ ├── CameraExposureTests.m
│ │ │ │ │ ├── CameraFocusTests.m
│ │ │ │ │ ├── CameraMethodChannelTests.m
│ │ │ │ │ ├── CameraOrientationTests.m
│ │ │ │ │ ├── CameraPermissionTests.m
│ │ │ │ │ ├── CameraPreviewPauseTests.m
│ │ │ │ │ ├── CameraPropertiesTests.m
│ │ │ │ │ ├── CameraTestUtils.h
│ │ │ │ │ ├── CameraTestUtils.m
│ │ │ │ │ ├── CameraUtilTests.m
│ │ │ │ │ ├── FLTCamPhotoCaptureTests.m
│ │ │ │ │ ├── FLTCamSampleBufferTests.m
│ │ │ │ │ ├── FLTSavePhotoDelegateTests.m
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── MockFLTThreadSafeFlutterResult.h
│ │ │ │ │ ├── MockFLTThreadSafeFlutterResult.m
│ │ │ │ │ ├── QueueUtilsTests.m
│ │ │ │ │ ├── StreamingTest.m
│ │ │ │ │ ├── ThreadSafeEventChannelTests.m
│ │ │ │ │ ├── ThreadSafeFlutterResultTests.m
│ │ │ │ │ ├── ThreadSafeMethodChannelTests.m
│ │ │ │ │ └── ThreadSafeTextureRegistryTests.m
│ │ │ │ ├── lib/
│ │ │ │ │ ├── camera_controller.dart
│ │ │ │ │ ├── camera_preview.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── ios/
│ │ │ │ ├── Assets/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── CameraPermissionUtils.h
│ │ │ │ │ ├── CameraPermissionUtils.m
│ │ │ │ │ ├── CameraPlugin.h
│ │ │ │ │ ├── CameraPlugin.m
│ │ │ │ │ ├── CameraPlugin.modulemap
│ │ │ │ │ ├── CameraPlugin_Test.h
│ │ │ │ │ ├── CameraProperties.h
│ │ │ │ │ ├── CameraProperties.m
│ │ │ │ │ ├── FLTCam.h
│ │ │ │ │ ├── FLTCam.m
│ │ │ │ │ ├── FLTCam_Test.h
│ │ │ │ │ ├── FLTSavePhotoDelegate.h
│ │ │ │ │ ├── FLTSavePhotoDelegate.m
│ │ │ │ │ ├── FLTSavePhotoDelegate_Test.h
│ │ │ │ │ ├── FLTThreadSafeEventChannel.h
│ │ │ │ │ ├── FLTThreadSafeEventChannel.m
│ │ │ │ │ ├── FLTThreadSafeFlutterResult.h
│ │ │ │ │ ├── FLTThreadSafeFlutterResult.m
│ │ │ │ │ ├── FLTThreadSafeMethodChannel.h
│ │ │ │ │ ├── FLTThreadSafeMethodChannel.m
│ │ │ │ │ ├── FLTThreadSafeTextureRegistry.h
│ │ │ │ │ ├── FLTThreadSafeTextureRegistry.m
│ │ │ │ │ ├── QueueUtils.h
│ │ │ │ │ ├── QueueUtils.m
│ │ │ │ │ └── camera_avfoundation-umbrella.h
│ │ │ │ └── camera_avfoundation.podspec
│ │ │ ├── lib/
│ │ │ │ ├── camera_avfoundation.dart
│ │ │ │ └── src/
│ │ │ │ ├── avfoundation_camera.dart
│ │ │ │ ├── type_conversion.dart
│ │ │ │ └── utils.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── avfoundation_camera_test.dart
│ │ │ ├── method_channel_mock.dart
│ │ │ ├── type_conversion_test.dart
│ │ │ └── utils_test.dart
│ │ ├── camera_platform_interface/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── camera_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── events/
│ │ │ │ │ ├── camera_event.dart
│ │ │ │ │ └── device_event.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_camera.dart
│ │ │ │ │ └── type_conversion.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ └── camera_platform.dart
│ │ │ │ ├── types/
│ │ │ │ │ ├── camera_description.dart
│ │ │ │ │ ├── camera_exception.dart
│ │ │ │ │ ├── camera_image_data.dart
│ │ │ │ │ ├── exposure_mode.dart
│ │ │ │ │ ├── flash_mode.dart
│ │ │ │ │ ├── focus_mode.dart
│ │ │ │ │ ├── image_format_group.dart
│ │ │ │ │ ├── resolution_preset.dart
│ │ │ │ │ ├── types.dart
│ │ │ │ │ └── video_capture_options.dart
│ │ │ │ └── utils/
│ │ │ │ └── utils.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── camera_platform_interface_test.dart
│ │ │ ├── events/
│ │ │ │ ├── camera_event_test.dart
│ │ │ │ └── device_event_test.dart
│ │ │ ├── method_channel/
│ │ │ │ ├── method_channel_camera_test.dart
│ │ │ │ └── type_conversion_test.dart
│ │ │ ├── types/
│ │ │ │ ├── camera_description_test.dart
│ │ │ │ ├── camera_exception_test.dart
│ │ │ │ ├── camera_image_data_test.dart
│ │ │ │ ├── exposure_mode_test.dart
│ │ │ │ ├── flash_mode_test.dart
│ │ │ │ ├── focus_mode_test.dart
│ │ │ │ ├── image_group_test.dart
│ │ │ │ └── resolution_preset_test.dart
│ │ │ └── utils/
│ │ │ ├── method_channel_mock.dart
│ │ │ └── utils_test.dart
│ │ ├── camera_web/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ ├── camera_error_code_test.dart
│ │ │ │ │ ├── camera_metadata_test.dart
│ │ │ │ │ ├── camera_options_test.dart
│ │ │ │ │ ├── camera_service_test.dart
│ │ │ │ │ ├── camera_test.dart
│ │ │ │ │ ├── camera_web_exception_test.dart
│ │ │ │ │ ├── camera_web_test.dart
│ │ │ │ │ ├── helpers/
│ │ │ │ │ │ ├── helpers.dart
│ │ │ │ │ │ └── mocks.dart
│ │ │ │ │ └── zoom_level_capability_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── run_test.sh
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── web/
│ │ │ │ └── index.html
│ │ │ ├── lib/
│ │ │ │ ├── camera_web.dart
│ │ │ │ └── src/
│ │ │ │ ├── camera.dart
│ │ │ │ ├── camera_service.dart
│ │ │ │ ├── camera_web.dart
│ │ │ │ ├── shims/
│ │ │ │ │ ├── dart_js_util.dart
│ │ │ │ │ ├── dart_ui.dart
│ │ │ │ │ ├── dart_ui_fake.dart
│ │ │ │ │ └── dart_ui_real.dart
│ │ │ │ └── types/
│ │ │ │ ├── camera_error_code.dart
│ │ │ │ ├── camera_metadata.dart
│ │ │ │ ├── camera_options.dart
│ │ │ │ ├── camera_web_exception.dart
│ │ │ │ ├── media_device_kind.dart
│ │ │ │ ├── orientation_type.dart
│ │ │ │ ├── types.dart
│ │ │ │ └── zoom_level_capability.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── README.md
│ │ │ └── more_tests_exist_elsewhere_test.dart
│ │ └── camera_windows/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── README.md
│ │ │ ├── integration_test/
│ │ │ │ └── camera_test.dart
│ │ │ ├── lib/
│ │ │ │ └── main.dart
│ │ │ ├── pubspec.yaml
│ │ │ ├── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── flutter/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ └── generated_plugins.cmake
│ │ │ └── runner/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Runner.rc
│ │ │ ├── flutter_window.cpp
│ │ │ ├── flutter_window.h
│ │ │ ├── main.cpp
│ │ │ ├── resource.h
│ │ │ ├── runner.exe.manifest
│ │ │ ├── utils.cpp
│ │ │ ├── utils.h
│ │ │ ├── win32_window.cpp
│ │ │ └── win32_window.h
│ │ ├── lib/
│ │ │ └── camera_windows.dart
│ │ ├── pubspec.yaml
│ │ ├── test/
│ │ │ ├── camera_windows_test.dart
│ │ │ └── utils/
│ │ │ └── method_channel_mock.dart
│ │ └── windows/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── camera.cpp
│ │ ├── camera.h
│ │ ├── camera_plugin.cpp
│ │ ├── camera_plugin.h
│ │ ├── camera_windows.cpp
│ │ ├── capture_controller.cpp
│ │ ├── capture_controller.h
│ │ ├── capture_controller_listener.h
│ │ ├── capture_device_info.cpp
│ │ ├── capture_device_info.h
│ │ ├── capture_engine_listener.cpp
│ │ ├── capture_engine_listener.h
│ │ ├── com_heap_ptr.h
│ │ ├── include/
│ │ │ └── camera_windows/
│ │ │ └── camera_windows.h
│ │ ├── photo_handler.cpp
│ │ ├── photo_handler.h
│ │ ├── preview_handler.cpp
│ │ ├── preview_handler.h
│ │ ├── record_handler.cpp
│ │ ├── record_handler.h
│ │ ├── string_utils.cpp
│ │ ├── string_utils.h
│ │ ├── test/
│ │ │ ├── camera_plugin_test.cpp
│ │ │ ├── camera_test.cpp
│ │ │ ├── capture_controller_test.cpp
│ │ │ └── mocks.h
│ │ ├── texture_handler.cpp
│ │ └── texture_handler.h
│ ├── e2e/
│ │ └── README.md
│ ├── espresso/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ ├── lint-baseline.xml
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java/
│ │ │ ├── androidx/
│ │ │ │ └── test/
│ │ │ │ └── espresso/
│ │ │ │ └── flutter/
│ │ │ │ ├── EspressoFlutter.java
│ │ │ │ ├── action/
│ │ │ │ │ ├── ActionUtil.java
│ │ │ │ │ ├── ClickAction.java
│ │ │ │ │ ├── FlutterActions.java
│ │ │ │ │ ├── FlutterScrollToAction.java
│ │ │ │ │ ├── FlutterTypeTextAction.java
│ │ │ │ │ ├── FlutterViewAction.java
│ │ │ │ │ ├── SyntheticClickAction.java
│ │ │ │ │ ├── WaitUntilIdleAction.java
│ │ │ │ │ ├── WidgetCoordinatesCalculator.java
│ │ │ │ │ └── WidgetInfoFetcher.java
│ │ │ │ ├── api/
│ │ │ │ │ ├── FlutterAction.java
│ │ │ │ │ ├── FlutterTestingProtocol.java
│ │ │ │ │ ├── SyntheticAction.java
│ │ │ │ │ ├── WidgetAction.java
│ │ │ │ │ ├── WidgetAssertion.java
│ │ │ │ │ └── WidgetMatcher.java
│ │ │ │ ├── assertion/
│ │ │ │ │ ├── FlutterAssertions.java
│ │ │ │ │ └── FlutterViewAssertion.java
│ │ │ │ ├── common/
│ │ │ │ │ ├── Constants.java
│ │ │ │ │ └── Duration.java
│ │ │ │ ├── exception/
│ │ │ │ │ ├── AmbiguousWidgetMatcherException.java
│ │ │ │ │ ├── InvalidFlutterViewException.java
│ │ │ │ │ └── NoMatchingWidgetException.java
│ │ │ │ ├── internal/
│ │ │ │ │ ├── idgenerator/
│ │ │ │ │ │ ├── IdException.java
│ │ │ │ │ │ ├── IdGenerator.java
│ │ │ │ │ │ └── IdGenerators.java
│ │ │ │ │ ├── jsonrpc/
│ │ │ │ │ │ ├── JsonRpcClient.java
│ │ │ │ │ │ └── message/
│ │ │ │ │ │ ├── ErrorObject.java
│ │ │ │ │ │ ├── JsonRpcRequest.java
│ │ │ │ │ │ └── JsonRpcResponse.java
│ │ │ │ │ └── protocol/
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── DartVmService.java
│ │ │ │ │ ├── DartVmServiceUtil.java
│ │ │ │ │ ├── FlutterProtocolException.java
│ │ │ │ │ ├── GetOffsetAction.java
│ │ │ │ │ ├── GetOffsetResponse.java
│ │ │ │ │ ├── GetVmResponse.java
│ │ │ │ │ ├── GetWidgetDiagnosticsAction.java
│ │ │ │ │ ├── GetWidgetDiagnosticsResponse.java
│ │ │ │ │ ├── NoPendingFrameCondition.java
│ │ │ │ │ ├── NoPendingPlatformMessagesCondition.java
│ │ │ │ │ ├── NoTransientCallbacksCondition.java
│ │ │ │ │ ├── WaitCondition.java
│ │ │ │ │ ├── WaitForConditionAction.java
│ │ │ │ │ └── WidgetInfoFactory.java
│ │ │ │ ├── matcher/
│ │ │ │ │ ├── FlutterMatchers.java
│ │ │ │ │ ├── IsDescendantOfMatcher.java
│ │ │ │ │ ├── IsExistingMatcher.java
│ │ │ │ │ ├── WithTextMatcher.java
│ │ │ │ │ ├── WithTooltipMatcher.java
│ │ │ │ │ ├── WithTypeMatcher.java
│ │ │ │ │ └── WithValueKeyMatcher.java
│ │ │ │ └── model/
│ │ │ │ ├── WidgetInfo.java
│ │ │ │ └── WidgetInfoBuilder.java
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── espresso/
│ │ │ └── EspressoPlugin.java
│ │ ├── example/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── example/
│ │ │ │ │ │ └── MainActivityTest.java
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── com/
│ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ └── espresso_example/
│ │ │ │ │ │ │ └── MainActivity.java
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── profile/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ └── settings.gradle
│ │ │ ├── lib/
│ │ │ │ └── main.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test_driver/
│ │ │ └── example.dart
│ │ └── pubspec.yaml
│ ├── file_selector/
│ │ ├── file_selector/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── build.excerpt.yaml
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ ├── lib/
│ │ │ │ │ ├── get_directory_page.dart
│ │ │ │ │ ├── home_page.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ ├── open_image_page.dart
│ │ │ │ │ ├── open_multiple_images_page.dart
│ │ │ │ │ ├── open_text_page.dart
│ │ │ │ │ ├── readme_standalone_excerpts.dart
│ │ │ │ │ └── save_text_page.dart
│ │ │ │ ├── linux/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ ├── flutter/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ │ ├── main.cc
│ │ │ │ │ ├── my_application.cc
│ │ │ │ │ └── my_application.h
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── lib/
│ │ │ │ └── file_selector.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── file_selector_test.dart
│ │ ├── file_selector_ios/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── RunnerTests/
│ │ │ │ │ └── FileSelectorTests.m
│ │ │ │ ├── lib/
│ │ │ │ │ ├── home_page.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ ├── open_image_page.dart
│ │ │ │ │ ├── open_multiple_images_page.dart
│ │ │ │ │ └── open_text_page.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Assets/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── FFSFileSelectorPlugin.h
│ │ │ │ │ ├── FFSFileSelectorPlugin.m
│ │ │ │ │ ├── FFSFileSelectorPlugin_Test.h
│ │ │ │ │ ├── FileSelectorPlugin.modulemap
│ │ │ │ │ ├── file_selector_ios-umbrella.h
│ │ │ │ │ ├── messages.g.h
│ │ │ │ │ └── messages.g.m
│ │ │ │ └── file_selector_ios.podspec
│ │ │ ├── lib/
│ │ │ │ ├── file_selector_ios.dart
│ │ │ │ └── src/
│ │ │ │ └── messages.g.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── file_selector_ios_test.dart
│ │ │ ├── file_selector_ios_test.mocks.dart
│ │ │ └── test_api.g.dart
│ │ ├── file_selector_linux/
│ │ │ ├── .gitignore
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── lib/
│ │ │ │ │ ├── get_directory_page.dart
│ │ │ │ │ ├── get_multiple_directories_page.dart
│ │ │ │ │ ├── home_page.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ ├── open_image_page.dart
│ │ │ │ │ ├── open_multiple_images_page.dart
│ │ │ │ │ ├── open_text_page.dart
│ │ │ │ │ └── save_text_page.dart
│ │ │ │ ├── linux/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ ├── flutter/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ │ ├── main.cc
│ │ │ │ │ ├── my_application.cc
│ │ │ │ │ └── my_application.h
│ │ │ │ └── pubspec.yaml
│ │ │ ├── lib/
│ │ │ │ └── file_selector_linux.dart
│ │ │ ├── linux/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── file_selector_plugin.cc
│ │ │ │ ├── file_selector_plugin_private.h
│ │ │ │ ├── include/
│ │ │ │ │ └── file_selector_linux/
│ │ │ │ │ └── file_selector_plugin.h
│ │ │ │ └── test/
│ │ │ │ ├── file_selector_plugin_test.cc
│ │ │ │ └── test_main.cc
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── file_selector_linux_test.dart
│ │ ├── file_selector_macos/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── lib/
│ │ │ │ │ ├── get_directory_page.dart
│ │ │ │ │ ├── home_page.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ ├── open_image_page.dart
│ │ │ │ │ ├── open_multiple_images_page.dart
│ │ │ │ │ ├── open_text_page.dart
│ │ │ │ │ └── save_text_page.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── RunnerTests/
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── RunnerTests.swift
│ │ │ │ └── pubspec.yaml
│ │ │ ├── lib/
│ │ │ │ ├── file_selector_macos.dart
│ │ │ │ └── src/
│ │ │ │ └── messages.g.dart
│ │ │ ├── macos/
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── FileSelectorPlugin.swift
│ │ │ │ │ └── messages.g.swift
│ │ │ │ └── file_selector_macos.podspec
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── file_selector_macos_test.dart
│ │ │ ├── file_selector_macos_test.mocks.dart
│ │ │ └── messages_test.g.dart
│ │ ├── file_selector_platform_interface/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── file_selector_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ └── method_channel_file_selector.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ └── file_selector_interface.dart
│ │ │ │ ├── types/
│ │ │ │ │ ├── types.dart
│ │ │ │ │ └── x_type_group/
│ │ │ │ │ └── x_type_group.dart
│ │ │ │ └── web_helpers/
│ │ │ │ └── web_helpers.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── file_selector_platform_interface_test.dart
│ │ │ ├── method_channel_file_selector_test.dart
│ │ │ └── x_type_group_test.dart
│ │ ├── file_selector_web/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ ├── dom_helper_test.dart
│ │ │ │ │ └── file_selector_web_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── run_test.sh
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── web/
│ │ │ │ └── index.html
│ │ │ ├── lib/
│ │ │ │ ├── file_selector_web.dart
│ │ │ │ └── src/
│ │ │ │ ├── dom_helper.dart
│ │ │ │ └── utils.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── more_tests_exist_elsewhere_test.dart
│ │ │ └── utils_test.dart
│ │ └── file_selector_windows/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── get_directory_page.dart
│ │ │ │ ├── home_page.dart
│ │ │ │ ├── main.dart
│ │ │ │ ├── open_image_page.dart
│ │ │ │ ├── open_multiple_images_page.dart
│ │ │ │ ├── open_text_page.dart
│ │ │ │ └── save_text_page.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── flutter/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ └── generated_plugins.cmake
│ │ │ └── runner/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Runner.rc
│ │ │ ├── flutter_window.cpp
│ │ │ ├── flutter_window.h
│ │ │ ├── main.cpp
│ │ │ ├── resource.h
│ │ │ ├── runner.exe.manifest
│ │ │ ├── utils.cpp
│ │ │ ├── utils.h
│ │ │ ├── win32_window.cpp
│ │ │ └── win32_window.h
│ │ ├── lib/
│ │ │ ├── file_selector_windows.dart
│ │ │ └── src/
│ │ │ └── messages.g.dart
│ │ ├── pigeons/
│ │ │ ├── copyright.txt
│ │ │ └── messages.dart
│ │ ├── pubspec.yaml
│ │ ├── test/
│ │ │ ├── file_selector_windows_test.dart
│ │ │ ├── file_selector_windows_test.mocks.dart
│ │ │ └── test_api.g.dart
│ │ └── windows/
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── file_dialog_controller.cpp
│ │ ├── file_dialog_controller.h
│ │ ├── file_selector_plugin.cpp
│ │ ├── file_selector_plugin.h
│ │ ├── file_selector_windows.cpp
│ │ ├── include/
│ │ │ └── file_selector_windows/
│ │ │ └── file_selector_windows.h
│ │ ├── messages.g.cpp
│ │ ├── messages.g.h
│ │ ├── string_utils.cpp
│ │ ├── string_utils.h
│ │ └── test/
│ │ ├── file_selector_plugin_test.cpp
│ │ ├── test_file_dialog_controller.cpp
│ │ ├── test_file_dialog_controller.h
│ │ ├── test_main.cpp
│ │ ├── test_utils.cpp
│ │ └── test_utils.h
│ ├── flutter_plugin_android_lifecycle/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── android/
│ │ │ ├── .gitignore
│ │ │ ├── build.gradle
│ │ │ ├── proguard.txt
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ ├── embedding/
│ │ │ │ │ └── engine/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── lifecycle/
│ │ │ │ │ └── FlutterLifecycleAdapter.java
│ │ │ │ └── plugins/
│ │ │ │ └── flutter_plugin_android_lifecycle/
│ │ │ │ └── FlutterAndroidLifecyclePlugin.java
│ │ │ └── test/
│ │ │ └── java/
│ │ │ └── io/
│ │ │ └── flutter/
│ │ │ └── embedding/
│ │ │ └── engine/
│ │ │ └── plugins/
│ │ │ └── lifecycle/
│ │ │ └── FlutterLifecycleAdapterTest.java
│ │ ├── example/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ └── src/
│ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── io/
│ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ └── flutter_plugin_android_lifecycle/
│ │ │ │ │ │ └── MainActivityTest.java
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ └── flutter_plugin_android_lifecycle_example/
│ │ │ │ │ │ │ └── MainActivity.java
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── profile/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ └── settings.gradle
│ │ │ ├── integration_test/
│ │ │ │ └── flutter_plugin_android_lifecycle_test.dart
│ │ │ ├── lib/
│ │ │ │ └── main.dart
│ │ │ └── pubspec.yaml
│ │ └── pubspec.yaml
│ ├── google_maps_flutter/
│ │ ├── google_maps_flutter/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── googlemapsexample/
│ │ │ │ │ │ │ └── MainActivityTest.java
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ └── googlemapsexample/
│ │ │ │ │ │ │ └── GoogleMapsTestActivity.java
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── assets/
│ │ │ │ │ └── night_mode.json
│ │ │ │ ├── build.excerpt.yaml
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── google_maps_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── lib/
│ │ │ │ │ ├── animate_camera.dart
│ │ │ │ │ ├── lite_mode.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ ├── map_click.dart
│ │ │ │ │ ├── map_coordinates.dart
│ │ │ │ │ ├── map_ui.dart
│ │ │ │ │ ├── marker_icons.dart
│ │ │ │ │ ├── move_camera.dart
│ │ │ │ │ ├── padding.dart
│ │ │ │ │ ├── page.dart
│ │ │ │ │ ├── place_circle.dart
│ │ │ │ │ ├── place_marker.dart
│ │ │ │ │ ├── place_polygon.dart
│ │ │ │ │ ├── place_polyline.dart
│ │ │ │ │ ├── readme_sample.dart
│ │ │ │ │ ├── scrolling_map.dart
│ │ │ │ │ ├── snapshot.dart
│ │ │ │ │ └── tile_overlay.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ ├── google_maps_flutter.dart
│ │ │ │ └── src/
│ │ │ │ ├── controller.dart
│ │ │ │ └── google_map.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── circle_updates_test.dart
│ │ │ ├── fake_maps_controllers.dart
│ │ │ ├── google_map_test.dart
│ │ │ ├── map_creation_test.dart
│ │ │ ├── marker_updates_test.dart
│ │ │ ├── polygon_updates_test.dart
│ │ │ ├── polyline_updates_test.dart
│ │ │ └── tile_overlay_updates_test.dart
│ │ ├── google_maps_flutter_android/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── googlemaps/
│ │ │ │ │ ├── CircleBuilder.java
│ │ │ │ │ ├── CircleController.java
│ │ │ │ │ ├── CircleOptionsSink.java
│ │ │ │ │ ├── CirclesController.java
│ │ │ │ │ ├── Convert.java
│ │ │ │ │ ├── GoogleMapBuilder.java
│ │ │ │ │ ├── GoogleMapController.java
│ │ │ │ │ ├── GoogleMapFactory.java
│ │ │ │ │ ├── GoogleMapInitializer.java
│ │ │ │ │ ├── GoogleMapListener.java
│ │ │ │ │ ├── GoogleMapOptionsSink.java
│ │ │ │ │ ├── GoogleMapsPlugin.java
│ │ │ │ │ ├── LifecycleProvider.java
│ │ │ │ │ ├── MarkerBuilder.java
│ │ │ │ │ ├── MarkerController.java
│ │ │ │ │ ├── MarkerOptionsSink.java
│ │ │ │ │ ├── MarkersController.java
│ │ │ │ │ ├── PolygonBuilder.java
│ │ │ │ │ ├── PolygonController.java
│ │ │ │ │ ├── PolygonOptionsSink.java
│ │ │ │ │ ├── PolygonsController.java
│ │ │ │ │ ├── PolylineBuilder.java
│ │ │ │ │ ├── PolylineController.java
│ │ │ │ │ ├── PolylineOptionsSink.java
│ │ │ │ │ ├── PolylinesController.java
│ │ │ │ │ ├── TileOverlayBuilder.java
│ │ │ │ │ ├── TileOverlayController.java
│ │ │ │ │ ├── TileOverlaySink.java
│ │ │ │ │ ├── TileOverlaysController.java
│ │ │ │ │ └── TileProviderController.java
│ │ │ │ └── test/
│ │ │ │ ├── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── googlemaps/
│ │ │ │ │ ├── CircleBuilderTest.java
│ │ │ │ │ ├── CircleControllerTest.java
│ │ │ │ │ ├── ConvertTest.java
│ │ │ │ │ ├── GoogleMapControllerTest.java
│ │ │ │ │ ├── GoogleMapInitializerTest.java
│ │ │ │ │ ├── MarkersControllerTest.java
│ │ │ │ │ ├── PolygonBuilderTest.java
│ │ │ │ │ ├── PolygonControllerTest.java
│ │ │ │ │ ├── PolylineBuilderTest.java
│ │ │ │ │ └── PolylineControllerTest.java
│ │ │ │ └── resources/
│ │ │ │ └── mockito-extensions/
│ │ │ │ └── org.mockito.plugins.MockMaker
│ │ │ ├── example/
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── googlemapsexample/
│ │ │ │ │ │ │ ├── GoogleMapsTest.java
│ │ │ │ │ │ │ └── MainActivityTest.java
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ └── googlemapsexample/
│ │ │ │ │ │ │ └── GoogleMapsTestActivity.java
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── assets/
│ │ │ │ │ └── night_mode.json
│ │ │ │ ├── build.excerpt.yaml
│ │ │ │ ├── integration_test/
│ │ │ │ │ ├── google_maps_tests.dart
│ │ │ │ │ ├── latest_renderer_test.dart
│ │ │ │ │ └── legacy_renderer_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ ├── animate_camera.dart
│ │ │ │ │ ├── example_google_map.dart
│ │ │ │ │ ├── lite_mode.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ ├── map_click.dart
│ │ │ │ │ ├── map_coordinates.dart
│ │ │ │ │ ├── map_ui.dart
│ │ │ │ │ ├── marker_icons.dart
│ │ │ │ │ ├── move_camera.dart
│ │ │ │ │ ├── padding.dart
│ │ │ │ │ ├── page.dart
│ │ │ │ │ ├── place_circle.dart
│ │ │ │ │ ├── place_marker.dart
│ │ │ │ │ ├── place_polygon.dart
│ │ │ │ │ ├── place_polyline.dart
│ │ │ │ │ ├── readme_excerpts.dart
│ │ │ │ │ ├── scrolling_map.dart
│ │ │ │ │ ├── snapshot.dart
│ │ │ │ │ └── tile_overlay.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ ├── google_maps_flutter_android.dart
│ │ │ │ └── src/
│ │ │ │ ├── google_map_inspector_android.dart
│ │ │ │ └── google_maps_flutter_android.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── google_maps_flutter_android_test.dart
│ │ ├── google_maps_flutter_ios/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── assets/
│ │ │ │ │ └── night_mode.json
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── google_maps_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ ├── FLTGoogleMapJSONConversionsConversionTests.m
│ │ │ │ │ │ ├── GoogleMapsTests.m
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── PartiallyMockedMapView.h
│ │ │ │ │ │ └── PartiallyMockedMapView.m
│ │ │ │ │ └── RunnerUITests/
│ │ │ │ │ ├── GoogleMapsUITests.m
│ │ │ │ │ └── Info.plist
│ │ │ │ ├── lib/
│ │ │ │ │ ├── animate_camera.dart
│ │ │ │ │ ├── example_google_map.dart
│ │ │ │ │ ├── lite_mode.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ ├── map_click.dart
│ │ │ │ │ ├── map_coordinates.dart
│ │ │ │ │ ├── map_ui.dart
│ │ │ │ │ ├── marker_icons.dart
│ │ │ │ │ ├── move_camera.dart
│ │ │ │ │ ├── padding.dart
│ │ │ │ │ ├── page.dart
│ │ │ │ │ ├── place_circle.dart
│ │ │ │ │ ├── place_marker.dart
│ │ │ │ │ ├── place_polygon.dart
│ │ │ │ │ ├── place_polyline.dart
│ │ │ │ │ ├── scrolling_map.dart
│ │ │ │ │ ├── snapshot.dart
│ │ │ │ │ └── tile_overlay.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── ios/
│ │ │ │ ├── Assets/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── FLTGoogleMapJSONConversions.h
│ │ │ │ │ ├── FLTGoogleMapJSONConversions.m
│ │ │ │ │ ├── FLTGoogleMapTileOverlayController.h
│ │ │ │ │ ├── FLTGoogleMapTileOverlayController.m
│ │ │ │ │ ├── FLTGoogleMapsPlugin.h
│ │ │ │ │ ├── FLTGoogleMapsPlugin.m
│ │ │ │ │ ├── GoogleMapCircleController.h
│ │ │ │ │ ├── GoogleMapCircleController.m
│ │ │ │ │ ├── GoogleMapController.h
│ │ │ │ │ ├── GoogleMapController.m
│ │ │ │ │ ├── GoogleMapController_Test.h
│ │ │ │ │ ├── GoogleMapMarkerController.h
│ │ │ │ │ ├── GoogleMapMarkerController.m
│ │ │ │ │ ├── GoogleMapPolygonController.h
│ │ │ │ │ ├── GoogleMapPolygonController.m
│ │ │ │ │ ├── GoogleMapPolylineController.h
│ │ │ │ │ ├── GoogleMapPolylineController.m
│ │ │ │ │ ├── google_maps_flutter_ios-umbrella.h
│ │ │ │ │ └── google_maps_flutter_ios.modulemap
│ │ │ │ └── google_maps_flutter_ios.podspec
│ │ │ ├── lib/
│ │ │ │ ├── google_maps_flutter_ios.dart
│ │ │ │ └── src/
│ │ │ │ ├── google_map_inspector_ios.dart
│ │ │ │ └── google_maps_flutter_ios.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── google_maps_flutter_ios_test.dart
│ │ ├── google_maps_flutter_platform_interface/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── google_maps_flutter_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── events/
│ │ │ │ │ └── map_event.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ └── method_channel_google_maps_flutter.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ ├── google_maps_flutter_platform.dart
│ │ │ │ │ └── google_maps_inspector_platform.dart
│ │ │ │ └── types/
│ │ │ │ ├── bitmap.dart
│ │ │ │ ├── callbacks.dart
│ │ │ │ ├── camera.dart
│ │ │ │ ├── cap.dart
│ │ │ │ ├── circle.dart
│ │ │ │ ├── circle_updates.dart
│ │ │ │ ├── joint_type.dart
│ │ │ │ ├── location.dart
│ │ │ │ ├── map_configuration.dart
│ │ │ │ ├── map_objects.dart
│ │ │ │ ├── map_widget_configuration.dart
│ │ │ │ ├── maps_object.dart
│ │ │ │ ├── maps_object_updates.dart
│ │ │ │ ├── marker.dart
│ │ │ │ ├── marker_updates.dart
│ │ │ │ ├── pattern_item.dart
│ │ │ │ ├── polygon.dart
│ │ │ │ ├── polygon_updates.dart
│ │ │ │ ├── polyline.dart
│ │ │ │ ├── polyline_updates.dart
│ │ │ │ ├── screen_coordinate.dart
│ │ │ │ ├── tile.dart
│ │ │ │ ├── tile_overlay.dart
│ │ │ │ ├── tile_overlay_updates.dart
│ │ │ │ ├── tile_provider.dart
│ │ │ │ ├── types.dart
│ │ │ │ ├── ui.dart
│ │ │ │ └── utils/
│ │ │ │ ├── circle.dart
│ │ │ │ ├── map_configuration_serialization.dart
│ │ │ │ ├── maps_object.dart
│ │ │ │ ├── marker.dart
│ │ │ │ ├── polygon.dart
│ │ │ │ ├── polyline.dart
│ │ │ │ └── tile_overlay.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel/
│ │ │ │ └── method_channel_google_maps_flutter_test.dart
│ │ │ ├── platform_interface/
│ │ │ │ ├── google_maps_flutter_platform_test.dart
│ │ │ │ └── google_maps_inspector_platform_test.dart
│ │ │ ├── types/
│ │ │ │ ├── bitmap_test.dart
│ │ │ │ ├── camera_test.dart
│ │ │ │ ├── location_test.dart
│ │ │ │ ├── map_configuration_test.dart
│ │ │ │ ├── maps_object_test.dart
│ │ │ │ ├── maps_object_updates_test.dart
│ │ │ │ ├── marker_test.dart
│ │ │ │ ├── test_maps_object.dart
│ │ │ │ ├── tile_overlay_test.dart
│ │ │ │ ├── tile_overlay_updates_test.dart
│ │ │ │ └── tile_test.dart
│ │ │ └── utils/
│ │ │ └── map_configuration_serialization_test.dart
│ │ └── google_maps_flutter_web/
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── README.md
│ │ │ ├── build.yaml
│ │ │ ├── integration_test/
│ │ │ │ ├── google_maps_controller_test.dart
│ │ │ │ ├── google_maps_controller_test.mocks.dart
│ │ │ │ ├── google_maps_plugin_test.dart
│ │ │ │ ├── google_maps_plugin_test.mocks.dart
│ │ │ │ ├── marker_test.dart
│ │ │ │ ├── markers_test.dart
│ │ │ │ ├── projection_test.dart
│ │ │ │ ├── resources/
│ │ │ │ │ └── icon_image_base64.dart
│ │ │ │ ├── shape_test.dart
│ │ │ │ └── shapes_test.dart
│ │ │ ├── lib/
│ │ │ │ └── main.dart
│ │ │ ├── pubspec.yaml
│ │ │ ├── regen_mocks.sh
│ │ │ ├── run_test.sh
│ │ │ ├── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ └── web/
│ │ │ └── index.html
│ │ ├── lib/
│ │ │ ├── google_maps_flutter_web.dart
│ │ │ └── src/
│ │ │ ├── circle.dart
│ │ │ ├── circles.dart
│ │ │ ├── convert.dart
│ │ │ ├── google_maps_controller.dart
│ │ │ ├── google_maps_flutter_web.dart
│ │ │ ├── marker.dart
│ │ │ ├── markers.dart
│ │ │ ├── polygon.dart
│ │ │ ├── polygons.dart
│ │ │ ├── polyline.dart
│ │ │ ├── polylines.dart
│ │ │ ├── shims/
│ │ │ │ ├── dart_ui.dart
│ │ │ │ ├── dart_ui_fake.dart
│ │ │ │ └── dart_ui_real.dart
│ │ │ ├── third_party/
│ │ │ │ └── to_screen_location/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ └── to_screen_location.dart
│ │ │ └── types.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── README.md
│ │ └── tests_exist_elsewhere_test.dart
│ ├── google_sign_in/
│ │ ├── google_sign_in/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── googlesigninexample/
│ │ │ │ │ │ │ └── FlutterActivityTest.java
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ └── googlesigninexample/
│ │ │ │ │ │ │ └── GoogleSignInTestActivity.java
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── strings.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── google_sign_in_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── GoogleSignInPluginTest/
│ │ │ │ │ │ └── Info.plist
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── web/
│ │ │ │ └── index.html
│ │ │ ├── lib/
│ │ │ │ ├── google_sign_in.dart
│ │ │ │ ├── src/
│ │ │ │ │ ├── common.dart
│ │ │ │ │ └── fife.dart
│ │ │ │ ├── testing.dart
│ │ │ │ └── widgets.dart
│ │ │ ├── pubspec.yaml
│ │ │ ├── resources/
│ │ │ │ └── README.md
│ │ │ └── test/
│ │ │ ├── fife_test.dart
│ │ │ ├── google_sign_in_test.dart
│ │ │ ├── google_sign_in_test.mocks.dart
│ │ │ └── widgets_test.dart
│ │ ├── google_sign_in_android/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── googlesignin/
│ │ │ │ │ ├── BackgroundTaskRunner.java
│ │ │ │ │ ├── Executors.java
│ │ │ │ │ ├── GoogleSignInPlugin.java
│ │ │ │ │ └── GoogleSignInWrapper.java
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── googlesignin/
│ │ │ │ └── GoogleSignInTest.java
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── googlesigninexample/
│ │ │ │ │ │ │ ├── FlutterActivityTest.java
│ │ │ │ │ │ │ └── GoogleSignInTest.java
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ └── googlesigninexample/
│ │ │ │ │ │ │ └── GoogleSignInTestActivity.java
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── strings.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── google_sign_in_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ ├── google_sign_in_android.dart
│ │ │ │ └── src/
│ │ │ │ └── utils.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── google_sign_in_android_test.dart
│ │ ├── google_sign_in_ios/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── google_sign_in_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── GoogleSignInPluginTest/
│ │ │ │ │ │ └── Info.plist
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ ├── GoogleSignInTests.m
│ │ │ │ │ │ └── Info.plist
│ │ │ │ │ └── RunnerUITests/
│ │ │ │ │ ├── GoogleSignInUITests.m
│ │ │ │ │ └── Info.plist
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── ios/
│ │ │ │ ├── Assets/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── FLTGoogleSignInPlugin.h
│ │ │ │ │ ├── FLTGoogleSignInPlugin.m
│ │ │ │ │ ├── FLTGoogleSignInPlugin.modulemap
│ │ │ │ │ ├── FLTGoogleSignInPlugin_Test.h
│ │ │ │ │ └── google_sign_in_ios-umbrella.h
│ │ │ │ └── google_sign_in_ios.podspec
│ │ │ ├── lib/
│ │ │ │ ├── google_sign_in_ios.dart
│ │ │ │ └── src/
│ │ │ │ └── utils.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── google_sign_in_ios_test.dart
│ │ ├── google_sign_in_platform_interface/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── google_sign_in_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel_google_sign_in.dart
│ │ │ │ ├── types.dart
│ │ │ │ └── utils.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── google_sign_in_platform_interface_test.dart
│ │ │ └── method_channel_google_sign_in_test.dart
│ │ └── google_sign_in_web/
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── README.md
│ │ │ ├── build.yaml
│ │ │ ├── integration_test/
│ │ │ │ ├── google_sign_in_web_test.dart
│ │ │ │ ├── google_sign_in_web_test.mocks.dart
│ │ │ │ ├── people_test.dart
│ │ │ │ ├── src/
│ │ │ │ │ ├── dom.dart
│ │ │ │ │ ├── jsify_as.dart
│ │ │ │ │ ├── jwt_examples.dart
│ │ │ │ │ └── person.dart
│ │ │ │ └── utils_test.dart
│ │ │ ├── lib/
│ │ │ │ └── main.dart
│ │ │ ├── pubspec.yaml
│ │ │ ├── regen_mocks.sh
│ │ │ ├── run_test.sh
│ │ │ ├── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ └── web/
│ │ │ └── index.html
│ │ ├── lib/
│ │ │ ├── google_sign_in_web.dart
│ │ │ └── src/
│ │ │ ├── gis_client.dart
│ │ │ ├── people.dart
│ │ │ └── utils.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── README.md
│ │ └── tests_exist_elsewhere_test.dart
│ ├── image_picker/
│ │ ├── image_picker/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── imagepickerexample/
│ │ │ │ │ │ │ └── FlutterActivityTest.java
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── io/
│ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ └── imagepickerexample/
│ │ │ │ │ │ └── ImagePickerTestActivity.java
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── image_picker_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ ├── Runner.xcscheme
│ │ │ │ │ │ └── RunnerUITests.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── image_picker_exampleTests/
│ │ │ │ │ └── Info.plist
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── lib/
│ │ │ │ └── image_picker.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── image_picker_deprecated_test.dart
│ │ │ ├── image_picker_test.dart
│ │ │ └── image_picker_test.mocks.dart
│ │ ├── image_picker_android/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── io/
│ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ └── imagepicker/
│ │ │ │ │ │ ├── ExifDataCopier.java
│ │ │ │ │ │ ├── FileUtils.java
│ │ │ │ │ │ ├── ImagePickerCache.java
│ │ │ │ │ │ ├── ImagePickerDelegate.java
│ │ │ │ │ │ ├── ImagePickerFileProvider.java
│ │ │ │ │ │ ├── ImagePickerPlugin.java
│ │ │ │ │ │ ├── ImagePickerUtils.java
│ │ │ │ │ │ └── ImageResizer.java
│ │ │ │ │ └── res/
│ │ │ │ │ └── xml/
│ │ │ │ │ └── flutter_image_picker_file_paths.xml
│ │ │ │ └── test/
│ │ │ │ ├── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── imagepicker/
│ │ │ │ │ ├── FileUtilTest.java
│ │ │ │ │ ├── ImagePickerCacheTest.java
│ │ │ │ │ ├── ImagePickerDelegateTest.java
│ │ │ │ │ ├── ImagePickerPluginTest.java
│ │ │ │ │ └── ImageResizerTest.java
│ │ │ │ └── resources/
│ │ │ │ └── mockito-extensions/
│ │ │ │ └── org.mockito.plugins.MockMaker
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── imagepickerexample/
│ │ │ │ │ │ │ ├── FlutterActivityTest.java
│ │ │ │ │ │ │ ├── ImagePickerPickTest.java
│ │ │ │ │ │ │ └── ImagePickerTest.java
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── io/
│ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ └── imagepickerexample/
│ │ │ │ │ │ ├── DriverExtensionActivity.java
│ │ │ │ │ │ ├── DummyContentProvider.java
│ │ │ │ │ │ └── ImagePickerTestActivity.java
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── image_picker_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ └── image_picker_android.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── image_picker_android_test.dart
│ │ ├── image_picker_for_web/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ ├── image_picker_for_web_test.dart
│ │ │ │ │ └── image_resizer_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── run_test.sh
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── web/
│ │ │ │ └── index.html
│ │ │ ├── lib/
│ │ │ │ ├── image_picker_for_web.dart
│ │ │ │ └── src/
│ │ │ │ ├── image_resizer.dart
│ │ │ │ └── image_resizer_utils.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── README.md
│ │ │ ├── image_resizer_utils_test.dart
│ │ │ └── tests_exist_elsewhere_test.dart
│ │ ├── image_picker_ios/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── image_picker_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ ├── Runner.xcscheme
│ │ │ │ │ │ └── RunnerUITests.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ ├── ImagePickerPluginTests.m
│ │ │ │ │ │ ├── ImagePickerTestImages.h
│ │ │ │ │ │ ├── ImagePickerTestImages.m
│ │ │ │ │ │ ├── ImageUtilTests.m
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MetaDataUtilTests.m
│ │ │ │ │ │ ├── PhotoAssetUtilTests.m
│ │ │ │ │ │ └── PickerSaveImageToPathOperationTests.m
│ │ │ │ │ ├── RunnerUITests/
│ │ │ │ │ │ ├── ImagePickerFromGalleryUITests.m
│ │ │ │ │ │ ├── ImagePickerFromLimitedGalleryUITests.m
│ │ │ │ │ │ └── Info.plist
│ │ │ │ │ ├── TestImages/
│ │ │ │ │ │ ├── heicImage.heic
│ │ │ │ │ │ ├── icnsImage.icns
│ │ │ │ │ │ ├── proRawImage.dng
│ │ │ │ │ │ └── tiffImage.tiff
│ │ │ │ │ └── image_picker_exampleTests/
│ │ │ │ │ └── Info.plist
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── ios/
│ │ │ │ ├── Assets/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── FLTImagePickerImageUtil.h
│ │ │ │ │ ├── FLTImagePickerImageUtil.m
│ │ │ │ │ ├── FLTImagePickerMetaDataUtil.h
│ │ │ │ │ ├── FLTImagePickerMetaDataUtil.m
│ │ │ │ │ ├── FLTImagePickerPhotoAssetUtil.h
│ │ │ │ │ ├── FLTImagePickerPhotoAssetUtil.m
│ │ │ │ │ ├── FLTImagePickerPlugin.h
│ │ │ │ │ ├── FLTImagePickerPlugin.m
│ │ │ │ │ ├── FLTImagePickerPlugin_Test.h
│ │ │ │ │ ├── FLTPHPickerSaveImageToPathOperation.h
│ │ │ │ │ ├── FLTPHPickerSaveImageToPathOperation.m
│ │ │ │ │ ├── ImagePickerPlugin.modulemap
│ │ │ │ │ ├── image_picker_ios-umbrella.h
│ │ │ │ │ ├── messages.g.h
│ │ │ │ │ └── messages.g.m
│ │ │ │ └── image_picker_ios.podspec
│ │ │ ├── lib/
│ │ │ │ ├── image_picker_ios.dart
│ │ │ │ └── src/
│ │ │ │ └── messages.g.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── image_picker_ios_test.dart
│ │ │ └── test_api.g.dart
│ │ ├── image_picker_platform_interface/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── image_picker_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ └── method_channel_image_picker.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ └── image_picker_platform.dart
│ │ │ │ └── types/
│ │ │ │ ├── camera_device.dart
│ │ │ │ ├── image_options.dart
│ │ │ │ ├── image_picker_options.dart
│ │ │ │ ├── image_source.dart
│ │ │ │ ├── lost_data_response.dart
│ │ │ │ ├── multi_image_picker_options.dart
│ │ │ │ ├── picked_file/
│ │ │ │ │ ├── base.dart
│ │ │ │ │ ├── html.dart
│ │ │ │ │ ├── io.dart
│ │ │ │ │ ├── lost_data.dart
│ │ │ │ │ ├── picked_file.dart
│ │ │ │ │ └── unsupported.dart
│ │ │ │ ├── retrieve_type.dart
│ │ │ │ └── types.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── assets/
│ │ │ │ └── hello.txt
│ │ │ ├── new_method_channel_image_picker_test.dart
│ │ │ ├── picked_file_html_test.dart
│ │ │ └── picked_file_io_test.dart
│ │ └── image_picker_windows/
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ └── main.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── flutter/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ └── generated_plugins.cmake
│ │ │ └── runner/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Runner.rc
│ │ │ ├── flutter_window.cpp
│ │ │ ├── flutter_window.h
│ │ │ ├── main.cpp
│ │ │ ├── resource.h
│ │ │ ├── runner.exe.manifest
│ │ │ ├── utils.cpp
│ │ │ ├── utils.h
│ │ │ ├── win32_window.cpp
│ │ │ └── win32_window.h
│ │ ├── lib/
│ │ │ └── image_picker_windows.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── image_picker_windows_test.dart
│ │ └── image_picker_windows_test.mocks.dart
│ ├── in_app_purchase/
│ │ ├── in_app_purchase/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── inapppurchaseexample/
│ │ │ │ │ │ │ └── FlutterActivityTest.java
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ ├── keystore.example.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── in_app_purchase_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Configuration.storekit
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── lib/
│ │ │ │ │ ├── consumable_store.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ └── in_app_purchase.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── in_app_purchase_test.dart
│ │ ├── in_app_purchase_android/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── inapppurchase/
│ │ │ │ │ ├── BillingClientFactory.java
│ │ │ │ │ ├── BillingClientFactoryImpl.java
│ │ │ │ │ ├── InAppPurchasePlugin.java
│ │ │ │ │ ├── MethodCallHandlerImpl.java
│ │ │ │ │ ├── PluginPurchaseListener.java
│ │ │ │ │ └── Translator.java
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ ├── android/
│ │ │ │ │ ├── text/
│ │ │ │ │ │ └── TextUtils.java
│ │ │ │ │ └── util/
│ │ │ │ │ └── Log.java
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── inapppurchase/
│ │ │ │ ├── InAppPurchasePluginTest.java
│ │ │ │ ├── MethodCallHandlerTest.java
│ │ │ │ └── TranslatorTest.java
│ │ │ ├── build.yaml
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── inapppurchaseexample/
│ │ │ │ │ │ │ └── FlutterActivityTest.java
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ └── values/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── test/
│ │ │ │ │ │ └── resources/
│ │ │ │ │ │ └── mockito-extensions/
│ │ │ │ │ │ └── org.mockito.plugins.MockMaker
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ ├── keystore.example.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── in_app_purchase_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ ├── consumable_store.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── test/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ ├── billing_client_wrappers.dart
│ │ │ │ ├── in_app_purchase_android.dart
│ │ │ │ └── src/
│ │ │ │ ├── billing_client_wrappers/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── billing_client_wrapper.dart
│ │ │ │ │ ├── billing_client_wrapper.g.dart
│ │ │ │ │ ├── purchase_wrapper.dart
│ │ │ │ │ ├── purchase_wrapper.g.dart
│ │ │ │ │ ├── sku_details_wrapper.dart
│ │ │ │ │ └── sku_details_wrapper.g.dart
│ │ │ │ ├── channel.dart
│ │ │ │ ├── in_app_purchase_android_platform.dart
│ │ │ │ ├── in_app_purchase_android_platform_addition.dart
│ │ │ │ └── types/
│ │ │ │ ├── change_subscription_param.dart
│ │ │ │ ├── google_play_product_details.dart
│ │ │ │ ├── google_play_purchase_details.dart
│ │ │ │ ├── google_play_purchase_param.dart
│ │ │ │ ├── query_purchase_details_response.dart
│ │ │ │ └── types.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── billing_client_wrappers/
│ │ │ │ ├── billing_client_wrapper_test.dart
│ │ │ │ ├── purchase_wrapper_test.dart
│ │ │ │ ├── sku_details_wrapper_deprecated_test.dart
│ │ │ │ └── sku_details_wrapper_test.dart
│ │ │ ├── in_app_purchase_android_platform_addition_test.dart
│ │ │ ├── in_app_purchase_android_platform_test.dart
│ │ │ └── stub_in_app_purchase_platform.dart
│ │ ├── in_app_purchase_platform_interface/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── in_app_purchase_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── errors/
│ │ │ │ │ ├── errors.dart
│ │ │ │ │ ├── in_app_purchase_error.dart
│ │ │ │ │ └── in_app_purchase_exception.dart
│ │ │ │ ├── in_app_purchase_platform.dart
│ │ │ │ ├── in_app_purchase_platform_addition.dart
│ │ │ │ ├── in_app_purchase_platform_addition_provider.dart
│ │ │ │ └── types/
│ │ │ │ ├── product_details.dart
│ │ │ │ ├── product_details_response.dart
│ │ │ │ ├── purchase_details.dart
│ │ │ │ ├── purchase_param.dart
│ │ │ │ ├── purchase_status.dart
│ │ │ │ ├── purchase_verification_data.dart
│ │ │ │ └── types.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── in_app_purchase_platform_test.dart
│ │ │ └── src/
│ │ │ ├── errors/
│ │ │ │ ├── in_app_purchase_error_test.dart
│ │ │ │ └── in_app_purchase_exception_test.dart
│ │ │ └── types/
│ │ │ └── product_details_test.dart
│ │ └── in_app_purchase_storekit/
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── build.yaml
│ │ ├── darwin/
│ │ │ ├── Classes/
│ │ │ │ ├── FIAObjectTranslator.h
│ │ │ │ ├── FIAObjectTranslator.m
│ │ │ │ ├── FIAPPaymentQueueDelegate.h
│ │ │ │ ├── FIAPPaymentQueueDelegate.m
│ │ │ │ ├── FIAPReceiptManager.h
│ │ │ │ ├── FIAPReceiptManager.m
│ │ │ │ ├── FIAPRequestHandler.h
│ │ │ │ ├── FIAPRequestHandler.m
│ │ │ │ ├── FIAPaymentQueueHandler.h
│ │ │ │ ├── FIAPaymentQueueHandler.m
│ │ │ │ ├── FIATransactionCache.h
│ │ │ │ ├── FIATransactionCache.m
│ │ │ │ ├── InAppPurchasePlugin.h
│ │ │ │ └── InAppPurchasePlugin.m
│ │ │ └── in_app_purchase_storekit.podspec
│ │ ├── example/
│ │ │ ├── README.md
│ │ │ ├── integration_test/
│ │ │ │ └── in_app_purchase_test.dart
│ │ │ ├── ios/
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ └── Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── README.md
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Configuration.storekit
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── main.m
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ └── Runner.xcworkspace/
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata/
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ ├── lib/
│ │ │ │ ├── consumable_store.dart
│ │ │ │ ├── example_payment_queue_delegate.dart
│ │ │ │ └── main.dart
│ │ │ ├── macos/
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ ├── Configs/
│ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ └── Release.entitlements
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ └── Runner.xcworkspace/
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata/
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ ├── pubspec.yaml
│ │ │ ├── shared/
│ │ │ │ └── RunnerTests/
│ │ │ │ ├── FIAPPaymentQueueDeleteTests.m
│ │ │ │ ├── FIATransactionCacheTests.m
│ │ │ │ ├── InAppPurchasePluginTests.m
│ │ │ │ ├── Info.plist
│ │ │ │ ├── PaymentQueueTests.m
│ │ │ │ ├── ProductRequestHandlerTests.m
│ │ │ │ ├── Stubs.h
│ │ │ │ ├── Stubs.m
│ │ │ │ └── TranslatorTests.m
│ │ │ └── test_driver/
│ │ │ └── integration_test.dart
│ │ ├── lib/
│ │ │ ├── in_app_purchase_storekit.dart
│ │ │ ├── src/
│ │ │ │ ├── channel.dart
│ │ │ │ ├── in_app_purchase_storekit_platform.dart
│ │ │ │ ├── in_app_purchase_storekit_platform_addition.dart
│ │ │ │ ├── store_kit_wrappers/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── enum_converters.dart
│ │ │ │ │ ├── enum_converters.g.dart
│ │ │ │ │ ├── sk_payment_queue_delegate_wrapper.dart
│ │ │ │ │ ├── sk_payment_queue_wrapper.dart
│ │ │ │ │ ├── sk_payment_queue_wrapper.g.dart
│ │ │ │ │ ├── sk_payment_transaction_wrappers.dart
│ │ │ │ │ ├── sk_payment_transaction_wrappers.g.dart
│ │ │ │ │ ├── sk_product_wrapper.dart
│ │ │ │ │ ├── sk_product_wrapper.g.dart
│ │ │ │ │ ├── sk_receipt_manager.dart
│ │ │ │ │ ├── sk_request_maker.dart
│ │ │ │ │ ├── sk_storefront_wrapper.dart
│ │ │ │ │ └── sk_storefront_wrapper.g.dart
│ │ │ │ └── types/
│ │ │ │ ├── app_store_product_details.dart
│ │ │ │ ├── app_store_purchase_details.dart
│ │ │ │ ├── app_store_purchase_param.dart
│ │ │ │ └── types.dart
│ │ │ └── store_kit_wrappers.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── fakes/
│ │ │ └── fake_storekit_platform.dart
│ │ ├── in_app_purchase_storekit_platform_addtion_test.dart
│ │ ├── in_app_purchase_storekit_platform_test.dart
│ │ └── store_kit_wrappers/
│ │ ├── sk_methodchannel_apis_test.dart
│ │ ├── sk_payment_queue_delegate_api_test.dart
│ │ ├── sk_product_test.dart
│ │ └── sk_test_stub_objects.dart
│ ├── integration_test/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ └── README.md
│ ├── ios_platform_images/
│ │ ├── .gitignore
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ └── Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ └── flutter.imageset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── Runner-Bridging-Header.h
│ │ │ │ │ └── textfile
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ └── RunnerTests/
│ │ │ │ ├── Info.plist
│ │ │ │ └── IosPlatformImagesTests.m
│ │ │ ├── lib/
│ │ │ │ └── main.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── widget_test.dart
│ │ ├── ios/
│ │ │ ├── .gitignore
│ │ │ ├── Assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── Classes/
│ │ │ │ ├── IosPlatformImagesPlugin.h
│ │ │ │ ├── IosPlatformImagesPlugin.m
│ │ │ │ ├── UIImage+ios_platform_images.h
│ │ │ │ └── UIImage+ios_platform_images.m
│ │ │ └── ios_platform_images.podspec
│ │ ├── lib/
│ │ │ └── ios_platform_images.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── ios_platform_images_test.dart
│ ├── local_auth/
│ │ ├── local_auth/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── localauth/
│ │ │ │ │ │ │ └── FlutterFragmentActivityTest.java
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ ├── settings.gradle
│ │ │ │ │ └── settings_aar.gradle
│ │ │ │ ├── build.excerpt.yaml
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── local_auth_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── lib/
│ │ │ │ │ ├── main.dart
│ │ │ │ │ └── readme_excerpts.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── windows/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── lib/
│ │ │ │ ├── error_codes.dart
│ │ │ │ ├── local_auth.dart
│ │ │ │ └── src/
│ │ │ │ └── local_auth.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── local_auth_test.dart
│ │ ├── local_auth_android/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── lint-baseline.xml
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── io/
│ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ └── localauth/
│ │ │ │ │ │ ├── AuthenticationHelper.java
│ │ │ │ │ │ └── LocalAuthPlugin.java
│ │ │ │ │ └── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ │ ├── fingerprint_initial_icon.xml
│ │ │ │ │ │ ├── fingerprint_success_icon.xml
│ │ │ │ │ │ ├── fingerprint_warning_icon.xml
│ │ │ │ │ │ ├── ic_done_white_24dp.xml
│ │ │ │ │ │ ├── ic_fingerprint_white_24dp.xml
│ │ │ │ │ │ └── ic_priority_high_white_24dp.xml
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── go_to_setting.xml
│ │ │ │ │ │ └── scan_fp.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ ├── dimens.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── localauth/
│ │ │ │ └── LocalAuthTest.java
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── localauth/
│ │ │ │ │ │ │ └── FlutterFragmentActivityTest.java
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ ├── settings.gradle
│ │ │ │ │ └── settings_aar.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── local_auth_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ ├── local_auth_android.dart
│ │ │ │ └── types/
│ │ │ │ └── auth_messages_android.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── local_auth_test.dart
│ │ ├── local_auth_ios/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── local_auth_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── RunnerTests/
│ │ │ │ │ ├── FLTLocalAuthPluginTests.m
│ │ │ │ │ └── Info.plist
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── ios/
│ │ │ │ ├── Assets/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── FLTLocalAuthPlugin.h
│ │ │ │ │ └── FLTLocalAuthPlugin.m
│ │ │ │ └── local_auth_ios.podspec
│ │ │ ├── lib/
│ │ │ │ ├── local_auth_ios.dart
│ │ │ │ └── types/
│ │ │ │ └── auth_messages_ios.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── local_auth_test.dart
│ │ ├── local_auth_platform_interface/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── default_method_channel_platform.dart
│ │ │ │ ├── local_auth_platform_interface.dart
│ │ │ │ └── types/
│ │ │ │ ├── auth_messages.dart
│ │ │ │ ├── auth_options.dart
│ │ │ │ ├── biometric_type.dart
│ │ │ │ └── types.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── default_method_channel_platform_test.dart
│ │ └── local_auth_windows/
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── README.md
│ │ │ ├── integration_test/
│ │ │ │ └── local_auth_test.dart
│ │ │ ├── lib/
│ │ │ │ └── main.dart
│ │ │ ├── pubspec.yaml
│ │ │ ├── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── flutter/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ └── generated_plugins.cmake
│ │ │ └── runner/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Runner.rc
│ │ │ ├── flutter_window.cpp
│ │ │ ├── flutter_window.h
│ │ │ ├── main.cpp
│ │ │ ├── resource.h
│ │ │ ├── runner.exe.manifest
│ │ │ ├── utils.cpp
│ │ │ ├── utils.h
│ │ │ ├── win32_window.cpp
│ │ │ └── win32_window.h
│ │ ├── lib/
│ │ │ ├── local_auth_windows.dart
│ │ │ ├── src/
│ │ │ │ └── messages.g.dart
│ │ │ └── types/
│ │ │ └── auth_messages_windows.dart
│ │ ├── pigeons/
│ │ │ ├── copyright.txt
│ │ │ └── messages.dart
│ │ ├── pubspec.yaml
│ │ ├── test/
│ │ │ └── local_auth_test.dart
│ │ └── windows/
│ │ ├── CMakeLists.txt
│ │ ├── include/
│ │ │ └── local_auth_windows/
│ │ │ └── local_auth_plugin.h
│ │ ├── local_auth.h
│ │ ├── local_auth_plugin.cpp
│ │ ├── local_auth_windows.cpp
│ │ ├── messages.g.cpp
│ │ ├── messages.g.h
│ │ └── test/
│ │ ├── local_auth_plugin_test.cpp
│ │ └── mocks.h
│ ├── path_provider/
│ │ ├── path_provider/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── pathprovider/
│ │ │ │ │ │ │ └── MainActivityTest.java
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── path_provider_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── RunnerTests/
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── PathProviderTests.m
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── linux/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ ├── flutter/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ │ ├── main.cc
│ │ │ │ │ ├── my_application.cc
│ │ │ │ │ └── my_application.h
│ │ │ │ ├── macos/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── run_loop.cpp
│ │ │ │ ├── run_loop.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── lib/
│ │ │ │ └── path_provider.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── path_provider_test.dart
│ │ ├── path_provider_android/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── pathprovider/
│ │ │ │ │ ├── Messages.java
│ │ │ │ │ ├── PathProviderPlugin.java
│ │ │ │ │ └── StorageDirectoryMapper.java
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── pathprovider/
│ │ │ │ └── StorageDirectoryMapperTest.java
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── pathprovider/
│ │ │ │ │ │ │ └── MainActivityTest.java
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── path_provider_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ ├── messages.g.dart
│ │ │ │ └── path_provider_android.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── messages_test.g.dart
│ │ │ └── path_provider_android_test.dart
│ │ ├── path_provider_foundation/
│ │ │ ├── .gitignore
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── darwin/
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── PathProviderPlugin.swift
│ │ │ │ │ └── messages.g.swift
│ │ │ │ ├── RunnerTests/
│ │ │ │ │ └── RunnerTests.swift
│ │ │ │ └── path_provider_foundation.podspec
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── path_provider_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── RunnerTests/
│ │ │ │ │ └── Info.plist
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── ios/
│ │ │ │ └── README.md
│ │ │ ├── lib/
│ │ │ │ ├── messages.g.dart
│ │ │ │ └── path_provider_foundation.dart
│ │ │ ├── macos/
│ │ │ │ └── README.md
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── messages_test.g.dart
│ │ │ ├── path_provider_foundation_test.dart
│ │ │ └── path_provider_foundation_test.mocks.dart
│ │ ├── path_provider_linux/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── path_provider_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── linux/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ ├── flutter/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ │ ├── main.cc
│ │ │ │ │ ├── my_application.cc
│ │ │ │ │ └── my_application.h
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ ├── path_provider_linux.dart
│ │ │ │ └── src/
│ │ │ │ ├── get_application_id.dart
│ │ │ │ ├── get_application_id_real.dart
│ │ │ │ ├── get_application_id_stub.dart
│ │ │ │ └── path_provider_linux.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── get_application_id_test.dart
│ │ │ └── path_provider_linux_test.dart
│ │ ├── path_provider_platform_interface/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── path_provider_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── enums.dart
│ │ │ │ └── method_channel_path_provider.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── method_channel_path_provider_test.dart
│ │ └── path_provider_windows/
│ │ ├── .gitignore
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── README.md
│ │ │ ├── integration_test/
│ │ │ │ └── path_provider_test.dart
│ │ │ ├── lib/
│ │ │ │ └── main.dart
│ │ │ ├── pubspec.yaml
│ │ │ ├── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── flutter/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ └── generated_plugins.cmake
│ │ │ └── runner/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Runner.rc
│ │ │ ├── flutter_window.cpp
│ │ │ ├── flutter_window.h
│ │ │ ├── main.cpp
│ │ │ ├── resource.h
│ │ │ ├── run_loop.cpp
│ │ │ ├── run_loop.h
│ │ │ ├── runner.exe.manifest
│ │ │ ├── utils.cpp
│ │ │ ├── utils.h
│ │ │ ├── win32_window.cpp
│ │ │ └── win32_window.h
│ │ ├── lib/
│ │ │ ├── path_provider_windows.dart
│ │ │ └── src/
│ │ │ ├── folders.dart
│ │ │ ├── folders_stub.dart
│ │ │ ├── path_provider_windows_real.dart
│ │ │ └── path_provider_windows_stub.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── path_provider_windows_test.dart
│ ├── plugin_platform_interface/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ └── plugin_platform_interface.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── plugin_platform_interface_test.dart
│ ├── quick_actions/
│ │ ├── quick_actions/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── quickactionsexample/
│ │ │ │ │ │ │ └── FlutterActivityTest.java
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ └── quickactionsexample/
│ │ │ │ │ │ │ └── QuickActionsTestActivity.java
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── quick_actions_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ ├── Runner.xcscheme
│ │ │ │ │ │ └── RunnerUITests.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── RunnerTests.m
│ │ │ │ │ └── RunnerUITests/
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── RunnerUITests.m
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ └── quick_actions.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── quick_actions_test.dart
│ │ ├── quick_actions_android/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── quickactions/
│ │ │ │ │ ├── MethodCallHandlerImpl.java
│ │ │ │ │ └── QuickActionsPlugin.java
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── quickactions/
│ │ │ │ └── QuickActionsTest.java
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── quickactionsexample/
│ │ │ │ │ │ │ ├── FlutterActivityTest.java
│ │ │ │ │ │ │ └── QuickActionsTest.java
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ └── quickactionsexample/
│ │ │ │ │ │ │ └── QuickActionsTestActivity.java
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── ic_launcher_background.xml
│ │ │ │ │ │ └── values/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── quick_actions_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ └── quick_actions_android.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── quick_actions_android_test.dart
│ │ ├── quick_actions_ios/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── quick_actions_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ ├── Runner.xcscheme
│ │ │ │ │ │ └── RunnerUITests.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ ├── DefaultShortcutItemParserTests.swift
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── Mocks/
│ │ │ │ │ │ │ ├── MockMethodChannel.swift
│ │ │ │ │ │ │ ├── MockShortcutItemParser.swift
│ │ │ │ │ │ │ └── MockShortcutItemProvider.swift
│ │ │ │ │ │ └── QuickActionsPluginTests.swift
│ │ │ │ │ └── RunnerUITests/
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── RunnerUITests.swift
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── ios/
│ │ │ │ ├── Assets/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── MethodChannel.swift
│ │ │ │ │ ├── QuickActionsPlugin.swift
│ │ │ │ │ ├── ShortcutItemParser.swift
│ │ │ │ │ └── ShortcutItemProviding.swift
│ │ │ │ └── quick_actions_ios.podspec
│ │ │ ├── lib/
│ │ │ │ └── quick_actions_ios.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── quick_actions_ios_test.dart
│ │ └── quick_actions_platform_interface/
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── method_channel/
│ │ │ │ └── method_channel_quick_actions.dart
│ │ │ ├── platform_interface/
│ │ │ │ └── quick_actions_platform.dart
│ │ │ ├── quick_actions_platform_interface.dart
│ │ │ └── types/
│ │ │ ├── quick_action_handler.dart
│ │ │ ├── shortcut_item.dart
│ │ │ └── types.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── method_channel_quick_actions_test.dart
│ │ └── quick_actions_platform_interface_test.dart
│ ├── shared_preferences/
│ │ ├── shared_preferences/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── sharedpreferencesexample/
│ │ │ │ │ │ │ ├── FlutterActivityTest.java
│ │ │ │ │ │ │ └── MainActivityTest.java
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── shared_preferences_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── Runner-Bridging-Header.h
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── linux/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ ├── flutter/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ │ ├── main.cc
│ │ │ │ │ ├── my_application.cc
│ │ │ │ │ └── my_application.h
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── run_loop.cpp
│ │ │ │ ├── run_loop.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── lib/
│ │ │ │ └── shared_preferences.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── shared_preferences_test.dart
│ │ ├── shared_preferences_android/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── lint-baseline.xml
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── sharedpreferences/
│ │ │ │ │ ├── MethodCallHandlerImpl.java
│ │ │ │ │ └── SharedPreferencesPlugin.java
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── sharedpreferences/
│ │ │ │ └── SharedPreferencesTest.java
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── sharedpreferencesexample/
│ │ │ │ │ │ │ └── MainActivityTest.java
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── shared_preferences_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ └── shared_preferences_android.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── shared_preferences_android_test.dart
│ │ ├── shared_preferences_foundation/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── darwin/
│ │ │ │ ├── Classes/
│ │ │ │ │ ├── SharedPreferencesPlugin.swift
│ │ │ │ │ └── messages.g.swift
│ │ │ │ ├── Tests/
│ │ │ │ │ └── RunnerTests.swift
│ │ │ │ └── shared_preferences_foundation.podspec
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── shared_preferences_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── RunnerTests/
│ │ │ │ │ └── Info.plist
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── ios/
│ │ │ │ └── README.md
│ │ │ ├── lib/
│ │ │ │ ├── messages.g.dart
│ │ │ │ └── shared_preferences_foundation.dart
│ │ │ ├── macos/
│ │ │ │ └── README.md
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright_header.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── shared_preferences_foundation_test.dart
│ │ │ └── test_api.g.dart
│ │ ├── shared_preferences_linux/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── shared_preferences_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── linux/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ ├── flutter/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ │ ├── main.cc
│ │ │ │ │ ├── my_application.cc
│ │ │ │ │ └── my_application.h
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ ├── lib/
│ │ │ │ └── shared_preferences_linux.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── shared_preferences_linux_test.dart
│ │ ├── shared_preferences_platform_interface/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── method_channel_shared_preferences.dart
│ │ │ │ └── shared_preferences_platform_interface.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel_shared_preferences_test.dart
│ │ │ └── shared_preferences_platform_interface_test.dart
│ │ ├── shared_preferences_web/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── shared_preferences_web_test.dart
│ │ │ │ ├── lib/
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── run_test.sh
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── web/
│ │ │ │ └── index.html
│ │ │ ├── lib/
│ │ │ │ └── shared_preferences_web.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── README.md
│ │ │ └── tests_exist_elsewhere_test.dart
│ │ └── shared_preferences_windows/
│ │ ├── .metadata
│ │ ├── AUTHORS
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── AUTHORS
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── integration_test/
│ │ │ │ └── shared_preferences_test.dart
│ │ │ ├── lib/
│ │ │ │ └── main.dart
│ │ │ ├── pubspec.yaml
│ │ │ ├── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── flutter/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ └── generated_plugins.cmake
│ │ │ └── runner/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Runner.rc
│ │ │ ├── flutter_window.cpp
│ │ │ ├── flutter_window.h
│ │ │ ├── main.cpp
│ │ │ ├── resource.h
│ │ │ ├── run_loop.cpp
│ │ │ ├── run_loop.h
│ │ │ ├── runner.exe.manifest
│ │ │ ├── utils.cpp
│ │ │ ├── utils.h
│ │ │ ├── win32_window.cpp
│ │ │ └── win32_window.h
│ │ ├── lib/
│ │ │ └── shared_preferences_windows.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── shared_preferences_windows_test.dart
│ ├── url_launcher/
│ │ ├── url_launcher/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── urllauncherexample/
│ │ │ │ │ │ │ └── FlutterActivityTest.java
│ │ │ │ │ │ └── main/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── build.excerpt.yaml
│ │ │ │ ├── integration_test/
│ │ │ │ │ └── url_launcher_test.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── lib/
│ │ │ │ │ ├── basic.dart
│ │ │ │ │ ├── encoding.dart
│ │ │ │ │ ├── files.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── linux/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ ├── flutter/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ │ ├── main.cc
│ │ │ │ │ ├── my_application.cc
│ │ │ │ │ └── my_application.h
│ │ │ │ ├── macos/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── generated_plugins.cmake
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── run_loop.cpp
│ │ │ │ ├── run_loop.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── lib/
│ │ │ │ ├── link.dart
│ │ │ │ ├── src/
│ │ │ │ │ ├── legacy_api.dart
│ │ │ │ │ ├── link.dart
│ │ │ │ │ ├── type_conversion.dart
│ │ │ │ │ ├── types.dart
│ │ │ │ │ ├── url_launcher_string.dart
│ │ │ │ │ └── url_launcher_uri.dart
│ │ │ │ ├── url_launcher.dart
│ │ │ │ └── url_launcher_string.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── link_test.dart
│ │ │ ├── mocks/
│ │ │ │ └── mock_url_launcher_platform.dart
│ │ │ └── src/
│ │ │ ├── legacy_api_test.dart
│ │ │ ├── url_launcher_string_test.dart
│ │ │ └── url_launcher_uri_test.dart
│ │ ├── url_launcher_android/
│ │ │ ├── AUTHORS
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── urllauncher/
│ │ │ │ │ ├── MethodCallHandlerImpl.java
│ │ │ │ │ ├── UrlLauncher.java
│ │ │ │ │ ├── UrlLauncherPlugin.java
│ │ │ │ │ └── WebViewActivity.java
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── urllauncher/
│ │ │ │ ├── MethodCallHandlerImplTest.java
│ │ │ │ └── WebViewActivityTest.java
│ │ │ ├── example/
│ │ │ │ ├── README.md
│ │ │ │ ├── android/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── gradle/
│ │ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── androidTest/
│ │ │ │ │ │ │ └── java/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ ├── DartIntegrationTest.java
│ │ │ │ │ │ │ └── urllauncherexample/
│ │ │ │ │ │ │ └── FlutterActivityTest.java
│ │ │ │
================================================
FILE CONTENTS
================================================
================================================
FILE: .ci/Dockerfile
================================================
# The Flutter version is not important here, since the CI scripts update Flutter
# before running. What matters is that the base image is pinned to minimize
# unintended changes when modifying this file.
# This is the hash for the 3.0.0 image.
FROM cirrusci/flutter@sha256:0224587bba33241cf908184283ec2b544f1b672d87043ead1c00521c368cf844
RUN apt-get update -y
# Set up Firebase Test Lab requirements.
RUN apt-get install -y --no-install-recommends gnupg
RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | \
sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | \
sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
RUN apt-get update && apt-get install -y google-cloud-sdk && \
gcloud config set core/disable_usage_reporting true && \
gcloud config set component_manager/disable_update_check true
# Install formatter for C-based languages.
RUN apt-get install -y clang-format
# Install Linux desktop requirements:
# - build tools.
RUN apt-get install -y clang cmake ninja-build file pkg-config
# - libraries.
RUN apt-get install -y libgtk-3-dev libblkid-dev liblzma-dev libgcrypt20-dev
# - xvfb to allow running headless.
RUN apt-get install -y xvfb libegl1-mesa
# Install Chrome and make it the default browser, for url_launcher tests.
# IMPORTANT: Web tests should use a pinned version of Chromium, not this, since
# this isn't pinned, so any time the docker image is re-created the version of
# Chrome may change.
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
RUN echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
RUN apt-get update && apt-get install -y --no-install-recommends google-chrome-stable
# Make Chrome the default for http:, https: and file:.
RUN apt-get install -y xdg-utils
RUN xdg-settings set default-web-browser google-chrome.desktop
RUN xdg-mime default google-chrome.desktop inode/directory
================================================
FILE: .ci/flutter_master.version
================================================
33e4d21f7c13e02a7c92c7272309afbff792a864
================================================
FILE: .ci/flutter_stable.version
================================================
7048ed95a5ad3e43d697e0c397464193991fc230
================================================
FILE: .ci/scripts/build_all_plugins.sh
================================================
#!/bin/bash
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
platform="$1"
build_mode="$2"
shift 2
cd all_packages
flutter build "$platform" --"$build_mode" "$@"
================================================
FILE: .ci/scripts/build_examples_win32.sh
================================================
#!/bin/bash
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
dart pub global run flutter_plugin_tools build-examples --windows \
--packages-for-branch --log-timing
================================================
FILE: .ci/scripts/create_all_plugins_app.sh
================================================
#!/bin/bash
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
dart pub global run flutter_plugin_tools create-all-packages-app \
--output-dir=. --exclude script/configs/exclude_all_packages_app.yaml
================================================
FILE: .ci/scripts/create_simulator.sh
================================================
#!/bin/bash
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
device=com.apple.CoreSimulator.SimDeviceType.iPhone-13
os=com.apple.CoreSimulator.SimRuntime.iOS-16-0
xcrun simctl list
xcrun simctl create Flutter-iPhone "$device" "$os" | xargs xcrun simctl boot
================================================
FILE: .ci/scripts/drive_examples_win32.sh
================================================
#!/bin/bash
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
dart pub global run flutter_plugin_tools drive-examples --windows \
--exclude=script/configs/exclude_integration_win32.yaml --packages-for-branch --log-timing
================================================
FILE: .ci/scripts/native_test_win32.sh
================================================
#!/bin/bash
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
dart pub global run flutter_plugin_tools native-test --windows \
--no-integration --packages-for-branch --log-timing
================================================
FILE: .ci/scripts/prepare_tool.sh
================================================
#!/bin/bash
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# To set FETCH_HEAD for "git merge-base" to work
git fetch origin main
# Pinned version of the plugin tools, to avoid breakage in this repository
# when pushing updates from flutter/packages.
dart pub global activate flutter_plugin_tools 0.13.4+3
================================================
FILE: .ci/targets/ios_build_all_plugins.yaml
================================================
tasks:
- name: prepare tool
script: .ci/scripts/prepare_tool.sh
- name: create all_plugins app
script: .ci/scripts/create_all_plugins_app.sh
- name: build all_plugins for iOS debug
script: .ci/scripts/build_all_plugins.sh
args: ["ios", "debug", "--no-codesign"]
- name: build all_plugins for iOS release
script: .ci/scripts/build_all_plugins.sh
args: ["ios", "release", "--no-codesign"]
================================================
FILE: .ci/targets/ios_platform_tests.yaml
================================================
tasks:
- name: prepare tool
script: .ci/scripts/prepare_tool.sh
- name: create simulator
script: .ci/scripts/create_simulator.sh
- name: build examples
script: script/tool_runner.sh
args: ["build-examples", "--ios"]
- name: xcode analyze
script: script/tool_runner.sh
args: ["xcode-analyze", "--ios"]
- name: xcode analyze deprecation
# Ensure we don't accidentally introduce deprecated code.
script: script/tool_runner.sh
args: ["xcode-analyze", "--ios", "--ios-min-version=13.0"]
- name: native test
script: script/tool_runner.sh
args: ["native-test", "--ios", "--ios-destination", "platform=iOS Simulator,name=iPhone 13,OS=latest"]
- name: drive examples
# `drive-examples` contains integration tests, which changes the UI of the application.
# This UI change sometimes affects `xctest`.
# So we run `drive-examples` after `native-test`; changing the order will result ci failure.
script: script/tool_runner.sh
args: ["drive-examples", "--ios", "--exclude=script/configs/exclude_integration_ios.yaml"]
================================================
FILE: .ci/targets/macos_build_all_plugins.yaml
================================================
tasks:
- name: prepare tool
script: .ci/scripts/prepare_tool.sh
- name: create all_plugins app
script: .ci/scripts/create_all_plugins_app.sh
- name: build all_plugins for macOS debug
script: .ci/scripts/build_all_plugins.sh
args: ["macos", "debug"]
- name: build all_plugins for macOS release
script: .ci/scripts/build_all_plugins.sh
args: ["macos", "release"]
================================================
FILE: .ci/targets/macos_lint_podspecs.yaml
================================================
tasks:
- name: prepare tool
script: .ci/scripts/prepare_tool.sh
- name: validate iOS and macOS podspecs
script: script/tool_runner.sh
args: ["podspec-check"]
================================================
FILE: .ci/targets/macos_platform_tests.yaml
================================================
tasks:
- name: prepare tool
script: .ci/scripts/prepare_tool.sh
- name: build examples
script: script/tool_runner.sh
args: ["build-examples", "--macos"]
- name: xcode analyze
script: script/tool_runner.sh
args: ["xcode-analyze", "--macos"]
- name: xcode analyze deprecation
# Ensure we don't accidentally introduce deprecated code.
script: script/tool_runner.sh
args: ["xcode-analyze", "--macos", "--macos-min-version=12.3"]
- name: native test
script: script/tool_runner.sh
args: ["native-test", "--macos"]
- name: drive examples
script: script/tool_runner.sh
args: ["drive-examples", "--macos", "--exclude=script/configs/exclude_integration_macos.yaml"]
================================================
FILE: .ci/targets/windows_build_all_plugins.yaml
================================================
tasks:
- name: prepare tool
script: .ci/scripts/prepare_tool.sh
- name: create all_plugins app
script: .ci/scripts/create_all_plugins_app.sh
- name: build all_plugins for Windows debug
script: .ci/scripts/build_all_plugins.sh
args: ["windows", "debug"]
- name: build all_plugins for Windows release
script: .ci/scripts/build_all_plugins.sh
args: ["windows", "release"]
================================================
FILE: .ci/targets/windows_build_and_platform_tests.yaml
================================================
tasks:
- name: prepare tool
script: .ci/scripts/prepare_tool.sh
- name: build examples (Win32)
script: .ci/scripts/build_examples_win32.sh
- name: native unit tests (Win32)
script: .ci/scripts/native_test_win32.sh
- name: drive examples (Win32)
script: .ci/scripts/drive_examples_win32.sh
================================================
FILE: .ci.yaml
================================================
# Describes the targets run in continuous integration environment.
#
# Flutter infra uses this file to generate a checklist of tasks to be performed
# for every commit.
#
# More information at:
# * https://github.com/flutter/cocoon/blob/main/CI_YAML.md
enabled_branches:
- main
platform_properties:
linux:
properties:
dependencies: >
[
{"dependency": "curl", "version": "version:7.64.0"}
]
device_type: none
os: Linux
windows:
properties:
dependencies: >
[
{"dependency": "certs", "version": "version:9563bb"}
]
device_type: none
os: Windows
mac_arm64:
properties:
dependencies: >-
[
{"dependency": "xcode", "version": "14a5294e"},
{"dependency": "gems", "version": "v3.3.14"}
]
os: Mac-12
device_type: none
cpu: arm64
xcode: 14a5294e # xcode 14.0 beta 5
mac_x64:
properties:
dependencies: >-
[
{"dependency": "xcode", "version": "14a5294e"},
{"dependency": "gems", "version": "v3.3.14"}
]
os: Mac-12
device_type: none
cpu: x86
xcode: 14a5294e # xcode 14.0 beta 5
targets:
### iOS+macOS tasks ***
# TODO(stuartmorgan): Move this to ARM once google_maps_flutter has ARM
# support. `pod lint` makes a synthetic target that doesn't respect the
# pod's arch exclusions, so fails to build.
# When moving it, rename the task and file to check_podspecs
- name: Mac_x64 lint_podspecs
recipe: plugins/plugins
timeout: 30
properties:
add_recipes_cq: "true"
version_file: flutter_master.version
target_file: macos_lint_podspecs.yaml
### macOS desktop tasks ###
# macos_platform_tests builds all the plugins on ARM, so this build is run
# on Intel to give us build coverage of both host types.
- name: Mac_x64 build_all_plugins master
recipe: plugins/plugins
timeout: 30
properties:
add_recipes_cq: "true"
version_file: flutter_master.version
target_file: macos_build_all_plugins.yaml
channel: master
- name: Mac_x64 build_all_plugins stable
recipe: plugins/plugins
timeout: 30
properties:
add_recipes_cq: "true"
version_file: flutter_stable.version
target_file: macos_build_all_plugins.yaml
channel: stable
- name: Mac_arm64 macos_platform_tests master
recipe: plugins/plugins
timeout: 60
properties:
channel: master
add_recipes_cq: "true"
version_file: flutter_master.version
target_file: macos_platform_tests.yaml
- name: Mac_arm64 macos_platform_tests stable
recipe: plugins/plugins
presubmit: false
timeout: 60
properties:
channel: stable
add_recipes_cq: "true"
version_file: flutter_stable.version
target_file: macos_platform_tests.yaml
### iOS tasks ###
# ios_platform_tests builds all the plugins on ARM, so this build is run
# on Intel to give us build coverage of both host types.
- name: Mac_x64 ios_build_all_plugins master
recipe: plugins/plugins
timeout: 30
properties:
channel: master
add_recipes_cq: "true"
version_file: flutter_master.version
target_file: ios_build_all_plugins.yaml
- name: Mac_x64 ios_build_all_plugins stable
recipe: plugins/plugins
timeout: 30
properties:
channel: stable
add_recipes_cq: "true"
version_file: flutter_stable.version
target_file: ios_build_all_plugins.yaml
# TODO(stuartmorgan): Change all of the ios_platform_tests_* task timeouts
# to 60 minutes once https://github.com/flutter/flutter/issues/119750 is
# fixed.
- name: Mac_arm64 ios_platform_tests_shard_1 master - plugins
recipe: plugins/plugins
timeout: 120
properties:
add_recipes_cq: "true"
version_file: flutter_master.version
target_file: ios_platform_tests.yaml
package_sharding: "--shardIndex 0 --shardCount 5"
- name: Mac_arm64 ios_platform_tests_shard_2 master - plugins
recipe: plugins/plugins
timeout: 120
properties:
add_recipes_cq: "true"
version_file: flutter_master.version
target_file: ios_platform_tests.yaml
package_sharding: "--shardIndex 1 --shardCount 5"
- name: Mac_arm64 ios_platform_tests_shard_3 master - plugins
recipe: plugins/plugins
timeout: 120
properties:
add_recipes_cq: "true"
version_file: flutter_master.version
target_file: ios_platform_tests.yaml
package_sharding: "--shardIndex 2 --shardCount 5"
- name: Mac_arm64 ios_platform_tests_shard_4 master - plugins
recipe: plugins/plugins
timeout: 120
properties:
add_recipes_cq: "true"
version_file: flutter_master.version
target_file: ios_platform_tests.yaml
package_sharding: "--shardIndex 3 --shardCount 5"
- name: Mac_arm64 ios_platform_tests_shard_5 master - plugins
recipe: plugins/plugins
timeout: 120
properties:
add_recipes_cq: "true"
version_file: flutter_master.version
target_file: ios_platform_tests.yaml
package_sharding: "--shardIndex 4 --shardCount 5"
# Don't run full platform tests on both channels in pre-submit.
- name: Mac_arm64 ios_platform_tests_shard_1 stable - plugins
recipe: plugins/plugins
presubmit: false
timeout: 120
properties:
channel: stable
add_recipes_cq: "true"
version_file: flutter_stable.version
target_file: ios_platform_tests.yaml
package_sharding: "--shardIndex 0 --shardCount 5"
- name: Mac_arm64 ios_platform_tests_shard_2 stable - plugins
recipe: plugins/plugins
presubmit: false
timeout: 120
properties:
channel: stable
add_recipes_cq: "true"
version_file: flutter_stable.version
target_file: ios_platform_tests.yaml
package_sharding: "--shardIndex 1 --shardCount 5"
- name: Mac_arm64 ios_platform_tests_shard_3 stable - plugins
recipe: plugins/plugins
presubmit: false
timeout: 120
properties:
channel: stable
add_recipes_cq: "true"
version_file: flutter_stable.version
target_file: ios_platform_tests.yaml
package_sharding: "--shardIndex 2 --shardCount 5"
- name: Mac_arm64 ios_platform_tests_shard_4 stable - plugins
recipe: plugins/plugins
presubmit: false
timeout: 120
properties:
channel: stable
add_recipes_cq: "true"
version_file: flutter_stable.version
target_file: ios_platform_tests.yaml
package_sharding: "--shardIndex 3 --shardCount 5"
- name: Mac_arm64 ios_platform_tests_shard_5 stable - plugins
recipe: plugins/plugins
presubmit: false
timeout: 120
properties:
channel: stable
add_recipes_cq: "true"
version_file: flutter_stable.version
target_file: ios_platform_tests.yaml
package_sharding: "--shardIndex 4 --shardCount 5"
- name: Windows win32-platform_tests master
recipe: plugins/plugins
timeout: 60
properties:
add_recipes_cq: "true"
target_file: windows_build_and_platform_tests.yaml
channel: master
version_file: flutter_master.version
dependencies: >
[
{"dependency": "vs_build", "version": "version:vs2019"}
]
- name: Windows win32-platform_tests stable
recipe: plugins/plugins
presubmit: false
timeout: 60
properties:
add_recipes_cq: "true"
target_file: windows_build_and_platform_tests.yaml
channel: stable
version_file: flutter_stable.version
dependencies: >
[
{"dependency": "vs_build", "version": "version:vs2019"}
]
- name: Windows windows-build_all_plugins master
recipe: plugins/plugins
timeout: 30
properties:
add_recipes_cq: "true"
target_file: windows_build_all_plugins.yaml
channel: master
version_file: flutter_master.version
dependencies: >
[
{"dependency": "vs_build", "version": "version:vs2019"}
]
- name: Windows windows-build_all_plugins stable
recipe: plugins/plugins
timeout: 30
properties:
add_recipes_cq: "true"
target_file: windows_build_all_plugins.yaml
channel: stable
version_file: flutter_stable.version
dependencies: >
[
{"dependency": "vs_build", "version": "version:vs2019"}
]
- name: Linux ci_yaml plugins roller
recipe: infra/ci_yaml
timeout: 30
runIf:
- .ci.yaml
================================================
FILE: .cirrus.yml
================================================
gcp_credentials: ENCRYPTED[!3a93d98d7c95a41f5033834ef30e50928fc5d81239dc632b153c2628200a8187f3811cb01ce338b1ab3b6505a7a65c37!]
# Run on PRs and main branch post submit only. Don't run tests when tagging.
only_if: $CIRRUS_TAG == '' && ($CIRRUS_PR != '' || $CIRRUS_BRANCH == 'main')
env:
CHANNEL: "master" # Default to master when not explicitly set by a task.
PLUGIN_TOOL_COMMAND: "dart pub global run flutter_plugin_tools"
install_chrome_linux_template: &INSTALL_CHROME_LINUX
env:
CHROME_NO_SANDBOX: true
CHROME_DOWNLOAD_DIR: /tmp/chromium
CHROME_EXECUTABLE: $CHROME_DOWNLOAD_DIR/chrome-linux/chrome
CHROMEDRIVER_EXECUTABLE: $CHROME_DOWNLOAD_DIR/chromedriver/chromedriver
PATH: $PATH:$CHROME_DOWNLOAD_DIR/chrome-linux
install_chromium_script:
# Install a pinned version of Chromium and its corresponding ChromeDriver.
# Setting CHROME_EXECUTABLE above causes this version to be used for tests.
- ./script/install_chromium.sh
tool_setup_template: &TOOL_SETUP_TEMPLATE
tool_setup_script:
- .ci/scripts/prepare_tool.sh
flutter_upgrade_template: &FLUTTER_UPGRADE_TEMPLATE
upgrade_flutter_script:
# Channels that are part of our normal test matrix use a pinned,
# auto-rolled version to prevent out-of-band CI failures due to changes in
# Flutter.
- TARGET_TREEISH=$CHANNEL
- if [[ "$CHANNEL" == "master" || "$CHANNEL" == "stable" ]]; then
- TARGET_TREEISH=$(< .ci/flutter_$CHANNEL.version)
- fi
# Ensure that the repository has all the branches.
- cd $FLUTTER_HOME
- git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
- git fetch origin
# Switch to the requested channel.
- git checkout $TARGET_TREEISH
# When using a branch rather than a hash or version tag, reset to the
# upstream branch rather than using pull, since the base image can sometimes
# be in a state where it has diverged from upstream (!).
- if [[ "$TARGET_TREEISH" == "$CHANNEL" ]] && [[ "$CHANNEL" != *"."* ]]; then
- git reset --hard @{u}
- fi
# Run doctor to allow auditing of what version of Flutter the run is using.
- flutter doctor -v
<< : *TOOL_SETUP_TEMPLATE
# Ensures that the latest versions of all of the 1P packages can be used
# together. See script/configs/exclude_all_packages_app.yaml for exceptions.
build_all_packages_app_template: &BUILD_ALL_PACKAGES_APP_TEMPLATE
create_all_packages_app_script:
- $PLUGIN_TOOL_COMMAND create-all-packages-app --output-dir=. --exclude script/configs/exclude_all_packages_app.yaml
build_all_packages_debug_script:
- cd all_packages
- if [[ "$BUILD_ALL_ARGS" == "web" ]]; then
- echo "Skipping; web does not support debug builds"
- else
- flutter build $BUILD_ALL_ARGS --debug
- fi
build_all_packages_release_script:
- cd all_packages
- flutter build $BUILD_ALL_ARGS --release
# Light-workload Linux tasks.
# These use default machines, with fewer CPUs, to reduce pressure on the
# concurrency limits.
task:
<< : *FLUTTER_UPGRADE_TEMPLATE
gke_container:
dockerfile: .ci/Dockerfile
builder_image_name: docker-builder-linux # gce vm image
builder_image_project: flutter-cirrus
cluster_name: test-cluster
zone: us-central1-a
namespace: default
matrix:
### Platform-agnostic tasks ###
# Repository rules and best-practice enforcement.
# Only channel-agnostic tests should go here since it is only run once
# (on Flutter master).
- name: repo_checks
always:
format_script: ./script/tool_runner.sh format --fail-on-change
license_script: $PLUGIN_TOOL_COMMAND license-check
# The major and minor versions here should match the lowest version
# analyzed in legacy_version_analyze.
pubspec_script: ./script/tool_runner.sh pubspec-check --min-min-flutter-version=3.0.0 --min-min-dart-version=2.17.0
readme_script:
- ./script/tool_runner.sh readme-check
# Re-run with --require-excerpts, skipping packages that still need
# to be converted. Once https://github.com/flutter/flutter/issues/102679
# has been fixed, this can be removed and there can just be a single
# run with --require-excerpts and no exclusions.
- ./script/tool_runner.sh readme-check --require-excerpts --exclude=script/configs/temp_exclude_excerpt.yaml
dependabot_script: $PLUGIN_TOOL_COMMAND dependabot-check
version_script:
# For pre-submit, pass the PR labels to the script to allow for
# check overrides.
# For post-submit, ignore platform version breaking version changes
# and missing version/CHANGELOG detection since the labels aren't
# available outside of the context of the PR.
- if [[ $CIRRUS_PR == "" ]]; then
- ./script/tool_runner.sh version-check --ignore-platform-interface-breaks
- else
- ./script/tool_runner.sh version-check --check-for-missing-changes --pr-labels="$CIRRUS_PR_LABELS"
- fi
publishable_script: ./script/tool_runner.sh publish-check --allow-pre-release
federated_safety_script:
# This check is only meaningful for PRs, as it validates changes
# rather than state.
- if [[ $CIRRUS_PR == "" ]]; then
- ./script/tool_runner.sh federation-safety-check
- else
- echo "Only run in presubmit"
- fi
- name: analyze
env:
matrix:
CHANNEL: "master"
CHANNEL: "stable"
analyze_script:
# DO NOT change the custom-analysis argument here without changing the Dart repo.
# See the comment in script/configs/custom_analysis.yaml for details.
- ./script/tool_runner.sh analyze --custom-analysis=script/configs/custom_analysis.yaml
pathified_analyze_script:
# Re-run analysis with path-based dependencies to ensure that publishing
# the changes won't break analysis of other packages in the respository
# that depend on it.
- ./script/tool_runner.sh make-deps-path-based --target-dependencies-with-non-breaking-updates
# This uses --run-on-dirty-packages rather than --packages-for-branch
# since only the packages changed by 'make-deps-path-based' need to be
# checked.
- $PLUGIN_TOOL_COMMAND analyze --run-on-dirty-packages --log-timing --custom-analysis=script/configs/custom_analysis.yaml
# Restore the tree to a clean state, to avoid accidental issues if
# other script steps are added to this task.
- git checkout .
# Does a sanity check that packages at least pass analysis on the N-1 and N-2
# versions of Flutter stable if the package claims to support that version.
# This is to minimize accidentally making changes that break old versions
# (which we don't commit to supporting, but don't want to actively break)
# without updating the constraints.
# Note: The versions below should be manually updated after a new stable
# version comes out.
- name: legacy_version_analyze
depends_on: analyze
matrix:
# Change the arguments to pubspec-check when changing these values.
env:
CHANNEL: "3.0.5"
DART_VERSION: "2.17.6"
env:
CHANNEL: "3.3.10"
DART_VERSION: "2.18.6"
package_prep_script:
# Allow analyzing packages that use a dev dependency with a higher
# minimum Flutter/Dart version than the package itself.
- ./script/tool_runner.sh remove-dev-dependencies
analyze_script:
# Only analyze lib/; non-client code doesn't need to work on
# all supported legacy version.
- ./script/tool_runner.sh analyze --lib-only --skip-if-not-supporting-flutter-version="$CHANNEL" --skip-if-not-supporting-dart-version="$DART_VERSION" --custom-analysis=script/configs/custom_analysis.yaml
# Does a sanity check that packages pass analysis with the lowest possible
# versions of all dependencies. This is to catch cases where we add use of
# new APIs but forget to update minimum versions of dependencies to where
# those APIs are introduced.
- name: downgraded_analyze
depends_on: analyze
analyze_script:
- ./script/tool_runner.sh analyze --downgrade --custom-analysis=script/configs/custom_analysis.yaml
- name: readme_excerpts
env:
CIRRUS_CLONE_SUBMODULES: true
script: ./script/tool_runner.sh update-excerpts --fail-on-change
### Web tasks ###
- name: web-build_all_packages
env:
BUILD_ALL_ARGS: "web"
matrix:
CHANNEL: "master"
CHANNEL: "stable"
<< : *BUILD_ALL_PACKAGES_APP_TEMPLATE
### Linux desktop tasks ###
- name: linux-build_all_packages
env:
BUILD_ALL_ARGS: "linux"
matrix:
CHANNEL: "master"
CHANNEL: "stable"
<< : *BUILD_ALL_PACKAGES_APP_TEMPLATE
- name: linux-platform_tests
# Don't run full platform tests on both channels in pre-submit.
skip: $CIRRUS_PR != '' && $CHANNEL == 'stable'
env:
matrix:
CHANNEL: "master"
CHANNEL: "stable"
build_script:
- ./script/tool_runner.sh build-examples --linux
native_test_script:
- xvfb-run ./script/tool_runner.sh native-test --linux --no-integration
drive_script:
- xvfb-run ./script/tool_runner.sh drive-examples --linux --exclude=script/configs/exclude_integration_linux.yaml
# Heavy-workload Linux tasks.
# These use machines with more CPUs and memory, so will reduce parallelization
# for non-credit runs.
task:
<< : *FLUTTER_UPGRADE_TEMPLATE
gke_container:
dockerfile: .ci/Dockerfile
builder_image_name: docker-builder-linux # gce vm image
builder_image_project: flutter-cirrus
cluster_name: test-cluster
zone: us-central1-a
namespace: default
cpu: 4
memory: 16G
matrix:
### Platform-agnostic tasks ###
- name: dart_unit_tests
env:
matrix:
CHANNEL: "master"
CHANNEL: "stable"
unit_test_script:
- ./script/tool_runner.sh test
### Android tasks ###
- name: android-platform_tests
# Don't run full platform tests on both channels in pre-submit.
skip: $CIRRUS_PR != '' && $CHANNEL == 'stable'
env:
matrix:
PACKAGE_SHARDING: "--shardIndex 0 --shardCount 5"
PACKAGE_SHARDING: "--shardIndex 1 --shardCount 5"
PACKAGE_SHARDING: "--shardIndex 2 --shardCount 5"
PACKAGE_SHARDING: "--shardIndex 3 --shardCount 5"
PACKAGE_SHARDING: "--shardIndex 4 --shardCount 5"
matrix:
CHANNEL: "master"
CHANNEL: "stable"
MAPS_API_KEY: ENCRYPTED[596a9f6bca436694625ac50851dc5da6b4d34cba8025f7db5bc9465142e8cd44e15f69e3507787753accebfc4910d550]
GCLOUD_FIREBASE_TESTLAB_KEY: ENCRYPTED[df5cf97036c09184e386edbf4ab1e741189e0ac5ca7e4c73673c4bf02d8709c9ac733597e8f5b6511b51eafb52e4027f]
build_script:
- ./script/tool_runner.sh build-examples --apk
lint_script:
- ./script/tool_runner.sh lint-android # must come after build-examples
native_unit_test_script:
# Native integration tests are handled by Firebase Test Lab below, so
# only run unit tests.
# Must come after build-examples.
- ./script/tool_runner.sh native-test --android --no-integration --exclude script/configs/exclude_native_unit_android.yaml
firebase_test_lab_script:
- if [[ -n "$GCLOUD_FIREBASE_TESTLAB_KEY" ]]; then
- echo $GCLOUD_FIREBASE_TESTLAB_KEY > ${HOME}/gcloud-service-key.json
- ./script/tool_runner.sh firebase-test-lab --device model=redfin,version=30 --device model=starqlteue,version=26 --exclude=script/configs/exclude_integration_android.yaml
- else
- echo "This user does not have permission to run Firebase Test Lab tests."
- fi
# Upload the full lint results to Cirrus to display in the results UI.
always:
android-lint_artifacts:
path: "**/reports/lint-results-debug.xml"
type: text/xml
format: android-lint
- name: android-build_all_packages
env:
BUILD_ALL_ARGS: "apk"
matrix:
CHANNEL: "master"
CHANNEL: "stable"
<< : *BUILD_ALL_PACKAGES_APP_TEMPLATE
### Web tasks ###
- name: web-platform_tests
env:
matrix:
PACKAGE_SHARDING: "--shardIndex 0 --shardCount 2"
PACKAGE_SHARDING: "--shardIndex 1 --shardCount 2"
matrix:
CHANNEL: "master"
CHANNEL: "stable"
<< : *INSTALL_CHROME_LINUX
chromedriver_background_script:
- $CHROMEDRIVER_EXECUTABLE --port=4444
build_script:
- ./script/tool_runner.sh build-examples --web
drive_script:
- ./script/tool_runner.sh drive-examples --web --exclude=script/configs/exclude_integration_web.yaml
================================================
FILE: .clang-format
================================================
BasedOnStyle: Google
---
Language: Cpp
DerivePointerAlignment: false
PointerAlignment: Left
---
Language: ObjC
DerivePointerAlignment: false
PointerAlignment: Right
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
# Always perform LF normalization on these files
*.dart text
*.gradle text
*.html text
*.java text
*.json text
*.md text
*.py text
*.sh text
*.txt text
*.xml text
*.yaml text
# Make sure that these Windows files always have CRLF line endings in checkout
*.bat text eol=crlf
*.ps1 text eol=crlf
# Never perform LF normalization on these files
*.ico binary
*.jar binary
*.png binary
*.zip binary
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
*Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.*
*List which issues are fixed by this PR. You must list at least one issue.*
*If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].*
## Pre-launch Checklist
- [ ] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
- [ ] I read the [Tree Hygiene] wiki page, which explains my responsibilities.
- [ ] I read and followed the [relevant style guides] and ran [the auto-formatter]. (Unlike the flutter/flutter repo, the flutter/plugins repo does use `dart format`.)
- [ ] I signed the [CLA].
- [ ] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. `[shared_preferences]`
- [ ] I listed at least one issue that this PR fixes in the description above.
- [ ] I updated `pubspec.yaml` with an appropriate new version according to the [pub versioning philosophy], or this PR is [exempt from version changes].
- [ ] I updated `CHANGELOG.md` to add a description of the change, [following repository CHANGELOG style].
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is [test-exempt].
- [ ] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-new channel on [Discord].
<!-- Links -->
[Contributor Guide]: https://github.com/flutter/plugins/blob/main/CONTRIBUTING.md
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[relevant style guides]: https://github.com/flutter/plugins/blob/main/CONTRIBUTING.md#style
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
[pub versioning philosophy]: https://dart.dev/tools/pub/versioning
[exempt from version changes]: https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#version-and-changelog-updates
[following repository CHANGELOG style]: https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changelog-style
[the auto-formatter]: https://github.com/flutter/plugins/blob/main/script/tool/README.md#format-code
[test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: "gradle"
directory: "/packages/camera/camera_android/android"
commit-message:
prefix: "[camera]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/camera/camera_android/example/android/app"
commit-message:
prefix: "[camera]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/camera/camera_android_camerax/android"
commit-message:
prefix: "[camera]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/camera/camera_android_camerax/example/android/app"
commit-message:
prefix: "[camera]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/camera/camera/example/android/app"
commit-message:
prefix: "[camera]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/espresso/android"
commit-message:
prefix: "[espresso]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/espresso/example/android/app"
commit-message:
prefix: "[espresso]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/flutter_plugin_android_lifecycle/android"
commit-message:
prefix: "[lifecycle]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/flutter_plugin_android_lifecycle/example/android/app"
commit-message:
prefix: "[lifecycle]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/google_maps_flutter/google_maps_flutter/example/android/app"
commit-message:
prefix: "[google_maps]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/google_maps_flutter/google_maps_flutter_android/android"
commit-message:
prefix: "[google_maps]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/google_maps_flutter/google_maps_flutter_android/example/android/app"
commit-message:
prefix: "[google_maps]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/google_sign_in/google_sign_in/example/android/app"
commit-message:
prefix: "[sign_in]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/google_sign_in/google_sign_in_android/android"
commit-message:
prefix: "[sign_in]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/google_sign_in/google_sign_in_android/example/android/app"
commit-message:
prefix: "[sign_in]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/in_app_purchase/in_app_purchase_android/android"
commit-message:
prefix: "[in_app_pur]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/in_app_purchase/in_app_purchase_android/example/android/app"
commit-message:
prefix: "[in_app_pur]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/in_app_purchase/in_app_purchase/example/android/app"
commit-message:
prefix: "[in_app_pur]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/image_picker/image_picker/example/android/app"
commit-message:
prefix: "[image_picker]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/image_picker/image_picker_android/android"
commit-message:
prefix: "[image_picker]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/image_picker/image_picker_android/example/android/app"
commit-message:
prefix: "[image_picker]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/local_auth/local_auth_android/android"
commit-message:
prefix: "[local_auth]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/local_auth/local_auth_android/example/android/app"
commit-message:
prefix: "[local_auth]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/local_auth/local_auth/example/android/app"
commit-message:
prefix: "[local_auth]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/path_provider/path_provider/example/android/app"
commit-message:
prefix: "[path_provider]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/path_provider/path_provider_android/android"
commit-message:
prefix: "[path_provider]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/path_provider/path_provider_android/example/android/app"
commit-message:
prefix: "[path_provider]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/quick_actions/quick_actions_android/android"
commit-message:
prefix: "[quick_actions]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/quick_actions/quick_actions_android/example/android/app"
commit-message:
prefix: "[quick_actions]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/quick_actions/quick_actions/example/android/app"
commit-message:
prefix: "[quick_actions]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/shared_preferences/shared_preferences/example/android/app"
commit-message:
prefix: "[shared_pref]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/shared_preferences/shared_preferences_android/android"
commit-message:
prefix: "[shared_pref]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/shared_preferences/shared_preferences_android/example/android/app"
commit-message:
prefix: "[shared_pref]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/url_launcher/url_launcher_android/android"
commit-message:
prefix: "[url_launcher]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/url_launcher/url_launcher_android/example/android/app"
commit-message:
prefix: "[url_launcher]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/url_launcher/url_launcher/example/android/app"
commit-message:
prefix: "[url_launcher]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/video_player/video_player/example/android/app"
commit-message:
prefix: "[video_player]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/video_player/video_player_android/android"
commit-message:
prefix: "[video_player]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/video_player/video_player_android/example/android/app"
commit-message:
prefix: "[video_player]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/webview_flutter/webview_flutter/example/android/app"
commit-message:
prefix: "[webview]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/webview_flutter/webview_flutter_android/android"
commit-message:
prefix: "[webview]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "com.android.tools.build:gradle"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "junit:junit"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.mockito:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "androidx.test:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- dependency-name: "org.robolectric:*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "gradle"
directory: "/packages/webview_flutter/webview_flutter_android/example/android/app"
commit-message:
prefix: "[webview]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: "github-actions"
directory: "/"
commit-message:
prefix: "[gh_actions]"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
================================================
FILE: .github/labeler.yml
================================================
'p: camera':
- packages/camera/**/*
'p: espresso':
- packages/espresso/**/*
'p: file_selector':
- packages/file_selector/**/*
'p: flutter_plugin_android_lifecycle':
- packages/flutter_plugin_android_lifecycle/**/*
'p: google_maps_flutter':
- packages/google_maps_flutter/**/*
'p: google_sign_in':
- packages/google_sign_in/**/*
'p: image_picker':
- packages/image_picker/**/*
'p: in_app_purchase':
- packages/in_app_purchase/**/*
'p: ios_platform_images':
- packages/ios_platform_images/**/*
'p: local_auth':
- packages/local_auth/**/*
'p: path_provider':
- packages/path_provider/**/*
'p: plugin_platform_interface':
- packages/plugin_platform_interface/**/*
'p: quick_actions':
- packages/quick_actions/**/*
'p: shared_preferences':
- packages/shared_preferences/**/*
'p: url_launcher':
- packages/url_launcher/**/*
'p: video_player':
- packages/video_player/**/*
'p: webview_flutter':
- packages/webview_flutter/**/*
'platform-android':
- packages/*/*_android/**/*
- packages/**/android/**/*
'platform-ios':
- packages/*/*_ios/**/*
- packages/*/*_storekit/**/*
- packages/*/*_wkwebview/**/*
- packages/**/ios/**/*
'platform-linux':
- packages/*/*_linux/**/*
- packages/**/linux/**/*
'platform-macos':
- packages/*/*_macos/**/*
- packages/**/macos/**/*
'platform-web':
- packages/*/*_web/**/*
- packages/**/web/**/*
'platform-windows':
- packages/*/*_windows/**/*
- packages/**/windows/**/*
================================================
FILE: .github/post_merge_labeler.yml
================================================
'needs-publishing':
- packages/**/pubspec.yaml
================================================
FILE: .github/workflows/pull_request_label.yml
================================================
# This workflow applies labels to pull requests based on the
# paths that are modified in the pull request.
#
# Edit `.github/labeler.yml` and `.github/post_merge_labeler.yml`
# to configure labels.
#
# For more information, see: https://github.com/actions/labeler
name: Pull Request Labeler
on:
pull_request_target:
types: [opened, synchronize, reopened, closed]
# Declare default permissions as read only.
permissions: read-all
jobs:
label:
permissions:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@5c7539237e04b714afd8ad9b4aed733815b9fab4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
sync-labels: true
================================================
FILE: .github/workflows/release.yml
================================================
name: release
on:
push:
branches:
- main
# Declare default permissions as read only.
permissions: read-all
jobs:
release:
if: github.repository_owner == 'flutter'
name: release
permissions:
# Release needs to push a tag back to the repo.
contents: write
runs-on: ubuntu-latest
steps:
- name: "Install Flutter"
# Github Actions don't support templates so it is hard to share this snippet with another action
# If we eventually need to use this in more workflow, we could create a shell script that contains this
# snippet.
run: |
cd $HOME
git clone https://github.com/flutter/flutter.git --depth 1 -b stable _flutter
echo "$HOME/_flutter/bin" >> $GITHUB_PATH
cd $GITHUB_WORKSPACE
# Checks out a copy of the repo.
- name: Check out code
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
with:
fetch-depth: 0 # Fetch all history so the tool can get all the tags to determine version.
- name: Set up tools
run: dart pub global activate flutter_plugin_tools 0.13.4+3
# This workflow should be the last to run. So wait for all the other tests to succeed.
- name: Wait on all tests
uses: lewagon/wait-on-check-action@3a563271c3f8d1611ed7352809303617ee7e54ac
with:
ref: ${{ github.sha }}
running-workflow-name: 'release'
repo-token: ${{ secrets.GITHUB_TOKEN }}
wait-interval: 180 # seconds
allowed-conclusions: success,neutral
# verbose:true will produce too many logs that hang github actions web UI.
verbose: false
- name: run release
run: |
git config --global user.name ${{ secrets.USER_NAME }}
git config --global user.email ${{ secrets.USER_EMAIL }}
dart pub global run flutter_plugin_tools publish --all-changed --base-sha=HEAD~ --skip-confirmation --remote=origin
env: {PUB_CREDENTIALS: "${{ secrets.PUB_CREDENTIALS }}"}
================================================
FILE: .github/workflows/scorecards-analysis.yml
================================================
name: Scorecards supply-chain security
on:
# Only the default branch is supported.
branch_protection_rule:
push:
branches: [ main ]
# Declare default permissions as read only.
permissions: read-all
jobs:
analysis:
name: Scorecards analysis
runs-on: ubuntu-latest
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
actions: read
contents: read
# Needed to access OIDC token.
id-token: write
steps:
- name: "Checkout code"
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86
with:
results_file: results.sarif
results_format: sarif
# Read-only PAT token. To create it,
# follow the steps in https://github.com/ossf/scorecard-action#pat-token-creation.
repo_token: ${{ secrets.SCORECARD_READ_TOKEN }}
# Publish the results to enable scorecard badges. For more details, see
# https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories, `publish_results` will automatically be set to `false`,
# regardless of the value entered here.
publish_results: true
# Upload the results as artifacts (optional).
- name: "Upload artifact"
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@3ebbd71c74ef574dbc558c82f70e52732c8b44fe
with:
sarif_file: results.sarif
================================================
FILE: .gitignore
================================================
.DS_Store
.atom/
.idea/
.vscode/
.packages
.pub/
.dart_tool/
pubspec.lock
flutter_export_environment.sh
examples/all_plugins/pubspec.yaml
Podfile.lock
Pods/
.symlinks/
**/Flutter/App.framework/
**/Flutter/ephemeral/
**/Flutter/Flutter.podspec
**/Flutter/Flutter.framework/
**/Flutter/Generated.xcconfig
**/Flutter/flutter_assets/
ServiceDefinitions.json
xcuserdata/
**/DerivedData/
local.properties
keystore.properties
.gradle/
gradlew
gradlew.bat
gradle-wrapper.jar
.flutter-plugins-dependencies
*.iml
generated_plugin_registrant.cc
generated_plugin_registrant.h
generated_plugin_registrant.dart
GeneratedPluginRegistrant.java
GeneratedPluginRegistrant.h
GeneratedPluginRegistrant.m
GeneratedPluginRegistrant.swift
build/
.flutter-plugins
.project
.classpath
.settings
# Downloaded by the plugin tools.
google-java-format-1.3-all-deps.jar
================================================
FILE: .gitmodules
================================================
[submodule "site-shared"]
path = site-shared
url = https://github.com/dart-lang/site-shared
================================================
FILE: .opensource/project.json
================================================
{
"name": "FlutterFire - MOVED",
"platforms": [
"Android",
"iOS"
],
"content": "FlutterFire.md",
"related": [
"FirebaseExtended/flutterfire"
]
}
================================================
FILE: AUTHORS
================================================
# Below is a list of people and organizations that have contributed
# to the Flutter project. Names should be added to the list like so:
#
# Name/Organization <email address>
Google Inc.
The Chromium Authors
German Saprykin <saprykin.h@gmail.com>
Benjamin Sauer <sauer.benjamin@gmail.com>
larsenthomasj@gmail.com
Ali Bitek <alibitek@protonmail.ch>
Pol Batlló <pol.batllo@gmail.com>
Anatoly Pulyaevskiy
Hayden Flinner <haydenflinner@gmail.com>
Stefano Rodriguez <hlsroddy@gmail.com>
Salvatore Giordano <salvatoregiordanoo@gmail.com>
Brian Armstrong <brian@flutter.institute>
Paul DeMarco <paulmdemarco@gmail.com>
Fabricio Nogueira <feufeu@gmail.com>
Simon Lightfoot <simon@devangels.london>
Ashton Thomas <ashton@acrinta.com>
Thomas Danner <thmsdnnr@gmail.com>
Diego Velásquez <diego.velasquez.lopez@gmail.com>
Hajime Nakamura <nkmrhj@gmail.com>
Tuyển Vũ Xuân <netsoft1985@gmail.com>
Miguel Ruivo <miguel@miguelruivo.com>
Sarthak Verma <sarthak@artiosys.com>
Mike Diarmid <mike@invertase.io>
Invertase <oss@invertase.io>
Elliot Hesp <elliot@invertase.io>
Vince Varga <vince.varga@smaho.com>
Aawaz Gyawali <awazgyawali@gmail.com>
EUI Limited <ian.evans3@admiralgroup.co.uk>
Katarina Sheremet <katarina@sheremet.ch>
Thomas Stockx <thomas@stockxit.com>
Sarbagya Dhaubanjar <sarbagyastha@gmail.com>
Ozkan Eksi <ozeksi@gmail.com>
Rishab Nayak <rishab@bu.edu>
ko2ic <ko2ic.dev@gmail.com>
Jonathan Younger <jonathan@daikini.com>
Jose Sanchez <josesm82@gmail.com>
Debkanchan Samadder <debu.samadder@gmail.com>
Audrius Karosevicius <audrius.karosevicius@gmail.com>
Lukasz Piliszczuk <lukasz@intheloup.io>
SoundReply Solutions GmbH <ch@soundreply.com>
Rafal Wachol <rwachol@gmail.com>
Pau Picas <pau.picas@gmail.com>
Christian Weder <chrstian.weder@yapeal.ch>
Alexandru Tuca <salexandru.tuca@outlook.com>
Christian Weder <chrstian.weder@yapeal.ch>
Rhodes Davis Jr. <rody.davis.jr@gmail.com>
Luigi Agosti <luigi@tengio.com>
Quentin Le Guennec <quentin@tengio.com>
Koushik Ravikumar <koushik@tengio.com>
Nissim Dsilva <nissim@tengio.com>
Giancarlo Rocha <giancarloiff@gmail.com>
Ryo Miyake <ryo@miyake.id>
Théo Champion <contact.theochampion@gmail.com>
Kazuki Yamaguchi <y.kazuki0614n@gmail.com>
Eitan Schwartz <eshvartz@gmail.com>
Chris Rutkowski <chrisrutkowski89@gmail.com>
Juan Alvarez <juan.alvarez@resideo.com>
Aleksandr Yurkovskiy <sanekyy@gmail.com>
Anton Borries <mail@antonborri.es>
Alex Li <google@alexv525.com>
Rahul Raj <64.rahulraj@gmail.com>
Daniel Roek <daniel.roek@gmail.com>
TheOneWithTheBraid <the-one@with-the-braid.cf>
Rulong Chen(陈汝龙) <rulong.crl@alibaba-inc.com>
Hwanseok Kang <tttkhs96@gmail.com>
Twin Sun, LLC <google-contrib@twinsunsolutions.com>
================================================
FILE: CODEOWNERS
================================================
# Below is a list of Flutter team members who are suggested reviewers
# for contributions to plugins in this repository.
#
# These names are just suggestions. It is fine to have your changes
# reviewed by someone else.
# Plugin-level rules.
packages/camera/** @bparrishMines
packages/file_selector/** @stuartmorgan
packages/google_maps_flutter/** @stuartmorgan
packages/google_sign_in/** @stuartmorgan
packages/image_picker/** @tarrinneal
packages/in_app_purchase/** @bparrishMines
packages/local_auth/** @stuartmorgan
packages/path_provider/** @stuartmorgan
packages/plugin_platform_interface/** @stuartmorgan
packages/quick_actions/** @bparrishMines
packages/shared_preferences/** @tarrinneal
packages/url_launcher/** @stuartmorgan
packages/video_player/** @tarrinneal
packages/webview_flutter/** @bparrishMines
# Sub-package-level rules. These should stay last, since the last matching
# entry takes precedence.
# - Web
packages/**/*_web/** @ditman
# - Android
packages/camera/camera_android/** @camsim99
packages/camera/camera_android_camerax/** @camsim99
packages/espresso/** @reidbaker
packages/flutter_plugin_android_lifecycle/** @reidbaker
packages/google_maps_flutter/google_maps_flutter_android/** @reidbaker
packages/google_sign_in/google_sign_in_android/** @camsim99
packages/image_picker/image_picker_android/** @gmackall
packages/in_app_purchase/in_app_purchase_android/** @gmackall
packages/local_auth/local_auth_android/** @camsim99
packages/path_provider/path_provider_android/** @camsim99
packages/quick_actions/quick_actions_android/** @camsim99
packages/shared_preferences/shared_preferences_android/** @reidbaker
packages/url_launcher/url_launcher_android/** @gmackall
packages/video_player/video_player_android/** @camsim99
# - iOS
packages/camera/camera_avfoundation/** @hellohuanlin
packages/file_selector/file_selector_ios/** @jmagman
packages/google_maps_flutter/google_maps_flutter_ios/** @cyanglaz
packages/google_sign_in/google_sign_in_ios/** @vashworth
packages/image_picker/image_picker_ios/** @vashworth
packages/in_app_purchase/in_app_purchase_storekit/** @cyanglaz
packages/ios_platform_images/ios/** @jmagman
packages/local_auth/local_auth_ios/** @louisehsu
packages/path_provider/path_provider_foundation/** @jmagman
packages/quick_actions/quick_actions_ios/** @hellohuanlin
packages/shared_preferences/shared_preferences_foundation/** @cyanglaz
packages/url_launcher/url_launcher_ios/** @jmagman
packages/video_player/video_player_avfoundation/** @hellohuanlin
packages/webview_flutter/webview_flutter_wkwebview/** @cyanglaz
# - Linux
packages/file_selector/file_selector_linux/** @cbracken
packages/path_provider/path_provider_linux/** @cbracken
packages/shared_preferences/shared_preferences_linux/** @cbracken
packages/url_launcher/url_launcher_linux/** @cbracken
# - macOS
packages/file_selector/file_selector_macos/** @cbracken
packages/url_launcher/url_launcher_macos/** @cbracken
# - Windows
packages/camera/camera_windows/** @cbracken
packages/file_selector/file_selector_windows/** @cbracken
packages/image_picker/image_picker_windows/** @cbracken
packages/local_auth/local_auth_windows/** @cbracken
packages/path_provider/path_provider_windows/** @cbracken
packages/shared_preferences/shared_preferences_windows/** @cbracken
packages/url_launcher/url_launcher_windows/** @cbracken
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Flutter Plugins
| **ARCHIVED** |
|--------------|
| This repository is no longer in use; all source has moved to [flutter/packages](https://github.com/flutter/packages) and future development work will be done there. |
## ARCHIVED CONTENT
_See also: [Flutter's code of conduct](https://github.com/flutter/flutter/blob/master/CODE_OF_CONDUCT.md)_
## Welcome
For an introduction to contributing to Flutter, see [our contributor
guide](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md).
Additional resources specific to the plugins repository:
- [Setting up the Plugins development
environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Plugins-development-environment),
which covers the setup process for this repository.
- [Plugins repository structure](https://github.com/flutter/flutter/wiki/Plugins-and-Packages-repository-structure),
to get an overview of how this repository is laid out.
- [Plugin tests](https://github.com/flutter/flutter/wiki/Plugin-Tests), which explains
the different kinds of tests used for plugins, where to find them, and how to run them.
As explained in the Flutter guide,
[**PRs need tests**](https://github.com/flutter/flutter/wiki/Tree-hygiene#tests), so
this is critical to read before submitting a PR.
- [Contributing to Plugins and Packages](https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages),
for more information about how to make PRs for this repository, especially when
changing federated plugins.
## Other notes
### Style
Flutter plugins follow Google style—or Flutter style for Dart—for the languages they
use, and use auto-formatters:
- [Dart](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo) formatted
with `dart format`
- [C++](https://google.github.io/styleguide/cppguide.html) formatted with `clang-format`
- **Note**: The Linux plugins generally follow idiomatic GObject-based C
style. See [the engine style
notes](https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style)
for more details, and exceptions.
- [Java](https://google.github.io/styleguide/javaguide.html) formatted with
`google-java-format`
- [Objective-C](https://google.github.io/styleguide/objcguide.html) formatted with
`clang-format`
### Releasing
If you are a team member landing a PR, or just want to know what the release
process is for plugin changes, see [the release
documentation](https://github.com/flutter/flutter/wiki/Releasing-a-Plugin-or-Package).
================================================
FILE: FlutterFire.md
================================================
# FlutterFire - MOVED
The FlutterFire family of plugins has moved to the Firebase organization on GitHub. This makes it easier for us to collaborate with the Firebase team. We want to build the best integration we can!
Visit FlutterFire at its new home:
https://github.com/firebase/flutterfire
================================================
FILE: LICENSE
================================================
Copyright 2013 The Flutter Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: README.md
================================================
# Flutter plugins
| **ARCHIVED** |
|--------------|
| This repository is no longer in use; all source has moved to [flutter/packages](https://github.com/flutter/packages) and future development work will be done there. |
## ARCHIVED CONTENT
This repo is a companion repo to the main [flutter
repo](https://github.com/flutter/flutter). 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/](https://flutter.dev/platform-plugins/).
These plugins are also available on
[pub](https://pub.dev/flutter/packages).
## Issues
Please file any issues, bugs, or feature requests in the [main flutter
repo](https://github.com/flutter/flutter/issues/new).
Issues pertaining to this repository are [labeled
"plugin"](https://github.com/flutter/flutter/issues?q=is%3Aopen+is%3Aissue+label%3Aplugin).
## Contributing
If you wish to contribute a new plugin to the Flutter ecosystem, please
see the documentation for [developing packages](https://flutter.dev/developing-packages/) and
[platform channels](https://flutter.dev/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](https://flutter.dev/developing-packages/#publish) it
to the [pub repository](https://pub.dev/).
If you wish to contribute a change to any of the existing plugins in this repo,
please review our [contribution guide](https://github.com/flutter/plugins/blob/main/CONTRIBUTING.md),
and send a [pull request](https://github.com/flutter/plugins/pulls).
## Plugins
These are the available plugins in this repository.
| Plugin | Pub | Points | Popularity | Likes | Issues | Pull requests |
|--------|-----|--------|------------|-------|--------|---------------|
| [camera](./packages/camera/) | [](https://pub.dev/packages/camera) | [](https://pub.dev/packages/camera/score) | [](https://pub.dev/packages/camera/score) | [](https://pub.dev/packages/camera/score) | [](https://github.com/flutter/flutter/labels/p%3A%20camera) | [](https://github.com/flutter/plugins/labels/p%3A%20camera) |
| [espresso](./packages/espresso/) | [](https://pub.dev/packages/espresso) | [](https://pub.dev/packages/espresso/score) | [](https://pub.dev/packages/espresso/score) | [](https://pub.dev/packages/espresso/score) | [](https://github.com/flutter/flutter/labels/p%3A%20espresso) | [](https://github.com/flutter/plugins/labels/p%3A%20espresso) |
| [file_selector](./packages/file_selector/) | [](https://pub.dev/packages/file_selector) | [](https://pub.dev/packages/file_selector/score) | [](https://pub.dev/packages/file_selector/score) | [](https://pub.dev/packages/file_selector/score) | [](https://github.com/flutter/flutter/labels/p%3A%20file_selector) | [](https://github.com/flutter/plugins/labels/p%3A%20file_selector) |
| [flutter_plugin_android_lifecycle](./packages/flutter_plugin_android_lifecycle/) | [](https://pub.dev/packages/flutter_plugin_android_lifecycle) | [](https://pub.dev/packages/flutter_plugin_android_lifecycle/score) | [](https://pub.dev/packages/flutter_plugin_android_lifecycle/score) | [](https://pub.dev/packages/flutter_plugin_android_lifecycle/score) | [](https://github.com/flutter/flutter/labels/p%3A%20flutter_plugin_android_lifecycle) | [](https://github.com/flutter/plugins/labels/p%3A%20flutter_plugin_android_lifecycle) |
| [google_maps_flutter](./packages/google_maps_flutter) | [](https://pub.dev/packages/google_maps_flutter) | [](https://pub.dev/packages/google_maps_flutter/score) | [](https://pub.dev/packages/google_maps_flutter/score) | [](https://pub.dev/packages/google_maps_flutter/score) | [](https://github.com/flutter/flutter/labels/p%3A%20maps) | [](https://github.com/flutter/plugins/labels/p%3A%20google_maps_flutter) |
| [google_sign_in](./packages/google_sign_in/) | [](https://pub.dev/packages/google_sign_in) | [](https://pub.dev/packages/google_sign_in/score) | [](https://pub.dev/packages/google_sign_in/score) | [](https://pub.dev/packages/google_sign_in/score) | [](https://github.com/flutter/flutter/labels/p%3A%20google_sign_in) | [](https://github.com/flutter/plugins/labels/p%3A%20google_sign_in) |
| [image_picker](./packages/image_picker/) | [](https://pub.dev/packages/image_picker) | [](https://pub.dev/packages/image_picker/score) | [](https://pub.dev/packages/image_picker/score) | [](https://pub.dev/packages/image_picker/score) | [](https://github.com/flutter/flutter/labels/p%3A%20image_picker) | [](https://github.com/flutter/plugins/labels/p%3A%20image_picker) |
| [in_app_purchase](./packages/in_app_purchase/) | [](https://pub.dev/packages/in_app_purchase) | [](https://pub.dev/packages/in_app_purchase/score) | [](https://pub.dev/packages/in_app_purchase/score) | [](https://pub.dev/packages/in_app_purchase/score) | [](https://github.com/flutter/flutter/labels/p%3A%20in_app_purchase) | [](https://github.com/flutter/plugins/labels/p%3A%20in_app_purchase) |
| [ios_platform_images](./packages/ios_platform_images/) | [](https://pub.dev/packages/ios_platform_images) | [](https://pub.dev/packages/ios_platform_images/score) | [](https://pub.dev/packages/ios_platform_images/score) | [](https://pub.dev/packages/ios_platform_images/score) | [](https://github.com/flutter/flutter/labels/p%3A%20ios_platform_images) | [](https://github.com/flutter/plugins/labels/p%3A%20ios_platform_images) |
| [local_auth](./packages/local_auth/) | [](https://pub.dev/packages/local_auth) | [](https://pub.dev/packages/local_auth/score) | [](https://pub.dev/packages/local_auth/score) | [](https://pub.dev/packages/local_auth/score) | [](https://github.com/flutter/flutter/labels/p%3A%20local_auth) | [](https://github.com/flutter/plugins/labels/p%3A%20local_auth) |
| [path_provider](./packages/path_provider/) | [](https://pub.dev/packages/path_provider) | [](https://pub.dev/packages/path_provider/score) | [](https://pub.dev/packages/path_provider/score) | [](https://pub.dev/packages/path_provider/score) | [](https://github.com/flutter/flutter/labels/p%3A%20path_provider) | [](https://github.com/flutter/plugins/labels/p%3A%20path_provider) |
| [plugin_platform_interface](./packages/plugin_platform_interface/) | [](https://pub.dev/packages/plugin_platform_interface) | [](https://pub.dev/packages/plugin_platform_interface/score) | [](https://pub.dev/packages/plugin_platform_interface/score) | [](https://pub.dev/packages/plugin_platform_interface/score) | [](https://github.com/flutter/flutter/labels/p%3A%20plugin_platform_interface) | [](https://github.com/flutter/plugins/labels/p%3A%20plugin_platform_interface) |
| [quick_actions](./packages/quick_actions/) | [](https://pub.dev/packages/quick_actions) | [](https://pub.dev/packages/quick_actions/score) | [](https://pub.dev/packages/quick_actions/score) | [](https://pub.dev/packages/quick_actions/score) | [](https://github.com/flutter/flutter/labels/p%3A%20quick_actions) | [](https://github.com/flutter/plugins/labels/p%3A%20quick_actions) |
| [shared_preferences](./packages/shared_preferences/) | [](https://pub.dev/packages/shared_preferences) | [](https://pub.dev/packages/shared_preferences/score) | [](https://pub.dev/packages/shared_preferences/score) | [](https://pub.dev/packages/shared_preferences/score) | [](https://github.com/flutter/flutter/labels/p%3A%20shared_preferences) | [](https://github.com/flutter/plugins/labels/p%3A%20shared_preferences) |
| [url_launcher](./packages/url_launcher/) | [](https://pub.dev/packages/url_launcher) | [](https://pub.dev/packages/url_launcher/score) | [](https://pub.dev/packages/url_launcher/score) | [](https://pub.dev/packages/url_launcher/score) | [](https://github.com/flutter/flutter/labels/p%3A%20url_launcher) | [](https://github.com/flutter/plugins/labels/p%3A%20url_launcher) |
| [video_player](./packages/video_player/) | [](https://pub.dev/packages/video_player) | [](https://pub.dev/packages/video_player/score) | [](https://pub.dev/packages/video_player/score) | [](https://pub.dev/packages/video_player/score) | [](https://github.com/flutter/flutter/labels/p%3A%20video_player) | [](https://github.com/flutter/plugins/labels/p%3A%20video_player) |
| [webview_flutter](./packages/webview_flutter/) | [](https://pub.dev/packages/webview_flutter) | [](https://pub.dev/packages/webview_flutter/score) | [](https://pub.dev/packages/webview_flutter/score) | [](https://pub.dev/packages/webview_flutter/score) | [](https://github.com/flutter/flutter/labels/p%3A%20webview) | [](https://github.com/flutter/plugins/labels/p%3A%20webview_flutter) |
================================================
FILE: analysis_options.yaml
================================================
# Specify analysis options.
#
# This file is a copy of analysis_options.yaml from flutter repo
# as of 2022-07-27, but with some modifications marked with
# "DIFFERENT FROM FLUTTER/FLUTTER" below. The file is expected to
# be kept in sync with the master file from the flutter repo.
analyzer:
language:
strict-casts: true
strict-raw-types: true
errors:
# allow self-reference to deprecated members (we do this because otherwise we have
# to annotate every member in every test, assert, etc, when we deprecate something)
deprecated_member_use_from_same_package: ignore
# Turned off until null-safe rollout is complete.
unnecessary_null_comparison: ignore
exclude: # DIFFERENT FROM FLUTTER/FLUTTER
# Ignore generated files
- '**/*.g.dart'
- '**/*.mocks.dart' # Mockito @GenerateMocks
linter:
rules:
# This list is derived from the list of all available lints located at
# https://github.com/dart-lang/linter/blob/master/example/all.yaml
- always_declare_return_types
- always_put_control_body_on_new_line
# - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
- always_require_non_null_named_parameters
- always_specify_types
# - always_use_package_imports # we do this commonly
- annotate_overrides
# - avoid_annotating_with_dynamic # conflicts with always_specify_types
- avoid_bool_literals_in_conditional_expressions
# - avoid_catches_without_on_clauses # blocked on https://github.com/dart-lang/linter/issues/3023
# - avoid_catching_errors # blocked on https://github.com/dart-lang/linter/issues/3023
- avoid_classes_with_only_static_members
- avoid_double_and_int_checks
- avoid_dynamic_calls
- avoid_empty_else
- avoid_equals_and_hash_code_on_mutable_classes
- avoid_escaping_inner_quotes
- avoid_field_initializers_in_const_classes
# - avoid_final_parameters # incompatible with prefer_final_parameters
- avoid_function_literals_in_foreach_calls
- avoid_implementing_value_types
- avoid_init_to_null
- avoid_js_rounded_ints
# - avoid_multiple_declarations_per_line # seems to be a stylistic choice we don't subscribe to
- avoid_null_checks_in_equality_operators
# - avoid_positional_boolean_parameters # would have been nice to enable this but by now there's too many places that break it
- avoid_print
# - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356)
- avoid_redundant_argument_values
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_returning_null_for_future
- avoid_returning_null_for_void
# - avoid_returning_this # there are enough valid reasons to return `this` that this lint ends up with too many false positives
- avoid_setters_without_getters
- avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_slow_async_io
- avoid_type_to_string
- avoid_types_as_parameter_names
# - avoid_types_on_closure_parameters # conflicts with always_specify_types
- avoid_unnecessary_containers
- avoid_unused_constructor_parameters
- avoid_void_async
# - avoid_web_libraries_in_flutter # we use web libraries in web-specific code, and our tests prevent us from using them elsewhere
- await_only_futures
- camel_case_extensions
- camel_case_types
- cancel_subscriptions
# - cascade_invocations # doesn't match the typical style of this repo
- cast_nullable_to_non_nullable
# - close_sinks # not reliable enough
# - combinators_ordering # DIFFERENT FROM FLUTTER/FLUTTER: This isn't available on stable yet.
# - comment_references # blocked on https://github.com/dart-lang/linter/issues/1142
- conditional_uri_does_not_exist
# - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204
- control_flow_in_finally
- curly_braces_in_flow_control_structures
- depend_on_referenced_packages
- deprecated_consistency
# - diagnostic_describe_all_properties # enabled only at the framework level (packages/flutter/lib)
- directives_ordering
# - discarded_futures # not yet tested
# - do_not_use_environment # there are appropriate times to use the environment, especially in our tests and build logic
- empty_catches
- empty_constructor_bodies
- empty_statements
- eol_at_end_of_file
- exhaustive_cases
- file_names
- flutter_style_todos
- hash_and_equals
- implementation_imports
- iterable_contains_unrelated_type
# - join_return_with_assignment # not required by flutter style
- leading_newlines_in_multiline_strings
- library_names
- library_prefixes
- library_private_types_in_public_api
# - lines_longer_than_80_chars # not required by flutter style
- list_remove_unrelated_type
# - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/linter/issues/453
- missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list
- no_default_cases
- no_duplicate_case_values
- no_leading_underscores_for_library_prefixes
- no_leading_underscores_for_local_identifiers
- no_logic_in_create_state
- no_runtimeType_toString # DIFFERENT FROM FLUTTER/FLUTTER
- non_constant_identifier_names
- noop_primitive_operations
- null_check_on_nullable_type_parameter
- null_closures
# - omit_local_variable_types # opposite of always_specify_types
# - one_member_abstracts # too many false positives
- only_throw_errors # this does get disabled in a few places where we have legacy code that uses strings et al
- overridden_fields
- package_api_docs
- package_names
- package_prefixed_library_names
# - parameter_assignments # we do this commonly
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
# - prefer_asserts_with_message # not required by flutter style
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_const_constructors
- prefer_const_constructors_in_immutables
- prefer_const_declarations
- prefer_const_literals_to_create_immutables
# - prefer_constructors_over_static_methods # far too many false positives
- prefer_contains
# - prefer_double_quotes # opposite of prefer_single_quotes
- prefer_equal_for_default_values
# - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods
- prefer_final_fields
- prefer_final_in_for_each
- prefer_final_locals
# - prefer_final_parameters # we should enable this one day when it can be auto-fixed (https://github.com/dart-lang/linter/issues/3104), see also parameter_assignments
- prefer_for_elements_to_map_fromIterable
- prefer_foreach
- prefer_function_declarations_over_variables
- prefer_generic_function_type_aliases
- prefer_if_elements_to_conditional_expressions
- prefer_if_null_operators
- prefer_initializing_formals
- prefer_inlined_adds
# - prefer_int_literals # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#use-double-literals-for-double-constants
- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_is_not_operator
- prefer_iterable_whereType
# - prefer_mixin # Has false positives, see https://github.com/dart-lang/linter/issues/3018
# - prefer_null_aware_method_calls # "call()" is confusing to people new to the language since it's not documented anywhere
- prefer_null_aware_operators
- prefer_relative_imports
- prefer_single_quotes
- prefer_spread_collections
- prefer_typing_uninitialized_variables
- prefer_void_to_null
- provide_deprecation_message
- public_member_api_docs # DIFFERENT FROM FLUTTER/FLUTTER
- recursive_getters
# - require_trailing_commas # blocked on https://github.com/dart-lang/sdk/issues/47441
- secure_pubspec_urls
- sized_box_for_whitespace
# - sized_box_shrink_expand # not yet tested
- slash_for_doc_comments
- sort_child_properties_last
- sort_constructors_first
- sort_pub_dependencies # DIFFERENT FROM FLUTTER/FLUTTER: Flutter's use case for not sorting does not apply to this repository.
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
- tighten_type_of_initializing_formals
# - type_annotate_public_apis # subset of always_specify_types
- type_init_formals
# - unawaited_futures # too many false positives, especially with the way AnimationController works
- unnecessary_await_in_return
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_constructor_name
# - unnecessary_final # conflicts with prefer_final_locals
- unnecessary_getters_setters
# - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498
- unnecessary_late
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_null_aware_operator_on_extension_on_nullable
- unnecessary_null_checks
- unnecessary_null_in_if_null_operators
- unnecessary_nullable_for_final_variable_declarations
- unnecessary_overrides
- unnecessary_parenthesis
# - unnecessary_raw_strings # what's "necessary" is a matter of opinion; consistency across strings can help readability more than this lint
- unnecessary_statements
- unnecessary_string_escapes
- unnecessary_string_interpolations
- unnecessary_this
- unnecessary_to_list_in_spreads
- unrelated_type_equality_checks
- unsafe_html
- use_build_context_synchronously
# - use_colored_box # not yet tested
# - use_decorated_box # not yet tested
# - use_enums # not yet tested
- use_full_hex_values_for_flutter_colors
- use_function_type_syntax_for_parameters
- use_if_null_to_convert_nulls_to_bools
- use_is_even_rather_than_modulo
- use_key_in_widget_constructors
- use_late_for_private_fields_and_variables
- use_named_constants
- use_raw_strings
- use_rethrow_when_possible
- use_setters_to_change_properties
# - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182
- use_super_parameters
- use_test_throws_matchers
# - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review
- valid_regexps
- void_checks
================================================
FILE: packages/camera/camera/AUTHORS
================================================
# Below is a list of people and organizations that have contributed
# to the Flutter project. Names should be added to the list like so:
#
# Name/Organization <email address>
Google Inc.
The Chromium Authors
German Saprykin <saprykin.h@gmail.com>
Benjamin Sauer <sauer.benjamin@gmail.com>
larsenthomasj@gmail.com
Ali Bitek <alibitek@protonmail.ch>
Pol Batlló <pol.batllo@gmail.com>
Anatoly Pulyaevskiy
Hayden Flinner <haydenflinner@gmail.com>
Stefano Rodriguez <hlsroddy@gmail.com>
Salvatore Giordano <salvatoregiordanoo@gmail.com>
Brian Armstrong <brian@flutter.institute>
Paul DeMarco <paulmdemarco@gmail.com>
Fabricio Nogueira <feufeu@gmail.com>
Simon Lightfoot <simon@devangels.london>
Ashton Thomas <ashton@acrinta.com>
Thomas Danner <thmsdnnr@gmail.com>
Diego Velásquez <diego.velasquez.lopez@gmail.com>
Hajime Nakamura <nkmrhj@gmail.com>
Tuyển Vũ Xuân <netsoft1985@gmail.com>
Miguel Ruivo <miguel@miguelruivo.com>
Sarthak Verma <sarthak@artiosys.com>
Mike Diarmid <mike@invertase.io>
Invertase <oss@invertase.io>
Elliot Hesp <elliot@invertase.io>
Vince Varga <vince.varga@smaho.com>
Aawaz Gyawali <awazgyawali@gmail.com>
EUI Limited <ian.evans3@admiralgroup.co.uk>
Katarina Sheremet <katarina@sheremet.ch>
Thomas Stockx <thomas@stockxit.com>
Sarbagya Dhaubanjar <sarbagyastha@gmail.com>
Ozkan Eksi <ozeksi@gmail.com>
Rishab Nayak <rishab@bu.edu>
ko2ic <ko2ic.dev@gmail.com>
Jonathan Younger <jonathan@daikini.com>
Jose Sanchez <josesm82@gmail.com>
Debkanchan Samadder <debu.samadder@gmail.com>
Audrius Karosevicius <audrius.karosevicius@gmail.com>
Lukasz Piliszczuk <lukasz@intheloup.io>
SoundReply Solutions GmbH <ch@soundreply.com>
Rafal Wachol <rwachol@gmail.com>
Pau Picas <pau.picas@gmail.com>
Christian Weder <chrstian.weder@yapeal.ch>
Alexandru Tuca <salexandru.tuca@outlook.com>
Christian Weder <chrstian.weder@yapeal.ch>
Rhodes Davis Jr. <rody.davis.jr@gmail.com>
Luigi Agosti <luigi@tengio.com>
Quentin Le Guennec <quentin@tengio.com>
Koushik Ravikumar <koushik@tengio.com>
Nissim Dsilva <nissim@tengio.com>
Giancarlo Rocha <giancarloiff@gmail.com>
Ryo Miyake <ryo@miyake.id>
Théo Champion <contact.theochampion@gmail.com>
Kazuki Yamaguchi <y.kazuki0614n@gmail.com>
Eitan Schwartz <eshvartz@gmail.com>
Chris Rutkowski <chrisrutkowski89@gmail.com>
Juan Alvarez <juan.alvarez@resideo.com>
Aleksandr Yurkovskiy <sanekyy@gmail.com>
Anton Borries <mail@antonborri.es>
Alex Li <google@alexv525.com>
Rahul Raj <64.rahulraj@gmail.com>
================================================
FILE: packages/camera/camera/CHANGELOG.md
================================================
## 0.10.3
* Adds back use of Optional type.
## 0.10.2+1
* Updates code for stricter lint checks.
## 0.10.2
* Implements option to also stream when recording a video.
## 0.10.1
* Remove usage of deprecated quiver Optional type.
## 0.10.0+5
* Updates code for stricter lint checks.
## 0.10.0+4
* Removes usage of `_ambiguate` method in example.
* Updates minimum Flutter version to 3.0.
## 0.10.0+3
* Updates code for `no_leading_underscores_for_local_identifiers` lint.
## 0.10.0+2
* Updates imports for `prefer_relative_imports`.
* Updates minimum Flutter version to 2.10.
## 0.10.0+1
* Fixes avoid_redundant_argument_values lint warnings and minor typos.
## 0.10.0
* **Breaking Change** Bumps default camera_web package version, which updates permission exception code from `cameraPermission` to `CameraAccessDenied`.
* **Breaking Change** Bumps default camera_android package version, which updates permission exception code from `cameraPermission` to
`CameraAccessDenied` and `AudioAccessDenied`.
* Ignores unnecessary import warnings in preparation for [upcoming Flutter changes](https://github.com/flutter/flutter/pull/106316).
## 0.9.8+1
* Ignores deprecation warnings for upcoming styleFrom button API changes.
## 0.9.8
* Moves Android and iOS implementations to federated packages.
* Ignores unnecessary import warnings in preparation for [upcoming Flutter changes](https://github.com/flutter/flutter/pull/104231).
## 0.9.7+1
* Moves streaming implementation to the platform interface package.
## 0.9.7
* Returns all the available cameras on iOS.
## 0.9.6
* Adds audio access permission handling logic on iOS to fix an issue with `prepareForVideoRecording` not awaiting for the audio permission request result.
## 0.9.5+1
* Suppresses warnings for pre-iOS-11 codepaths.
## 0.9.5
* Adds camera access permission handling logic on iOS to fix a related crash when using the camera for the first time.
## 0.9.4+24
* Fixes preview orientation when pausing preview with locked orientation.
## 0.9.4+23
* Minor fixes for new analysis options.
## 0.9.4+22
* Removes unnecessary imports.
* Fixes library_private_types_in_public_api, sort_child_properties_last and use_key_in_widget_constructors
lint warnings.
## 0.9.4+21
* Fixes README code samples.
## 0.9.4+20
* Fixes an issue with the orientation of videos recorded in landscape on Android.
## 0.9.4+19
* Migrate deprecated Scaffold SnackBar methods to ScaffoldMessenger.
## 0.9.4+18
* Fixes a crash in iOS when streaming on low-performance devices.
## 0.9.4+17
* Removes obsolete information from README, and adds OS support table.
## 0.9.4+16
* Fixes a bug resulting in a `CameraAccessException` that prevents image
capture on some Android devices.
## 0.9.4+15
* Uses dispatch queue for pixel buffer synchronization on iOS.
* Minor iOS internal code cleanup related to queue helper functions.
## 0.9.4+14
* Restores compatibility with Flutter 2.5 and 2.8.
## 0.9.4+13
* Updates iOS camera's photo capture delegate reference on a background queue to prevent potential race conditions, and some related internal code cleanup.
## 0.9.4+12
* Skips unnecessary AppDelegate setup for unit tests on iOS.
* Internal code cleanup for stricter analysis options.
## 0.9.4+11
* Manages iOS camera's orientation-related states on a background queue to prevent potential race conditions.
## 0.9.4+10
* iOS performance improvement by moving file writing from the main queue to a background IO queue.
## 0.9.4+9
* iOS performance improvement by moving sample buffer handling from the main queue to a background session queue.
* Minor iOS internal code cleanup related to camera class and its delegate.
* Minor iOS internal code cleanup related to resolution preset, video format, focus mode, exposure mode and device orientation.
* Minor iOS internal code cleanup related to flash mode.
## 0.9.4+8
* Fixes a bug where ImageFormatGroup was ignored in `startImageStream` on iOS.
## 0.9.4+7
* Fixes a crash in iOS when passing null queue pointer into AVFoundation API due to race condition.
* Minor iOS internal code cleanup related to dispatch queue.
## 0.9.4+6
* Fixes a crash in iOS when using image stream due to calling Flutter engine API on non-main thread.
## 0.9.4+5
* Fixes bug where calling a method after the camera was closed resulted in a Java `IllegalStateException` exception.
* Fixes integration tests.
## 0.9.4+4
* Change Android compileSdkVersion to 31.
* Remove usages of deprecated Android API `CamcorderProfile`.
* Update gradle version to 7.0.2 on Android.
## 0.9.4+3
* Fix registerTexture and result being called on background thread on iOS.
## 0.9.4+2
* Updated package description;
* Refactor unit test on iOS to make it compatible with new restrictions in Xcode 13 which only supports the use of the `XCUIDevice` in Xcode UI tests.
## 0.9.4+1
* Fixed Android implementation throwing IllegalStateException when switching to a different activity.
## 0.9.4
* Add web support by endorsing `package:camera_web`.
## 0.9.3+1
* Remove iOS 9 availability check around ultra high capture sessions.
## 0.9.3
* Update minimum Flutter SDK to 2.5 and iOS deployment target to 9.0.
## 0.9.2+2
* Ensure that setting the exposure offset returns the new offset value on Android.
## 0.9.2+1
* Fixed camera controller throwing an exception when being replaced in the preview widget.
## 0.9.2
* Added functions to pause and resume the camera preview.
## 0.9.1+1
* Replace `device_info` reference with `device_info_plus` in the [README.md](README.md)
## 0.9.1
* Added `lensAperture`, `sensorExposureTime` and `sensorSensitivity` properties to the `CameraImage` dto.
## 0.9.0
* Complete rewrite of Android plugin to fix many capture, focus, flash, orientation and exposure issues.
* Fixed crash when opening front-facing cameras on some legacy android devices like Sony XZ.
* Android Flash mode works with full precapture sequence.
* Updated Android lint settings.
## 0.8.1+7
* Fix device orientation sometimes not affecting the camera preview orientation.
## 0.8.1+6
* Remove references to the Android V1 embedding.
## 0.8.1+5
* Make sure the `setFocusPoint` and `setExposurePoint` coordinates work correctly in all orientations on iOS (instead of only in portrait mode).
## 0.8.1+4
* Silenced warnings that may occur during build when using a very
recent version of Flutter relating to null safety.
## 0.8.1+3
* Do not change camera orientation when iOS device is flat.
## 0.8.1+2
* Fix iOS crash when selecting an unsupported FocusMode.
## 0.8.1+1
* Migrate maven repository from jcenter to mavenCentral.
## 0.8.1
* Solved a rotation issue on iOS which caused the default preview to be displayed as landscape right instead of portrait.
## 0.8.0
* Stable null safety release.
* Solved delay when using the zoom feature on iOS.
* Added a timeout to the pre-capture sequence on Android to prevent crashes when the camera cannot get a focus.
* Updates the example code listed in the [README.md](README.md), so it runs without errors when you simply copy/ paste it into a Flutter App.
## 0.7.0+4
* Fix crash when taking picture with orientation lock
## 0.7.0+3
* Clockwise rotation of focus point in android
## 0.7.0+2
* Fix example reference in README.
* Revert compileSdkVersion back to 29 (from 30) as this is causing problems with add-to-app configurations.
## 0.7.0+1
* Ensure communication from JAVA to Dart is done on the main UI thread.
## 0.7.0
* BREAKING CHANGE: `CameraValue.aspectRatio` now returns `width / height` rather than `height / width`. [(commit)](https://github.com/flutter/plugins/commit/100c7470d4066b1d0f8f7e4ec6d7c943e736f970)
* Added support for capture orientation locking on Android and iOS.
* Fixed camera preview not rotating correctly on Android and iOS.
* Fixed camera preview sometimes appearing stretched on Android and iOS.
* Fixed videos & photos saving with the incorrect rotation on iOS.
* New Features:
* Adds auto focus support for Android and iOS implementations. [(commmit)](https://github.com/flutter/plugins/commit/71a831790220f898bf8120c8a23840ac6e742db5)
* Adds ImageFormat selection for ImageStream and Video(iOS only). [(commit)](https://github.com/flutter/plugins/commit/da1b4638b750a5ff832d7be86a42831c42c6d6c0)
* Bug Fixes:
* Fixes crash when taking a picture on iOS devices without flash. [(commit)](https://github.com/flutter/plugins/commit/831344490984b1feec007afc9c8595d80b6c13f4)
* Make sure the configured zoom scale is copied over to the final capture builder on Android. Fixes the issue where the preview is zoomed but the final picture is not. [(commit)](https://github.com/flutter/plugins/commit/5916f55664e1772a4c3f0c02c5c71fc11e491b76)
* Fixes crash with using inner camera on some Android devices. [(commit)](https://github.com/flutter/plugins/commit/980b674cb4020c1927917426211a87e275346d5e)
* Improved error feedback by differentiating between uninitialized and disposed camera controllers. [(commit)](https://github.com/flutter/plugins/commit/d0b7109f6b00a0eda03506fed2c74cc123ffc6f3)
* Fixes picture captures causing a crash on some Huawei devices. [(commit)](https://github.com/flutter/plugins/commit/6d18db83f00f4861ffe485aba2d1f8aa08845ce6)
## 0.6.4+5
* Update the example app: remove the deprecated `RaisedButton` and `FlatButton` widgets.
## 0.6.4+4
* Set camera auto focus enabled by default.
## 0.6.4+3
* Detect if selected camera supports auto focus and act accordingly on Android. This solves a problem where front facing cameras are not capturing the picture because auto focus is not supported.
## 0.6.4+2
* Set ImageStreamReader listener to null to prevent stale images when streaming images.
## 0.6.4+1
* Added closeCaptureSession() to stopVideoRecording in Camera.java to fix an Android 6 crash.
## 0.6.4
* Adds auto exposure support for Android and iOS implementations.
## 0.6.3+4
* Revert previous dependency update: Changed dependency on camera_platform_interface to >=1.04 <1.1.0.
## 0.6.3+3
* Updated dependency on camera_platform_interface to ^1.2.0.
## 0.6.3+2
* Fixes crash on Android which occurs after video recording has stopped just before taking a picture.
## 0.6.3+1
* Fixes flash & torch modes not working on some Android devices.
## 0.6.3
* Adds torch mode as a flash mode for Android and iOS implementations.
## 0.6.2+1
* Fix the API documentation for the `CameraController.takePicture` method.
## 0.6.2
* Add zoom support for Android and iOS implementations.
## 0.6.1+1
* Added implementation of the `didFinishProcessingPhoto` on iOS which allows saving image metadata (EXIF) on iOS 11 and up.
## 0.6.1
* Add flash support for Android and iOS implementations.
## 0.6.0+2
* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276))
## 0.6.0+1
Updated README to inform users that iOS 10.0+ is needed for use
## 0.6.0
As part of implementing federated architecture and making the interface compatible with the web this version contains the following **breaking changes**:
Method changes in `CameraController`:
- The `takePicture` method no longer accepts the `path` parameter, but instead returns the captured image as an instance of the `XFile` class;
- The `startVideoRecording` method no longer accepts the `filePath`. Instead the recorded video is now returned as a `XFile` instance when the `stopVideoRecording` method completes;
- The `stopVideoRecording` method now returns the captured video when it completes;
- Added the `buildPreview` method which is now used to implement the CameraPreview widget.
## 0.5.8+19
* Update Flutter SDK constraint.
## 0.5.8+18
* Suppress unchecked warning in Android tests which prevented the tests to compile.
## 0.5.8+17
* Added Android 30 support.
## 0.5.8+16
* Moved package to camera/camera subdir, to allow for federated implementations.
## 0.5.8+15
* Added the `debugCheckIsDisposed` method which can be used in debug mode to validate if the `CameraController` class has been disposed.
## 0.5.8+14
* Changed the order of the setters for `mediaRecorder` in `MediaRecorderBuilder.java` to make it more readable.
## 0.5.8+13
* Added Dartdocs for all public APIs.
## 0.5.8+12
* Added information of video not working correctly on Android emulators to `README.md`.
## 0.5.8+11
* Fix rare nullptr exception on Android.
* Updated README.md with information about handling App lifecycle changes.
## 0.5.8+10
* Suppress the `deprecated_member_use` warning in the example app for `ScaffoldMessenger.showSnackBar`.
## 0.5.8+9
* Update android compileSdkVersion to 29.
## 0.5.8+8
* Fixed garbled audio (in video) by setting audio encoding bitrate.
## 0.5.8+7
* Keep handling deprecated Android v1 classes for backward compatibility.
## 0.5.8+6
* Avoiding uses or overrides a deprecated API in CameraPlugin.java.
## 0.5.8+5
* Fix compilation/availability issues on iOS.
## 0.5.8+4
* Fixed bug caused by casting a `CameraAccessException` on Android.
## 0.5.8+3
* Fix bug in usage example in README.md
## 0.5.8+2
* Post-v2 embedding cleanups.
## 0.5.8+1
* Update lower bound of dart dependency to 2.1.0.
## 0.5.8
* Remove Android dependencies fallback.
* Require Flutter SDK 1.12.13+hotfix.5 or greater.
## 0.5.7+5
* Replace deprecated `getFlutterEngine` call on Android.
## 0.5.7+4
* Add `pedantic` to dev_dependency.
## 0.5.7+3
* Fix an Android crash when permissions are requested multiple times.
## 0.5.7+2
* Remove the deprecated `author:` field from pubspec.yaml
* Migrate the plugin to the pubspec platforms manifest.
* Require Flutter SDK 1.10.0 or greater.
## 0.5.7+1
* Fix example null exception.
## 0.5.7
* Fix unawaited futures.
## 0.5.6+4
* Android: Use CameraDevice.TEMPLATE_RECORD to improve image streaming.
## 0.5.6+3
* Remove AndroidX warning.
## 0.5.6+2
* Include lifecycle dependency as a compileOnly one on Android to resolve
potential version conflicts with other transitive libraries.
## 0.5.6+1
* Android: Use android.arch.lifecycle instead of androidx.lifecycle:lifecycle in `build.gradle` to support apps that has not been migrated to AndroidX.
## 0.5.6
* Add support for the v2 Android embedding. This shouldn't affect existing
functionality.
## 0.5.5+1
* Fix event type check
## 0.5.5
* Define clang modules for iOS.
## 0.5.4+3
* Update and migrate iOS example project.
## 0.5.4+2
* Fix Android NullPointerException on devices with only front-facing camera.
## 0.5.4+1
* Fix Android pause and resume video crash when executing in APIs below 24.
## 0.5.4
* Add feature to pause and resume video recording.
## 0.5.3+1
* Fix too large request code for FragmentActivity users.
## 0.5.3
* Added new quality presets.
* Now all quality presets can be used to control image capture quality.
## 0.5.2+2
* Fix memory leak related to not unregistering stream handler in FlutterEventChannel when disposing camera.
## 0.5.2+1
* Fix bug that prevented video recording with audio.
## 0.5.2
* Added capability to disable audio for the `CameraController`. (e.g. `CameraController(_, _,
enableAudio: false);`)
## 0.5.1
* Can now be compiled with earlier Android sdks below 21 when
`<uses-sdk tools:overrideLibrary="io.flutter.plugins.camera"/>` has been added to the project
`AndroidManifest.xml`. For sdks below 21, the plugin won't be registered and calls to it will throw
a `MissingPluginException.`
## 0.5.0
* **Breaking Change** This plugin no longer handles closing and opening the camera on Android
lifecycle changes. Please use `WidgetsBindingObserver` to control camera resources on lifecycle
changes. See example project for example using `WidgetsBindingObserver`.
## 0.4.3+2
* Bump the minimum Flutter version to 1.2.0.
* Add template type parameter to `invokeMethod` calls.
## 0.4.3+1
* Catch additional `Exception`s from Android and throw as `CameraException`s.
## 0.4.3
* Add capability to prepare the capture session for video recording on iOS.
## 0.4.2
* Add sensor orientation value to `CameraDescription`.
## 0.4.1
* Camera methods are ran in a background thread on iOS.
## 0.4.0+3
* Fixed a crash when the plugin is registered by a background FlutterView.
## 0.4.0+2
* Fix orientation of captured photos when camera is used for the first time on Android.
## 0.4.0+1
* Remove categories.
## 0.4.0
* **Breaking Change** Change iOS image stream format to `ImageFormatGroup.bgra8888` from
`ImageFormatGroup.yuv420`.
## 0.3.0+4
* Fixed bug causing black screen on some Android devices.
## 0.3.0+3
* Log a more detailed warning at build time about the previous AndroidX
migration.
## 0.3.0+2
* Fix issue with calculating iOS image orientation in certain edge cases.
## 0.3.0+1
* Remove initial method call invocation from static camera method.
## 0.3.0
* **Breaking change**. Migrate from the deprecated original Android Support
Library to AndroidX. This shouldn't result in any functional changes, but it
requires any Android apps using this plugin to [also
migrate](https://developer.android.com/jetpack/androidx/migrate) if they're
using the original support library.
## 0.2.9+1
* Fix a crash when failing to start preview.
## 0.2.9
* Save photo orientation data on iOS.
## 0.2.8
* Add access to the image stream from Dart.
* Use `cameraController.startImageStream(listener)` to process the images.
## 0.2.7
* Fix issue with crash when the physical device's orientation is unknown.
## 0.2.6
* Update the camera to use the physical device's orientation instead of the UI
orientation on Android.
## 0.2.5
* Fix preview and video size with satisfying conditions of multiple outputs.
## 0.2.4
* Unregister the activity lifecycle callbacks when disposing the camera.
## 0.2.3
* Added path_provider and video_player as dev dependencies because the example uses them.
* Updated example path_provider version to get Dart 2 support.
## 0.2.2
* iOS image capture is done in high quality (full camera size)
## 0.2.1
* Updated Gradle tooling to match Android Studio 3.1.2.
## 0.2.0
* Added support for video recording.
* Changed the example app to add video recording.
A lot of **breaking changes** in this version:
Getter changes:
- Removed `isStarted`
- Renamed `initialized` to `isInitialized`
- Added `isRecordingVideo`
Method changes:
- Renamed `capture` to `takePicture`
- Removed `start` (the preview starts automatically when `initialize` is called)
- Added `startVideoRecording(String filePath)`
- Removed `stop` (the preview stops automatically when `dispose` is called)
- Added `stopVideoRecording`
## 0.1.2
* Fix Dart 2 runtime errors.
## 0.1.1
* Fix Dart 2 runtime error.
## 0.1.0
* **Breaking change**. Set SDK constraints to match the Flutter beta release.
## 0.0.4
* Revert regression of `CameraController.capture()` introduced in v. 0.0.3.
## 0.0.3
* Improved resource cleanup on Android. Avoids crash on Activity restart.
* Made the Future returned by `CameraController.dispose()` and `CameraController.capture()` actually complete on
Android.
## 0.0.2
* Simplified and upgraded Android project template to Android SDK 27.
* Moved Android package to io.flutter.plugins.
* Fixed warnings from the Dart 2.0 analyzer.
## 0.0.1
* Initial release
================================================
FILE: packages/camera/camera/LICENSE
================================================
Copyright 2013 The Flutter Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: packages/camera/camera/README.md
================================================
# Camera Plugin
<?code-excerpt path-base="excerpts/packages/camera_example"?>
[](https://pub.dev/packages/camera)
A Flutter plugin for iOS, Android and Web allowing access to the device cameras.
| | Android | iOS | Web |
|----------------|---------|----------|------------------------|
| **Support** | SDK 21+ | iOS 10+* | [See `camera_web `][1] |
## Features
* Display live camera preview in a widget.
* Snapshots can be captured and saved to a file.
* Record video.
* Add access to the image stream from Dart.
## Installation
First, add `camera` as a [dependency in your pubspec.yaml file](https://flutter.dev/using-packages/).
### iOS
\* The camera plugin compiles for any version of iOS, but its functionality
requires iOS 10 or higher. If compiling for iOS 9, make sure to programmatically
check the version of iOS running on the device before using any camera plugin features.
The [device_info_plus](https://pub.dev/packages/device_info_plus) plugin, for example, can be used to check the iOS version.
Add two rows to the `ios/Runner/Info.plist`:
* one with the key `Privacy - Camera Usage Description` and a usage description.
* and one with the key `Privacy - Microphone Usage Description` and a usage description.
If editing `Info.plist` as text, add:
```xml
<key>NSCameraUsageDescription</key>
<string>your usage description here</string>
<key>NSMicrophoneUsageDescription</key>
<string>your usage description here</string>
```
### Android
Change the minimum Android sdk version to 21 (or higher) in your `android/app/build.gradle` file.
```groovy
minSdkVersion 21
```
It's important to note that the `MediaRecorder` class is not working properly on emulators, as stated in the documentation: https://developer.android.com/reference/android/media/MediaRecorder. Specifically, when recording a video with sound enabled and trying to play it back, the duration won't be correct and you will only see the first frame.
### Web integration
For web integration details, see the
[`camera_web` package](https://pub.dev/packages/camera_web).
### Handling Lifecycle states
As of version [0.5.0](https://github.com/flutter/plugins/blob/main/packages/camera/CHANGELOG.md#050) of the camera plugin, lifecycle changes are no longer handled by the plugin. This means developers are now responsible to control camera resources when the lifecycle state is updated. Failure to do so might lead to unexpected behavior (for example as described in issue [#39109](https://github.com/flutter/flutter/issues/39109)). Handling lifecycle changes can be done by overriding the `didChangeAppLifecycleState` method like so:
<?code-excerpt "main.dart (AppLifecycle)"?>
```dart
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
final CameraController? cameraController = controller;
// App state changed before we got the chance to initialize.
if (cameraController == null || !cameraController.value.isInitialized) {
return;
}
if (state == AppLifecycleState.inactive) {
cameraController.dispose();
} else if (state == AppLifecycleState.resumed) {
onNewCameraSelected(cameraController.description);
}
}
```
### Handling camera access permissions
Permission errors may be thrown when initializing the camera controller, and you are expected to handle them properly.
Here is a list of all permission error codes that can be thrown:
- `CameraAccessDenied`: Thrown when user denies the camera access permission.
- `CameraAccessDeniedWithoutPrompt`: iOS only for now. Thrown when user has previously denied the permission. iOS does not allow prompting alert dialog a second time. Users will have to go to Settings > Privacy > Camera in order to enable camera access.
- `CameraAccessRestricted`: iOS only for now. Thrown when camera access is restricted and users cannot grant permission (parental control).
- `AudioAccessDenied`: Thrown when user denies the audio access permission.
- `AudioAccessDeniedWithoutPrompt`: iOS only for now. Thrown when user has previously denied the permission. iOS does not allow prompting alert dialog a second time. Users will have to go to Settings > Privacy > Microphone in order to enable audio access.
- `AudioAccessRestricted`: iOS only for now. Thrown when audio access is restricted and users cannot grant permission (parental control).
### Example
Here is a small example flutter app displaying a full screen camera preview.
<?code-excerpt "readme_full_example.dart (FullAppExample)"?>
```dart
import 'package:camera/camera.dart';
import 'package:flutter/material.dart';
late List<CameraDescription> _cameras;
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
_cameras = await availableCameras();
runApp(const CameraApp());
}
/// CameraApp is the Main Application.
class CameraApp extends StatefulWidget {
/// Default Constructor
const CameraApp({Key? key}) : super(key: key);
@override
State<CameraApp> createState() => _CameraAppState();
}
class _CameraAppState extends State<CameraApp> {
late CameraController controller;
@override
void initState() {
super.initState();
controller = CameraController(_cameras[0], ResolutionPreset.max);
controller.initialize().then((_) {
if (!mounted) {
return;
}
setState(() {});
}).catchError((Object e) {
if (e is CameraException) {
switch (e.code) {
case 'CameraAccessDenied':
// Handle access errors here.
break;
default:
// Handle other errors here.
break;
}
}
});
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
if (!controller.value.isInitialized) {
return Container();
}
return MaterialApp(
home: CameraPreview(controller),
);
}
}
```
For a more elaborate usage example see [here](https://github.com/flutter/plugins/tree/main/packages/camera/camera/example).
[1]: https://pub.dev/packages/camera_web#limitations-on-the-web-platform
================================================
FILE: packages/camera/camera/example/android/app/build.gradle
================================================
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 31
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
applicationId "io.flutter.plugins.cameraexample"
minSdkVersion 21
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
profile {
matchingFallbacks = ['debug', 'release']
}
}
}
flutter {
source '../..'
}
dependencies {
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
================================================
FILE: packages/camera/camera/example/android/app/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: packages/camera/camera/example/android/app/src/androidTest/java/io/flutter/plugins/DartIntegrationTest.java
================================================
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.plugins;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface DartIntegrationTest {}
================================================
FILE: packages/camera/camera/example/android/app/src/androidTest/java/io/flutter/plugins/cameraexample/FlutterActivityTest.java
================================================
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.plugins.cameraexample;
import androidx.test.rule.ActivityTestRule;
import dev.flutter.plugins.integration_test.FlutterTestRunner;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.plugins.DartIntegrationTest;
import org.junit.Rule;
import org.junit.runner.RunWith;
@DartIntegrationTest
@RunWith(FlutterTestRunner.class)
public class FlutterActivityTest {
@Rule
public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
}
================================================
FILE: packages/camera/camera/example/android/app/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.flutter.plugins.cameraexample">
<application
android:icon="@mipmap/ic_launcher"
android:label="camera_example">
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:name="io.flutter.embedding.android.FlutterActivity"
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data android:name="flutterEmbedding" android:value="2"/>
</application>
<uses-feature
android:name="android.hardware.camera"
android:required="true"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
</manifest>
================================================
FILE: packages/camera/camera/example/android/app/src/main/res/drawable/launch_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
================================================
FILE: packages/camera/camera/example/android/app/src/main/res/values/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
</resources>
================================================
FILE: packages/camera/camera/example/android/build.gradle
================================================
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.1'
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
================================================
FILE: packages/camera/camera/example/android/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
================================================
FILE: packages/camera/camera/example/android/gradle.properties
================================================
org.gradle.jvmargs=-Xmx4G
android.useAndroidX=true
android.enableJetifier=false
android.enableR8=true
================================================
FILE: packages/camera/camera/example/android/settings.gradle
================================================
include ':app'
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withInputStream { stream -> plugins.load(stream) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}
================================================
FILE: packages/camera/camera/example/build.excerpt.yaml
================================================
targets:
$default:
sources:
include:
- lib/**
# Some default includes that aren't really used here but will prevent
# false-negative warnings:
- $package$
- lib/$lib$
exclude:
- '**/.*/**'
- '**/build/**'
builders:
code_excerpter|code_excerpter:
enabled: true
================================================
FILE: packages/camera/camera/example/integration_test/camera_test.dart
================================================
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import 'dart:io';
import 'dart:ui';
import 'package:camera/camera.dart';
import 'package:flutter/painting.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:path_provider/path_provider.dart';
import 'package:video_player/video_player.dart';
void main() {
late Directory testDir;
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
setUpAll(() async {
final Directory extDir = await getTemporaryDirectory();
testDir = await Directory('${extDir.path}/test').create(recursive: true);
});
tearDownAll(() async {
await testDir.delete(recursive: true);
});
final Map<ResolutionPreset, Size> presetExpectedSizes =
<ResolutionPreset, Size>{
ResolutionPreset.low:
Platform.isAndroid ? const Size(240, 320) : const Size(288, 352),
ResolutionPreset.medium:
Platform.isAndroid ? const Size(480, 720) : const Size(480, 640),
ResolutionPreset.high: const Size(720, 1280),
ResolutionPreset.veryHigh: const Size(1080, 1920),
ResolutionPreset.ultraHigh: const Size(2160, 3840),
// Don't bother checking for max here since it could be anything.
};
/// Verify that [actual] has dimensions that are at least as large as
/// [expectedSize]. Allows for a mismatch in portrait vs landscape. Returns
/// whether the dimensions exactly match.
bool assertExpectedDimensions(Size expectedSize, Size actual) {
expect(actual.shortestSide, lessThanOrEqualTo(expectedSize.shortestSide));
expect(actual.longestSide, lessThanOrEqualTo(expectedSize.longestSide));
return actual.shortestSide == expectedSize.shortestSide &&
actual.longestSide == expectedSize.longestSide;
}
// This tests that the capture is no bigger than the preset, since we have
// automatic code to fall back to smaller sizes when we need to. Returns
// whether the image is exactly the desired resolution.
Future<bool> testCaptureImageResolution(
CameraController controller, ResolutionPreset preset) async {
final Size expectedSize = presetExpectedSizes[preset]!;
// Take Picture
final XFile file = await controller.takePicture();
// Load picture
final File fileImage = File(file.path);
final Image image = await decodeImageFromList(fileImage.readAsBytesSync());
// Verify image dimensions are as expected
expect(image, isNotNull);
return assertExpectedDimensions(
expectedSize, Size(image.height.toDouble(), image.width.toDouble()));
}
testWidgets(
'Capture specific image resolutions',
(WidgetTester tester) async {
final List<CameraDescription> cameras = await availableCameras();
if (cameras.isEmpty) {
return;
}
for (final CameraDescription cameraDescription in cameras) {
bool previousPresetExactlySupported = true;
for (final MapEntry<ResolutionPreset, Size> preset
in presetExpectedSizes.entries) {
final CameraController controller =
CameraController(cameraDescription, preset.key);
await controller.initialize();
final bool presetExactlySupported =
await testCaptureImageResolution(controller, preset.key);
assert(!(!previousPresetExactlySupported && presetExactlySupported),
'The camera took higher resolution pictures at a lower resolution.');
previousPresetExactlySupported = presetExactlySupported;
await controller.dispose();
}
}
},
// TODO(egarciad): Fix https://github.com/flutter/flutter/issues/93686.
skip: true,
);
// This tests that the capture is no bigger than the preset, since we have
// automatic code to fall back to smaller sizes when we need to. Returns
// whether the image is exactly the desired resolution.
Future<bool> testCaptureVideoResolution(
CameraController controller, ResolutionPreset preset) async {
final Size expectedSize = presetExpectedSizes[preset]!;
// Take Video
await controller.startVideoRecording();
sleep(const Duration(milliseconds: 300));
final XFile file = await controller.stopVideoRecording();
// Load video metadata
final File videoFile = File(file.path);
final VideoPlayerController videoController =
VideoPlayerController.file(videoFile);
await videoController.initialize();
final Size video = videoController.value.size;
// Verify image dimensions are as expected
expect(video, isNotNull);
return assertExpectedDimensions(
expectedSize, Size(video.height, video.width));
}
testWidgets(
'Capture specific video resolutions',
(WidgetTester tester) async {
final List<CameraDescription> cameras = await availableCameras();
if (cameras.isEmpty) {
return;
}
for (final CameraDescription cameraDescription in cameras) {
bool previousPresetExactlySupported = true;
for (final MapEntry<ResolutionPreset, Size> preset
in presetExpectedSizes.entries) {
final CameraController controller =
CameraController(cameraDescription, preset.key);
await controller.initialize();
await controller.prepareForVideoRecording();
final bool presetExactlySupported =
await testCaptureVideoResolution(controller, preset.key);
assert(!(!previousPresetExactlySupported && presetExactlySupported),
'The camera took higher resolution pictures at a lower resolution.');
previousPresetExactlySupported = presetExactlySupported;
await controller.dispose();
}
}
},
// TODO(egarciad): Fix https://github.com/flutter/flutter/issues/93686.
skip: true,
);
testWidgets('Pause and resume video recording', (WidgetTester tester) async {
final List<CameraDescription> cameras = await availableCameras();
if (cameras.isEmpty) {
return;
}
final CameraController controller = CameraController(
cameras[0],
ResolutionPreset.low,
enableAudio: false,
);
await controller.initialize();
await controller.prepareForVideoRecording();
int startPause;
int timePaused = 0;
await controller.startVideoRecording();
final int recordingStart = DateTime.now().millisecondsSinceEpoch;
sleep(const Duration(milliseconds: 500));
await controller.pauseVideoRecording();
startPause = DateTime.now().millisecondsSinceEpoch;
sleep(const Duration(milliseconds: 500));
await controller.resumeVideoRecording();
timePaused += DateTime.now().millisecondsSinceEpoch - startPause;
sleep(const Duration(milliseconds: 500));
await controller.pauseVideoRecording();
startPause = DateTime.now().millisecondsSinceEpoch;
sleep(const Duration(milliseconds: 500));
await controller.resumeVideoRecording();
timePaused += DateTime.now().millisecondsSinceEpoch - startPause;
sleep(const Duration(milliseconds: 500));
final XFile file = await controller.stopVideoRecording();
final int recordingTime =
DateTime.now().millisecondsSinceEpoch - recordingStart;
final File videoFile = File(file.path);
final VideoPlayerController videoController = VideoPlayerController.file(
videoFile,
);
await videoController.initialize();
final int duration = videoController.value.duration.inMilliseconds;
await videoController.dispose();
expect(duration, lessThan(recordingTime - timePaused));
}, skip: !Platform.isAndroid);
testWidgets(
'Android image streaming',
(WidgetTester tester) async {
final List<CameraDescription> cameras = await availableCameras();
if (cameras.isEmpty) {
return;
}
final CameraController controller = CameraController(
cameras[0],
ResolutionPreset.low,
enableAudio: false,
);
await controller.initialize();
bool isDetecting = false;
await controller.startImageStream((CameraImage image) {
if (isDetecting) {
return;
}
isDetecting = true;
expectLater(image, isNotNull).whenComplete(() => isDetecting = false);
});
expect(controller.value.isStreamingImages, true);
sleep(const Duration(milliseconds: 500));
await controller.stopImageStream();
await controller.dispose();
},
skip: !Platform.isAndroid,
);
/// Start streaming with specifying the ImageFormatGroup.
Future<CameraImage> startStreaming(List<CameraDescription> cameras,
ImageFormatGroup? imageFormatGroup) async {
final CameraController controller = CameraController(
cameras.first,
ResolutionPreset.low,
enableAudio: false,
imageFormatGroup: imageFormatGroup,
);
await controller.initialize();
final Completer<CameraImage> completer = Completer<CameraImage>();
await controller.startImageStream((CameraImage image) {
if (!completer.isCompleted) {
Future<void>(() async {
await controller.stopImageStream();
await controller.dispose();
}).then((Object? value) {
completer.complete(image);
});
}
});
return completer.future;
}
testWidgets(
'iOS image streaming with imageFormatGroup',
(WidgetTester tester) async {
final List<CameraDescription> cameras = await availableCameras();
if (cameras.isEmpty) {
return;
}
CameraImage image = await startStreaming(cameras, null);
expect(image, isNotNull);
expect(image.format.group, ImageFormatGroup.bgra8888);
expect(image.planes.length, 1);
image = await startStreaming(cameras, ImageFormatGroup.yuv420);
expect(image, isNotNull);
expect(image.format.group, ImageFormatGroup.yuv420);
expect(image.planes.length, 2);
image = await startStreaming(cameras, ImageFormatGroup.bgra8888);
expect(image, isNotNull);
expect(image.format.group, ImageFormatGroup.bgra8888);
expect(image.planes.length, 1);
},
skip: !Platform.isIOS,
);
}
================================================
FILE: packages/camera/camera/example/ios/Flutter/AppFrameworkInfo.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
<key>MinimumOSVersion</key>
<string>9.0</string>
</dict>
</plist>
================================================
FILE: packages/camera/camera/example/ios/Flutter/Debug.xcconfig
================================================
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"
================================================
FILE: packages/camera/camera/example/ios/Flutter/Release.xcconfig
================================================
#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"
================================================
FILE: packages/camera/camera/example/ios/Podfile
================================================
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end
================================================
FILE: packages/camera/camera/example/ios/Runner/AppDelegate.h
================================================
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import <Flutter/Flutter.h>
#import <UIKit/UIKit.h>
@interface AppDelegate : FlutterAppDelegate
@end
================================================
FILE: packages/camera/camera/example/ios/Runner/AppDelegate.m
================================================
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "AppDelegate.h"
#include "GeneratedPluginRegistrant.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
// Override point for customization after application launch.
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end
================================================
FILE: packages/camera/camera/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: packages/camera/camera/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
================================================
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: packages/camera/camera/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
================================================
# Launch Screen Assets
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
================================================
FILE: packages/camera/camera/example/ios/Runner/Base.lproj/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
</resources>
</document>
================================================
FILE: packages/camera/camera/example/ios/Runner/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>
================================================
FILE: packages/camera/camera/example/ios/Runner/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>camera_example</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>Can I use the camera please? Only for demo purpose of the app</string>
<key>NSMicrophoneUsageDescription</key>
<string>Only for demo purpose of the app</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
================================================
FILE: packages/camera/camera/example/ios/Runner/main.m
================================================
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import <Flutter/Flutter.h>
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[]) {
@autoreleasepool {
// The setup logic in `AppDelegate::didFinishLaunchingWithOptions:` eventually sends camera
// operations on the background queue, which would run concurrently with the test cases during
// unit tests, making the debugging process confusing. This setup is actually not necessary for
// the unit tests, so it is better to skip the AppDelegate when running unit tests.
BOOL isTesting = NSClassFromString(@"XCTestCase") != nil;
return UIApplicationMain(argc, argv, nil,
isTesting ? nil : NSStringFromClass([AppDelegate class]));
}
}
================================================
FILE: packages/camera/camera/example/ios/Runner.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
236906D1621AE863A5B2E770 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 89D82918721FABF772705DB0 /* libPods-Runner.a */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
14AE82C910C2A12F2ECB2094 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
1944D8072499F3B5E7653D44 /* libPods-RunnerTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RunnerTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
59848A7CA98C1FADF8840207 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
89D82918721FABF772705DB0 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
9C5CC6CAD53AD388B2694F3A /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
A24F9E418BA48BCC7409B117 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
236906D1621AE863A5B2E770 /* libPods-Runner.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
3242FD2B467C15C62200632F /* Frameworks */ = {
isa = PBXGroup;
children = (
89D82918721FABF772705DB0 /* libPods-Runner.a */,
1944D8072499F3B5E7653D44 /* libPods-RunnerTests.a */,
);
name = Frameworks;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
9740EEB31CF90195004384FC /* Generated.xcconfig */,
);
name = Flutter;
sourceTree = "<group>";
};
97C146E51CF9000F007C117D = {
isa = PBXGroup;
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
FD386F00E98D73419C929072 /* Pods */,
3242FD2B467C15C62200632F /* Frameworks */,
);
sourceTree = "<group>";
};
97C146EF1CF9000F007C117D /* Products */ = {
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
);
name = Products;
sourceTree = "<group>";
};
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
97C146FD1CF9000F007C117D /* Assets.xcassets */,
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
97C147021CF9000F007C117D /* Info.plist */,
97C146F11CF9000F007C117D /* Supporting Files */,
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
);
path = Runner;
sourceTree = "<group>";
};
97C146F11CF9000F007C117D /* Supporting Files */ = {
isa = PBXGroup;
children = (
97C146F21CF9000F007C117D /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
FD386F00E98D73419C929072 /* Pods */ = {
isa = PBXGroup;
children = (
59848A7CA98C1FADF8840207 /* Pods-Runner.debug.xcconfig */,
14AE82C910C2A12F2ECB2094 /* Pods-Runner.release.xcconfig */,
9C5CC6CAD53AD388B2694F3A /* Pods-RunnerTests.debug.xcconfig */,
A24F9E418BA48BCC7409B117 /* Pods-RunnerTests.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
9872F2A25E8A171A111468CD /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
);
buildRules = (
);
dependencies = (
);
name = Runner;
productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "The Flutter Authors";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
};
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 97C146E51CF9000F007C117D;
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Thin Binary";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
9872F2A25E8A171A111468CD /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
97C146F31CF9000F007C117D /* main.m in Sources */,
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C146FB1CF9000F007C117D /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
97C147001CF9000F007C117D /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
97C147061CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.cameraExample;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
97C147071CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
DEVELOPMENT_TEAM = "";
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.cameraExample;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147031CF9000F007C117D /* Debug */,
97C147041CF9000F007C117D /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
97C147061CF9000F007C117D /* Debug */,
97C147071CF9000F007C117D /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;
}
================================================
FILE: packages/camera/camera/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>
================================================
FILE: packages/camera/camera/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1300"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "03BB76672665316900CE5A93"
BuildableName = "RunnerTests.xctest"
BlueprintName = "RunnerTests"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
<AdditionalOption
key = "NSZombieEnabled"
value = "YES"
isEnabled = "YES">
</AdditionalOption>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
================================================
FILE: packages/camera/camera/example/ios/Runner.xcworkspace/contents.xcworkspacedata
================================================
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>
================================================
FILE: packages/camera/camera/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
================================================
FILE: packages/camera/camera/example/lib/main.dart
================================================
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import 'dart:io';
import 'package:camera/camera.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:video_player/video_player.dart';
/// Camera example home widget.
class CameraExampleHome extends StatefulWidget {
/// Default Constructor
const CameraExampleHome({Key? key}) : super(key: key);
@override
State<CameraExampleHome> createState() {
return _CameraExampleHomeState();
}
}
/// Returns a suitable camera icon for [direction].
IconData getCameraLensIcon(CameraLensDirection direction) {
switch (direction) {
case CameraLensDirection.back:
return Icons.camera_rear;
case CameraLensDirection.front:
return Icons.camera_front;
case CameraLensDirection.external:
return Icons.camera;
}
// This enum is from a different package, so a new value could be added at
// any time. The example should keep working if that happens.
// ignore: dead_code
return Icons.camera;
}
void _logError(String code, String? message) {
// ignore: avoid_print
print('Error: $code${message == null ? '' : '\nError Message: $message'}');
}
class _CameraExampleHomeState extends State<CameraExampleHome>
with WidgetsBindingObserver, TickerProviderStateMixin {
CameraController? controller;
XFile? imageFile;
XFile? videoFile;
VideoPlayerController? videoController;
VoidCallback? videoPlayerListener;
bool enableAudio = true;
double _minAvailableExposureOffset = 0.0;
double _maxAvailableExposureOffset = 0.0;
double _currentExposureOffset = 0.0;
late AnimationController _flashModeControlRowAnimationController;
late Animation<double> _flashModeControlRowAnimation;
late AnimationController _exposureModeControlRowAnimationController;
late Animation<double> _exposureModeControlRowAnimation;
late AnimationController _focusModeControlRowAnimationController;
late Animation<double> _focusModeControlRowAnimation;
double _minAvailableZoom = 1.0;
double _maxAvailableZoom = 1.0;
double _currentScale = 1.0;
double _baseScale = 1.0;
// Counting pointers (number of user fingers on screen)
int _pointers = 0;
@override
void initState() {
super.initState();
Showing preview only (253K chars total). Download the full file or copy to clipboard to get everything.
gitextract_ziolw3rl/ ├── .ci/ │ ├── Dockerfile │ ├── flutter_master.version │ ├── flutter_stable.version │ ├── scripts/ │ │ ├── build_all_plugins.sh │ │ ├── build_examples_win32.sh │ │ ├── create_all_plugins_app.sh │ │ ├── create_simulator.sh │ │ ├── drive_examples_win32.sh │ │ ├── native_test_win32.sh │ │ └── prepare_tool.sh │ └── targets/ │ ├── ios_build_all_plugins.yaml │ ├── ios_platform_tests.yaml │ ├── macos_build_all_plugins.yaml │ ├── macos_lint_podspecs.yaml │ ├── macos_platform_tests.yaml │ ├── windows_build_all_plugins.yaml │ └── windows_build_and_platform_tests.yaml ├── .ci.yaml ├── .cirrus.yml ├── .clang-format ├── .gitattributes ├── .github/ │ ├── PULL_REQUEST_TEMPLATE.md │ ├── dependabot.yml │ ├── labeler.yml │ ├── post_merge_labeler.yml │ └── workflows/ │ ├── pull_request_label.yml │ ├── release.yml │ └── scorecards-analysis.yml ├── .gitignore ├── .gitmodules ├── .opensource/ │ └── project.json ├── AUTHORS ├── CODEOWNERS ├── CONTRIBUTING.md ├── FlutterFire.md ├── LICENSE ├── README.md ├── analysis_options.yaml ├── packages/ │ ├── camera/ │ │ ├── camera/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── cameraexample/ │ │ │ │ │ │ │ └── FlutterActivityTest.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ └── res/ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── build.excerpt.yaml │ │ │ │ ├── integration_test/ │ │ │ │ │ └── camera_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── lib/ │ │ │ │ │ ├── main.dart │ │ │ │ │ └── readme_full_example.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── test/ │ │ │ │ │ └── main_test.dart │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ └── web/ │ │ │ │ ├── index.html │ │ │ │ └── manifest.json │ │ │ ├── lib/ │ │ │ │ ├── camera.dart │ │ │ │ └── src/ │ │ │ │ ├── camera_controller.dart │ │ │ │ ├── camera_image.dart │ │ │ │ └── camera_preview.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── camera_image_stream_test.dart │ │ │ ├── camera_image_test.dart │ │ │ ├── camera_preview_test.dart │ │ │ ├── camera_test.dart │ │ │ └── camera_value_test.dart │ │ ├── camera_android/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── lint-baseline.xml │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── camera/ │ │ │ │ │ ├── Camera.java │ │ │ │ │ ├── CameraCaptureCallback.java │ │ │ │ │ ├── CameraPermissions.java │ │ │ │ │ ├── CameraPlugin.java │ │ │ │ │ ├── CameraProperties.java │ │ │ │ │ ├── CameraRegionUtils.java │ │ │ │ │ ├── CameraState.java │ │ │ │ │ ├── CameraUtils.java │ │ │ │ │ ├── DartMessenger.java │ │ │ │ │ ├── ImageSaver.java │ │ │ │ │ ├── MethodCallHandlerImpl.java │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── CameraFeature.java │ │ │ │ │ │ ├── CameraFeatureFactory.java │ │ │ │ │ │ ├── CameraFeatureFactoryImpl.java │ │ │ │ │ │ ├── CameraFeatures.java │ │ │ │ │ │ ├── Point.java │ │ │ │ │ │ ├── autofocus/ │ │ │ │ │ │ │ ├── AutoFocusFeature.java │ │ │ │ │ │ │ └── FocusMode.java │ │ │ │ │ │ ├── exposurelock/ │ │ │ │ │ │ │ ├── ExposureLockFeature.java │ │ │ │ │ │ │ └── ExposureMode.java │ │ │ │ │ │ ├── exposureoffset/ │ │ │ │ │ │ │ └── ExposureOffsetFeature.java │ │ │ │ │ │ ├── exposurepoint/ │ │ │ │ │ │ │ └── ExposurePointFeature.java │ │ │ │ │ │ ├── flash/ │ │ │ │ │ │ │ ├── FlashFeature.java │ │ │ │ │ │ │ └── FlashMode.java │ │ │ │ │ │ ├── focuspoint/ │ │ │ │ │ │ │ └── FocusPointFeature.java │ │ │ │ │ │ ├── fpsrange/ │ │ │ │ │ │ │ └── FpsRangeFeature.java │ │ │ │ │ │ ├── noisereduction/ │ │ │ │ │ │ │ ├── NoiseReductionFeature.java │ │ │ │ │ │ │ └── NoiseReductionMode.java │ │ │ │ │ │ ├── resolution/ │ │ │ │ │ │ │ ├── ResolutionFeature.java │ │ │ │ │ │ │ └── ResolutionPreset.java │ │ │ │ │ │ ├── sensororientation/ │ │ │ │ │ │ │ ├── DeviceOrientationManager.java │ │ │ │ │ │ │ └── SensorOrientationFeature.java │ │ │ │ │ │ └── zoomlevel/ │ │ │ │ │ │ ├── ZoomLevelFeature.java │ │ │ │ │ │ └── ZoomUtils.java │ │ │ │ │ ├── media/ │ │ │ │ │ │ └── MediaRecorderBuilder.java │ │ │ │ │ └── types/ │ │ │ │ │ ├── CameraCaptureProperties.java │ │ │ │ │ ├── CaptureTimeoutsWrapper.java │ │ │ │ │ ├── ExposureMode.java │ │ │ │ │ ├── FlashMode.java │ │ │ │ │ ├── FocusMode.java │ │ │ │ │ ├── ResolutionPreset.java │ │ │ │ │ └── Timeout.java │ │ │ │ └── test/ │ │ │ │ ├── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── camera/ │ │ │ │ │ ├── CameraCaptureCallbackStatesTest.java │ │ │ │ │ ├── CameraCaptureCallbackTest.java │ │ │ │ │ ├── CameraPermissionsTest.java │ │ │ │ │ ├── CameraPropertiesImplTest.java │ │ │ │ │ ├── CameraRegionUtils_convertPointToMeteringRectangleTest.java │ │ │ │ │ ├── CameraRegionUtils_getCameraBoundariesTest.java │ │ │ │ │ ├── CameraTest.java │ │ │ │ │ ├── CameraTest_getRecordingProfileTest.java │ │ │ │ │ ├── CameraUtilsTest.java │ │ │ │ │ ├── DartMessengerTest.java │ │ │ │ │ ├── ImageSaverTests.java │ │ │ │ │ ├── MethodCallHandlerImplTest.java │ │ │ │ │ ├── features/ │ │ │ │ │ │ ├── autofocus/ │ │ │ │ │ │ │ ├── AutoFocusFeatureTest.java │ │ │ │ │ │ │ └── FocusModeTest.java │ │ │ │ │ │ ├── exposurelock/ │ │ │ │ │ │ │ ├── ExposureLockFeatureTest.java │ │ │ │ │ │ │ └── ExposureModeTest.java │ │ │ │ │ │ ├── exposureoffset/ │ │ │ │ │ │ │ └── ExposureOffsetFeatureTest.java │ │ │ │ │ │ ├── exposurepoint/ │ │ │ │ │ │ │ └── ExposurePointFeatureTest.java │ │ │ │ │ │ ├── flash/ │ │ │ │ │ │ │ └── FlashFeatureTest.java │ │ │ │ │ │ ├── focuspoint/ │ │ │ │ │ │ │ └── FocusPointFeatureTest.java │ │ │ │ │ │ ├── fpsrange/ │ │ │ │ │ │ │ ├── FpsRangeFeaturePixel4aTest.java │ │ │ │ │ │ │ └── FpsRangeFeatureTest.java │ │ │ │ │ │ ├── noisereduction/ │ │ │ │ │ │ │ └── NoiseReductionFeatureTest.java │ │ │ │ │ │ ├── resolution/ │ │ │ │ │ │ │ └── ResolutionFeatureTest.java │ │ │ │ │ │ ├── sensororientation/ │ │ │ │ │ │ │ ├── DeviceOrientationManagerTest.java │ │ │ │ │ │ │ └── SensorOrientationFeatureTest.java │ │ │ │ │ │ └── zoomlevel/ │ │ │ │ │ │ ├── ZoomLevelFeatureTest.java │ │ │ │ │ │ └── ZoomUtilsTest.java │ │ │ │ │ ├── media/ │ │ │ │ │ │ └── MediaRecorderBuilderTest.java │ │ │ │ │ ├── types/ │ │ │ │ │ │ ├── ExposureModeTest.java │ │ │ │ │ │ ├── FlashModeTest.java │ │ │ │ │ │ └── FocusModeTest.java │ │ │ │ │ └── utils/ │ │ │ │ │ └── TestUtils.java │ │ │ │ └── resources/ │ │ │ │ └── robolectric.properties │ │ │ ├── example/ │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── cameraexample/ │ │ │ │ │ │ │ └── FlutterActivityTest.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ └── res/ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── camera_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ ├── camera_controller.dart │ │ │ │ │ ├── camera_preview.dart │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ ├── camera_android.dart │ │ │ │ └── src/ │ │ │ │ ├── android_camera.dart │ │ │ │ ├── type_conversion.dart │ │ │ │ └── utils.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── android_camera_test.dart │ │ │ ├── method_channel_mock.dart │ │ │ ├── type_conversion_test.dart │ │ │ └── utils_test.dart │ │ ├── camera_android_camerax/ │ │ │ ├── .metadata │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── camerax/ │ │ │ │ │ ├── CameraAndroidCameraxPlugin.java │ │ │ │ │ ├── CameraFlutterApiImpl.java │ │ │ │ │ ├── CameraInfoFlutterApiImpl.java │ │ │ │ │ ├── CameraInfoHostApiImpl.java │ │ │ │ │ ├── CameraPermissionsManager.java │ │ │ │ │ ├── CameraSelectorFlutterApiImpl.java │ │ │ │ │ ├── CameraSelectorHostApiImpl.java │ │ │ │ │ ├── CameraXProxy.java │ │ │ │ │ ├── DeviceOrientationManager.java │ │ │ │ │ ├── GeneratedCameraXLibrary.java │ │ │ │ │ ├── InstanceManager.java │ │ │ │ │ ├── JavaObjectHostApiImpl.java │ │ │ │ │ ├── PreviewHostApiImpl.java │ │ │ │ │ ├── ProcessCameraProviderFlutterApiImpl.java │ │ │ │ │ ├── ProcessCameraProviderHostApiImpl.java │ │ │ │ │ ├── SystemServicesFlutterApiImpl.java │ │ │ │ │ └── SystemServicesHostApiImpl.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── io/ │ │ │ │ └── flutter/ │ │ │ │ └── plugins/ │ │ │ │ └── camerax/ │ │ │ │ ├── CameraInfoTest.java │ │ │ │ ├── CameraPermissionsManagerTest.java │ │ │ │ ├── CameraSelectorTest.java │ │ │ │ ├── CameraTest.java │ │ │ │ ├── DeviceOrientationManagerTest.java │ │ │ │ ├── InstanceManagerTest.java │ │ │ │ ├── JavaObjectHostApiTest.java │ │ │ │ ├── PreviewTest.java │ │ │ │ ├── ProcessCameraProviderTest.java │ │ │ │ └── SystemServicesTest.java │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── cameraxexample/ │ │ │ │ │ │ │ └── MainActivityTest.java │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ ├── java/ │ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ │ └── cameraexample/ │ │ │ │ │ │ │ │ └── MainActivity.java │ │ │ │ │ │ │ └── res/ │ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ ├── drawable-v21/ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ ├── values/ │ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ │ └── values-night/ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ └── profile/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── integration_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ ├── camera_controller.dart │ │ │ │ │ ├── camera_image.dart │ │ │ │ │ ├── camera_preview.dart │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── test/ │ │ │ │ │ └── widget_test.dart │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ ├── camera_android_camerax.dart │ │ │ │ └── src/ │ │ │ │ ├── android_camera_camerax.dart │ │ │ │ ├── android_camera_camerax_flutter_api_impls.dart │ │ │ │ ├── camera.dart │ │ │ │ ├── camera_info.dart │ │ │ │ ├── camera_selector.dart │ │ │ │ ├── camerax_library.g.dart │ │ │ │ ├── instance_manager.dart │ │ │ │ ├── java_object.dart │ │ │ │ ├── preview.dart │ │ │ │ ├── process_camera_provider.dart │ │ │ │ ├── surface.dart │ │ │ │ ├── system_services.dart │ │ │ │ └── use_case.dart │ │ │ ├── pigeons/ │ │ │ │ └── camerax_library.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── android_camera_camerax_test.dart │ │ │ ├── android_camera_camerax_test.mocks.dart │ │ │ ├── camera_info_test.dart │ │ │ ├── camera_info_test.mocks.dart │ │ │ ├── camera_selector_test.dart │ │ │ ├── camera_selector_test.mocks.dart │ │ │ ├── camera_test.dart │ │ │ ├── instance_manager_test.dart │ │ │ ├── preview_test.dart │ │ │ ├── preview_test.mocks.dart │ │ │ ├── process_camera_provider_test.dart │ │ │ ├── process_camera_provider_test.mocks.dart │ │ │ ├── system_services_test.dart │ │ │ ├── system_services_test.mocks.dart │ │ │ └── test_camerax_library.g.dart │ │ ├── camera_avfoundation/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── integration_test/ │ │ │ │ │ └── camera_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ └── RunnerTests/ │ │ │ │ │ ├── AvailableCamerasTest.m │ │ │ │ │ ├── CameraCaptureSessionQueueRaceConditionTests.m │ │ │ │ │ ├── CameraExposureTests.m │ │ │ │ │ ├── CameraFocusTests.m │ │ │ │ │ ├── CameraMethodChannelTests.m │ │ │ │ │ ├── CameraOrientationTests.m │ │ │ │ │ ├── CameraPermissionTests.m │ │ │ │ │ ├── CameraPreviewPauseTests.m │ │ │ │ │ ├── CameraPropertiesTests.m │ │ │ │ │ ├── CameraTestUtils.h │ │ │ │ │ ├── CameraTestUtils.m │ │ │ │ │ ├── CameraUtilTests.m │ │ │ │ │ ├── FLTCamPhotoCaptureTests.m │ │ │ │ │ ├── FLTCamSampleBufferTests.m │ │ │ │ │ ├── FLTSavePhotoDelegateTests.m │ │ │ │ │ ├── Info.plist │ │ │ │ │ ├── MockFLTThreadSafeFlutterResult.h │ │ │ │ │ ├── MockFLTThreadSafeFlutterResult.m │ │ │ │ │ ├── QueueUtilsTests.m │ │ │ │ │ ├── StreamingTest.m │ │ │ │ │ ├── ThreadSafeEventChannelTests.m │ │ │ │ │ ├── ThreadSafeFlutterResultTests.m │ │ │ │ │ ├── ThreadSafeMethodChannelTests.m │ │ │ │ │ └── ThreadSafeTextureRegistryTests.m │ │ │ │ ├── lib/ │ │ │ │ │ ├── camera_controller.dart │ │ │ │ │ ├── camera_preview.dart │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── ios/ │ │ │ │ ├── Assets/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── Classes/ │ │ │ │ │ ├── CameraPermissionUtils.h │ │ │ │ │ ├── CameraPermissionUtils.m │ │ │ │ │ ├── CameraPlugin.h │ │ │ │ │ ├── CameraPlugin.m │ │ │ │ │ ├── CameraPlugin.modulemap │ │ │ │ │ ├── CameraPlugin_Test.h │ │ │ │ │ ├── CameraProperties.h │ │ │ │ │ ├── CameraProperties.m │ │ │ │ │ ├── FLTCam.h │ │ │ │ │ ├── FLTCam.m │ │ │ │ │ ├── FLTCam_Test.h │ │ │ │ │ ├── FLTSavePhotoDelegate.h │ │ │ │ │ ├── FLTSavePhotoDelegate.m │ │ │ │ │ ├── FLTSavePhotoDelegate_Test.h │ │ │ │ │ ├── FLTThreadSafeEventChannel.h │ │ │ │ │ ├── FLTThreadSafeEventChannel.m │ │ │ │ │ ├── FLTThreadSafeFlutterResult.h │ │ │ │ │ ├── FLTThreadSafeFlutterResult.m │ │ │ │ │ ├── FLTThreadSafeMethodChannel.h │ │ │ │ │ ├── FLTThreadSafeMethodChannel.m │ │ │ │ │ ├── FLTThreadSafeTextureRegistry.h │ │ │ │ │ ├── FLTThreadSafeTextureRegistry.m │ │ │ │ │ ├── QueueUtils.h │ │ │ │ │ ├── QueueUtils.m │ │ │ │ │ └── camera_avfoundation-umbrella.h │ │ │ │ └── camera_avfoundation.podspec │ │ │ ├── lib/ │ │ │ │ ├── camera_avfoundation.dart │ │ │ │ └── src/ │ │ │ │ ├── avfoundation_camera.dart │ │ │ │ ├── type_conversion.dart │ │ │ │ └── utils.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── avfoundation_camera_test.dart │ │ │ ├── method_channel_mock.dart │ │ │ ├── type_conversion_test.dart │ │ │ └── utils_test.dart │ │ ├── camera_platform_interface/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── camera_platform_interface.dart │ │ │ │ └── src/ │ │ │ │ ├── events/ │ │ │ │ │ ├── camera_event.dart │ │ │ │ │ └── device_event.dart │ │ │ │ ├── method_channel/ │ │ │ │ │ ├── method_channel_camera.dart │ │ │ │ │ └── type_conversion.dart │ │ │ │ ├── platform_interface/ │ │ │ │ │ └── camera_platform.dart │ │ │ │ ├── types/ │ │ │ │ │ ├── camera_description.dart │ │ │ │ │ ├── camera_exception.dart │ │ │ │ │ ├── camera_image_data.dart │ │ │ │ │ ├── exposure_mode.dart │ │ │ │ │ ├── flash_mode.dart │ │ │ │ │ ├── focus_mode.dart │ │ │ │ │ ├── image_format_group.dart │ │ │ │ │ ├── resolution_preset.dart │ │ │ │ │ ├── types.dart │ │ │ │ │ └── video_capture_options.dart │ │ │ │ └── utils/ │ │ │ │ └── utils.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── camera_platform_interface_test.dart │ │ │ ├── events/ │ │ │ │ ├── camera_event_test.dart │ │ │ │ └── device_event_test.dart │ │ │ ├── method_channel/ │ │ │ │ ├── method_channel_camera_test.dart │ │ │ │ └── type_conversion_test.dart │ │ │ ├── types/ │ │ │ │ ├── camera_description_test.dart │ │ │ │ ├── camera_exception_test.dart │ │ │ │ ├── camera_image_data_test.dart │ │ │ │ ├── exposure_mode_test.dart │ │ │ │ ├── flash_mode_test.dart │ │ │ │ ├── focus_mode_test.dart │ │ │ │ ├── image_group_test.dart │ │ │ │ └── resolution_preset_test.dart │ │ │ └── utils/ │ │ │ ├── method_channel_mock.dart │ │ │ └── utils_test.dart │ │ ├── camera_web/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ ├── camera_error_code_test.dart │ │ │ │ │ ├── camera_metadata_test.dart │ │ │ │ │ ├── camera_options_test.dart │ │ │ │ │ ├── camera_service_test.dart │ │ │ │ │ ├── camera_test.dart │ │ │ │ │ ├── camera_web_exception_test.dart │ │ │ │ │ ├── camera_web_test.dart │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ ├── helpers.dart │ │ │ │ │ │ └── mocks.dart │ │ │ │ │ └── zoom_level_capability_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── run_test.sh │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ └── web/ │ │ │ │ └── index.html │ │ │ ├── lib/ │ │ │ │ ├── camera_web.dart │ │ │ │ └── src/ │ │ │ │ ├── camera.dart │ │ │ │ ├── camera_service.dart │ │ │ │ ├── camera_web.dart │ │ │ │ ├── shims/ │ │ │ │ │ ├── dart_js_util.dart │ │ │ │ │ ├── dart_ui.dart │ │ │ │ │ ├── dart_ui_fake.dart │ │ │ │ │ └── dart_ui_real.dart │ │ │ │ └── types/ │ │ │ │ ├── camera_error_code.dart │ │ │ │ ├── camera_metadata.dart │ │ │ │ ├── camera_options.dart │ │ │ │ ├── camera_web_exception.dart │ │ │ │ ├── media_device_kind.dart │ │ │ │ ├── orientation_type.dart │ │ │ │ ├── types.dart │ │ │ │ └── zoom_level_capability.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── README.md │ │ │ └── more_tests_exist_elsewhere_test.dart │ │ └── camera_windows/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── README.md │ │ │ ├── integration_test/ │ │ │ │ └── camera_test.dart │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ ├── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ └── windows/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── generated_plugins.cmake │ │ │ └── runner/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Runner.rc │ │ │ ├── flutter_window.cpp │ │ │ ├── flutter_window.h │ │ │ ├── main.cpp │ │ │ ├── resource.h │ │ │ ├── runner.exe.manifest │ │ │ ├── utils.cpp │ │ │ ├── utils.h │ │ │ ├── win32_window.cpp │ │ │ └── win32_window.h │ │ ├── lib/ │ │ │ └── camera_windows.dart │ │ ├── pubspec.yaml │ │ ├── test/ │ │ │ ├── camera_windows_test.dart │ │ │ └── utils/ │ │ │ └── method_channel_mock.dart │ │ └── windows/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── camera.cpp │ │ ├── camera.h │ │ ├── camera_plugin.cpp │ │ ├── camera_plugin.h │ │ ├── camera_windows.cpp │ │ ├── capture_controller.cpp │ │ ├── capture_controller.h │ │ ├── capture_controller_listener.h │ │ ├── capture_device_info.cpp │ │ ├── capture_device_info.h │ │ ├── capture_engine_listener.cpp │ │ ├── capture_engine_listener.h │ │ ├── com_heap_ptr.h │ │ ├── include/ │ │ │ └── camera_windows/ │ │ │ └── camera_windows.h │ │ ├── photo_handler.cpp │ │ ├── photo_handler.h │ │ ├── preview_handler.cpp │ │ ├── preview_handler.h │ │ ├── record_handler.cpp │ │ ├── record_handler.h │ │ ├── string_utils.cpp │ │ ├── string_utils.h │ │ ├── test/ │ │ │ ├── camera_plugin_test.cpp │ │ │ ├── camera_test.cpp │ │ │ ├── capture_controller_test.cpp │ │ │ └── mocks.h │ │ ├── texture_handler.cpp │ │ └── texture_handler.h │ ├── e2e/ │ │ └── README.md │ ├── espresso/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── android/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ ├── lint-baseline.xml │ │ │ ├── settings.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ ├── androidx/ │ │ │ │ └── test/ │ │ │ │ └── espresso/ │ │ │ │ └── flutter/ │ │ │ │ ├── EspressoFlutter.java │ │ │ │ ├── action/ │ │ │ │ │ ├── ActionUtil.java │ │ │ │ │ ├── ClickAction.java │ │ │ │ │ ├── FlutterActions.java │ │ │ │ │ ├── FlutterScrollToAction.java │ │ │ │ │ ├── FlutterTypeTextAction.java │ │ │ │ │ ├── FlutterViewAction.java │ │ │ │ │ ├── SyntheticClickAction.java │ │ │ │ │ ├── WaitUntilIdleAction.java │ │ │ │ │ ├── WidgetCoordinatesCalculator.java │ │ │ │ │ └── WidgetInfoFetcher.java │ │ │ │ ├── api/ │ │ │ │ │ ├── FlutterAction.java │ │ │ │ │ ├── FlutterTestingProtocol.java │ │ │ │ │ ├── SyntheticAction.java │ │ │ │ │ ├── WidgetAction.java │ │ │ │ │ ├── WidgetAssertion.java │ │ │ │ │ └── WidgetMatcher.java │ │ │ │ ├── assertion/ │ │ │ │ │ ├── FlutterAssertions.java │ │ │ │ │ └── FlutterViewAssertion.java │ │ │ │ ├── common/ │ │ │ │ │ ├── Constants.java │ │ │ │ │ └── Duration.java │ │ │ │ ├── exception/ │ │ │ │ │ ├── AmbiguousWidgetMatcherException.java │ │ │ │ │ ├── InvalidFlutterViewException.java │ │ │ │ │ └── NoMatchingWidgetException.java │ │ │ │ ├── internal/ │ │ │ │ │ ├── idgenerator/ │ │ │ │ │ │ ├── IdException.java │ │ │ │ │ │ ├── IdGenerator.java │ │ │ │ │ │ └── IdGenerators.java │ │ │ │ │ ├── jsonrpc/ │ │ │ │ │ │ ├── JsonRpcClient.java │ │ │ │ │ │ └── message/ │ │ │ │ │ │ ├── ErrorObject.java │ │ │ │ │ │ ├── JsonRpcRequest.java │ │ │ │ │ │ └── JsonRpcResponse.java │ │ │ │ │ └── protocol/ │ │ │ │ │ └── impl/ │ │ │ │ │ ├── DartVmService.java │ │ │ │ │ ├── DartVmServiceUtil.java │ │ │ │ │ ├── FlutterProtocolException.java │ │ │ │ │ ├── GetOffsetAction.java │ │ │ │ │ ├── GetOffsetResponse.java │ │ │ │ │ ├── GetVmResponse.java │ │ │ │ │ ├── GetWidgetDiagnosticsAction.java │ │ │ │ │ ├── GetWidgetDiagnosticsResponse.java │ │ │ │ │ ├── NoPendingFrameCondition.java │ │ │ │ │ ├── NoPendingPlatformMessagesCondition.java │ │ │ │ │ ├── NoTransientCallbacksCondition.java │ │ │ │ │ ├── WaitCondition.java │ │ │ │ │ ├── WaitForConditionAction.java │ │ │ │ │ └── WidgetInfoFactory.java │ │ │ │ ├── matcher/ │ │ │ │ │ ├── FlutterMatchers.java │ │ │ │ │ ├── IsDescendantOfMatcher.java │ │ │ │ │ ├── IsExistingMatcher.java │ │ │ │ │ ├── WithTextMatcher.java │ │ │ │ │ ├── WithTooltipMatcher.java │ │ │ │ │ ├── WithTypeMatcher.java │ │ │ │ │ └── WithValueKeyMatcher.java │ │ │ │ └── model/ │ │ │ │ ├── WidgetInfo.java │ │ │ │ └── WidgetInfoBuilder.java │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── espresso/ │ │ │ └── EspressoPlugin.java │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── .gitignore │ │ │ │ ├── app/ │ │ │ │ │ ├── build.gradle │ │ │ │ │ └── src/ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── MainActivityTest.java │ │ │ │ │ ├── debug/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ ├── java/ │ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ │ └── espresso_example/ │ │ │ │ │ │ │ └── MainActivity.java │ │ │ │ │ │ └── res/ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── profile/ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── build.gradle │ │ │ │ ├── gradle/ │ │ │ │ │ └── wrapper/ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── gradle.properties │ │ │ │ └── settings.gradle │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ └── test_driver/ │ │ │ └── example.dart │ │ └── pubspec.yaml │ ├── file_selector/ │ │ ├── file_selector/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── build.excerpt.yaml │ │ │ │ ├── ios/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── Runner-Bridging-Header.h │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ ├── lib/ │ │ │ │ │ ├── get_directory_page.dart │ │ │ │ │ ├── home_page.dart │ │ │ │ │ ├── main.dart │ │ │ │ │ ├── open_image_page.dart │ │ │ │ │ ├── open_multiple_images_page.dart │ │ │ │ │ ├── open_text_page.dart │ │ │ │ │ ├── readme_standalone_excerpts.dart │ │ │ │ │ └── save_text_page.dart │ │ │ │ ├── linux/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ │ ├── main.cc │ │ │ │ │ ├── my_application.cc │ │ │ │ │ └── my_application.h │ │ │ │ ├── macos/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── web/ │ │ │ │ │ ├── index.html │ │ │ │ │ └── manifest.json │ │ │ │ └── windows/ │ │ │ │ ├── .gitignore │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── flutter/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ └── runner/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Runner.rc │ │ │ │ ├── flutter_window.cpp │ │ │ │ ├── flutter_window.h │ │ │ │ ├── main.cpp │ │ │ │ ├── resource.h │ │ │ │ ├── runner.exe.manifest │ │ │ │ ├── utils.cpp │ │ │ │ ├── utils.h │ │ │ │ ├── win32_window.cpp │ │ │ │ └── win32_window.h │ │ │ ├── lib/ │ │ │ │ └── file_selector.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── file_selector_test.dart │ │ ├── file_selector_ios/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── ios/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── Runner-Bridging-Header.h │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ └── RunnerTests/ │ │ │ │ │ └── FileSelectorTests.m │ │ │ │ ├── lib/ │ │ │ │ │ ├── home_page.dart │ │ │ │ │ ├── main.dart │ │ │ │ │ ├── open_image_page.dart │ │ │ │ │ ├── open_multiple_images_page.dart │ │ │ │ │ └── open_text_page.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── ios/ │ │ │ │ ├── .gitignore │ │ │ │ ├── Assets/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── Classes/ │ │ │ │ │ ├── FFSFileSelectorPlugin.h │ │ │ │ │ ├── FFSFileSelectorPlugin.m │ │ │ │ │ ├── FFSFileSelectorPlugin_Test.h │ │ │ │ │ ├── FileSelectorPlugin.modulemap │ │ │ │ │ ├── file_selector_ios-umbrella.h │ │ │ │ │ ├── messages.g.h │ │ │ │ │ └── messages.g.m │ │ │ │ └── file_selector_ios.podspec │ │ │ ├── lib/ │ │ │ │ ├── file_selector_ios.dart │ │ │ │ └── src/ │ │ │ │ └── messages.g.dart │ │ │ ├── pigeons/ │ │ │ │ ├── copyright.txt │ │ │ │ └── messages.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── file_selector_ios_test.dart │ │ │ ├── file_selector_ios_test.mocks.dart │ │ │ └── test_api.g.dart │ │ ├── file_selector_linux/ │ │ │ ├── .gitignore │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── lib/ │ │ │ │ │ ├── get_directory_page.dart │ │ │ │ │ ├── get_multiple_directories_page.dart │ │ │ │ │ ├── home_page.dart │ │ │ │ │ ├── main.dart │ │ │ │ │ ├── open_image_page.dart │ │ │ │ │ ├── open_multiple_images_page.dart │ │ │ │ │ ├── open_text_page.dart │ │ │ │ │ └── save_text_page.dart │ │ │ │ ├── linux/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ │ ├── main.cc │ │ │ │ │ ├── my_application.cc │ │ │ │ │ └── my_application.h │ │ │ │ └── pubspec.yaml │ │ │ ├── lib/ │ │ │ │ └── file_selector_linux.dart │ │ │ ├── linux/ │ │ │ │ ├── .gitignore │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── file_selector_plugin.cc │ │ │ │ ├── file_selector_plugin_private.h │ │ │ │ ├── include/ │ │ │ │ │ └── file_selector_linux/ │ │ │ │ │ └── file_selector_plugin.h │ │ │ │ └── test/ │ │ │ │ ├── file_selector_plugin_test.cc │ │ │ │ └── test_main.cc │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── file_selector_linux_test.dart │ │ ├── file_selector_macos/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── lib/ │ │ │ │ │ ├── get_directory_page.dart │ │ │ │ │ ├── home_page.dart │ │ │ │ │ ├── main.dart │ │ │ │ │ ├── open_image_page.dart │ │ │ │ │ ├── open_multiple_images_page.dart │ │ │ │ │ ├── open_text_page.dart │ │ │ │ │ └── save_text_page.dart │ │ │ │ ├── macos/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ └── RunnerTests/ │ │ │ │ │ ├── Info.plist │ │ │ │ │ └── RunnerTests.swift │ │ │ │ └── pubspec.yaml │ │ │ ├── lib/ │ │ │ │ ├── file_selector_macos.dart │ │ │ │ └── src/ │ │ │ │ └── messages.g.dart │ │ │ ├── macos/ │ │ │ │ ├── Classes/ │ │ │ │ │ ├── FileSelectorPlugin.swift │ │ │ │ │ └── messages.g.swift │ │ │ │ └── file_selector_macos.podspec │ │ │ ├── pigeons/ │ │ │ │ ├── copyright.txt │ │ │ │ └── messages.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── file_selector_macos_test.dart │ │ │ ├── file_selector_macos_test.mocks.dart │ │ │ └── messages_test.g.dart │ │ ├── file_selector_platform_interface/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── file_selector_platform_interface.dart │ │ │ │ └── src/ │ │ │ │ ├── method_channel/ │ │ │ │ │ └── method_channel_file_selector.dart │ │ │ │ ├── platform_interface/ │ │ │ │ │ └── file_selector_interface.dart │ │ │ │ ├── types/ │ │ │ │ │ ├── types.dart │ │ │ │ │ └── x_type_group/ │ │ │ │ │ └── x_type_group.dart │ │ │ │ └── web_helpers/ │ │ │ │ └── web_helpers.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── file_selector_platform_interface_test.dart │ │ │ ├── method_channel_file_selector_test.dart │ │ │ └── x_type_group_test.dart │ │ ├── file_selector_web/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ ├── dom_helper_test.dart │ │ │ │ │ └── file_selector_web_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── run_test.sh │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ └── web/ │ │ │ │ └── index.html │ │ │ ├── lib/ │ │ │ │ ├── file_selector_web.dart │ │ │ │ └── src/ │ │ │ │ ├── dom_helper.dart │ │ │ │ └── utils.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── more_tests_exist_elsewhere_test.dart │ │ │ └── utils_test.dart │ │ └── file_selector_windows/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── get_directory_page.dart │ │ │ │ ├── home_page.dart │ │ │ │ ├── main.dart │ │ │ │ ├── open_image_page.dart │ │ │ │ ├── open_multiple_images_page.dart │ │ │ │ ├── open_text_page.dart │ │ │ │ └── save_text_page.dart │ │ │ ├── pubspec.yaml │ │ │ └── windows/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── generated_plugins.cmake │ │ │ └── runner/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Runner.rc │ │ │ ├── flutter_window.cpp │ │ │ ├── flutter_window.h │ │ │ ├── main.cpp │ │ │ ├── resource.h │ │ │ ├── runner.exe.manifest │ │ │ ├── utils.cpp │ │ │ ├── utils.h │ │ │ ├── win32_window.cpp │ │ │ └── win32_window.h │ │ ├── lib/ │ │ │ ├── file_selector_windows.dart │ │ │ └── src/ │ │ │ └── messages.g.dart │ │ ├── pigeons/ │ │ │ ├── copyright.txt │ │ │ └── messages.dart │ │ ├── pubspec.yaml │ │ ├── test/ │ │ │ ├── file_selector_windows_test.dart │ │ │ ├── file_selector_windows_test.mocks.dart │ │ │ └── test_api.g.dart │ │ └── windows/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── file_dialog_controller.cpp │ │ ├── file_dialog_controller.h │ │ ├── file_selector_plugin.cpp │ │ ├── file_selector_plugin.h │ │ ├── file_selector_windows.cpp │ │ ├── include/ │ │ │ └── file_selector_windows/ │ │ │ └── file_selector_windows.h │ │ ├── messages.g.cpp │ │ ├── messages.g.h │ │ ├── string_utils.cpp │ │ ├── string_utils.h │ │ └── test/ │ │ ├── file_selector_plugin_test.cpp │ │ ├── test_file_dialog_controller.cpp │ │ ├── test_file_dialog_controller.h │ │ ├── test_main.cpp │ │ ├── test_utils.cpp │ │ └── test_utils.h │ ├── flutter_plugin_android_lifecycle/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── android/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle │ │ │ ├── proguard.txt │ │ │ ├── settings.gradle │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java/ │ │ │ │ └── io/ │ │ │ │ └── flutter/ │ │ │ │ ├── embedding/ │ │ │ │ │ └── engine/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── lifecycle/ │ │ │ │ │ └── FlutterLifecycleAdapter.java │ │ │ │ └── plugins/ │ │ │ │ └── flutter_plugin_android_lifecycle/ │ │ │ │ └── FlutterAndroidLifecyclePlugin.java │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── io/ │ │ │ └── flutter/ │ │ │ └── embedding/ │ │ │ └── engine/ │ │ │ └── plugins/ │ │ │ └── lifecycle/ │ │ │ └── FlutterLifecycleAdapterTest.java │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── android/ │ │ │ │ ├── .gitignore │ │ │ │ ├── app/ │ │ │ │ │ ├── build.gradle │ │ │ │ │ └── src/ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ └── flutter_plugin_android_lifecycle/ │ │ │ │ │ │ └── MainActivityTest.java │ │ │ │ │ ├── debug/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ ├── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ └── flutter_plugin_android_lifecycle_example/ │ │ │ │ │ │ │ └── MainActivity.java │ │ │ │ │ │ └── res/ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── profile/ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── build.gradle │ │ │ │ ├── gradle/ │ │ │ │ │ └── wrapper/ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── gradle.properties │ │ │ │ └── settings.gradle │ │ │ ├── integration_test/ │ │ │ │ └── flutter_plugin_android_lifecycle_test.dart │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ └── pubspec.yaml │ ├── google_maps_flutter/ │ │ ├── google_maps_flutter/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── googlemapsexample/ │ │ │ │ │ │ │ └── MainActivityTest.java │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ └── googlemapsexample/ │ │ │ │ │ │ │ └── GoogleMapsTestActivity.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ └── res/ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── assets/ │ │ │ │ │ └── night_mode.json │ │ │ │ ├── build.excerpt.yaml │ │ │ │ ├── integration_test/ │ │ │ │ │ └── google_maps_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── lib/ │ │ │ │ │ ├── animate_camera.dart │ │ │ │ │ ├── lite_mode.dart │ │ │ │ │ ├── main.dart │ │ │ │ │ ├── map_click.dart │ │ │ │ │ ├── map_coordinates.dart │ │ │ │ │ ├── map_ui.dart │ │ │ │ │ ├── marker_icons.dart │ │ │ │ │ ├── move_camera.dart │ │ │ │ │ ├── padding.dart │ │ │ │ │ ├── page.dart │ │ │ │ │ ├── place_circle.dart │ │ │ │ │ ├── place_marker.dart │ │ │ │ │ ├── place_polygon.dart │ │ │ │ │ ├── place_polyline.dart │ │ │ │ │ ├── readme_sample.dart │ │ │ │ │ ├── scrolling_map.dart │ │ │ │ │ ├── snapshot.dart │ │ │ │ │ └── tile_overlay.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ ├── google_maps_flutter.dart │ │ │ │ └── src/ │ │ │ │ ├── controller.dart │ │ │ │ └── google_map.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── circle_updates_test.dart │ │ │ ├── fake_maps_controllers.dart │ │ │ ├── google_map_test.dart │ │ │ ├── map_creation_test.dart │ │ │ ├── marker_updates_test.dart │ │ │ ├── polygon_updates_test.dart │ │ │ ├── polyline_updates_test.dart │ │ │ └── tile_overlay_updates_test.dart │ │ ├── google_maps_flutter_android/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── googlemaps/ │ │ │ │ │ ├── CircleBuilder.java │ │ │ │ │ ├── CircleController.java │ │ │ │ │ ├── CircleOptionsSink.java │ │ │ │ │ ├── CirclesController.java │ │ │ │ │ ├── Convert.java │ │ │ │ │ ├── GoogleMapBuilder.java │ │ │ │ │ ├── GoogleMapController.java │ │ │ │ │ ├── GoogleMapFactory.java │ │ │ │ │ ├── GoogleMapInitializer.java │ │ │ │ │ ├── GoogleMapListener.java │ │ │ │ │ ├── GoogleMapOptionsSink.java │ │ │ │ │ ├── GoogleMapsPlugin.java │ │ │ │ │ ├── LifecycleProvider.java │ │ │ │ │ ├── MarkerBuilder.java │ │ │ │ │ ├── MarkerController.java │ │ │ │ │ ├── MarkerOptionsSink.java │ │ │ │ │ ├── MarkersController.java │ │ │ │ │ ├── PolygonBuilder.java │ │ │ │ │ ├── PolygonController.java │ │ │ │ │ ├── PolygonOptionsSink.java │ │ │ │ │ ├── PolygonsController.java │ │ │ │ │ ├── PolylineBuilder.java │ │ │ │ │ ├── PolylineController.java │ │ │ │ │ ├── PolylineOptionsSink.java │ │ │ │ │ ├── PolylinesController.java │ │ │ │ │ ├── TileOverlayBuilder.java │ │ │ │ │ ├── TileOverlayController.java │ │ │ │ │ ├── TileOverlaySink.java │ │ │ │ │ ├── TileOverlaysController.java │ │ │ │ │ └── TileProviderController.java │ │ │ │ └── test/ │ │ │ │ ├── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── googlemaps/ │ │ │ │ │ ├── CircleBuilderTest.java │ │ │ │ │ ├── CircleControllerTest.java │ │ │ │ │ ├── ConvertTest.java │ │ │ │ │ ├── GoogleMapControllerTest.java │ │ │ │ │ ├── GoogleMapInitializerTest.java │ │ │ │ │ ├── MarkersControllerTest.java │ │ │ │ │ ├── PolygonBuilderTest.java │ │ │ │ │ ├── PolygonControllerTest.java │ │ │ │ │ ├── PolylineBuilderTest.java │ │ │ │ │ └── PolylineControllerTest.java │ │ │ │ └── resources/ │ │ │ │ └── mockito-extensions/ │ │ │ │ └── org.mockito.plugins.MockMaker │ │ │ ├── example/ │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── googlemapsexample/ │ │ │ │ │ │ │ ├── GoogleMapsTest.java │ │ │ │ │ │ │ └── MainActivityTest.java │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ └── googlemapsexample/ │ │ │ │ │ │ │ └── GoogleMapsTestActivity.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ └── res/ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── assets/ │ │ │ │ │ └── night_mode.json │ │ │ │ ├── build.excerpt.yaml │ │ │ │ ├── integration_test/ │ │ │ │ │ ├── google_maps_tests.dart │ │ │ │ │ ├── latest_renderer_test.dart │ │ │ │ │ └── legacy_renderer_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ ├── animate_camera.dart │ │ │ │ │ ├── example_google_map.dart │ │ │ │ │ ├── lite_mode.dart │ │ │ │ │ ├── main.dart │ │ │ │ │ ├── map_click.dart │ │ │ │ │ ├── map_coordinates.dart │ │ │ │ │ ├── map_ui.dart │ │ │ │ │ ├── marker_icons.dart │ │ │ │ │ ├── move_camera.dart │ │ │ │ │ ├── padding.dart │ │ │ │ │ ├── page.dart │ │ │ │ │ ├── place_circle.dart │ │ │ │ │ ├── place_marker.dart │ │ │ │ │ ├── place_polygon.dart │ │ │ │ │ ├── place_polyline.dart │ │ │ │ │ ├── readme_excerpts.dart │ │ │ │ │ ├── scrolling_map.dart │ │ │ │ │ ├── snapshot.dart │ │ │ │ │ └── tile_overlay.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ ├── google_maps_flutter_android.dart │ │ │ │ └── src/ │ │ │ │ ├── google_map_inspector_android.dart │ │ │ │ └── google_maps_flutter_android.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── google_maps_flutter_android_test.dart │ │ ├── google_maps_flutter_ios/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── assets/ │ │ │ │ │ └── night_mode.json │ │ │ │ ├── integration_test/ │ │ │ │ │ └── google_maps_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ ├── RunnerTests/ │ │ │ │ │ │ ├── FLTGoogleMapJSONConversionsConversionTests.m │ │ │ │ │ │ ├── GoogleMapsTests.m │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── PartiallyMockedMapView.h │ │ │ │ │ │ └── PartiallyMockedMapView.m │ │ │ │ │ └── RunnerUITests/ │ │ │ │ │ ├── GoogleMapsUITests.m │ │ │ │ │ └── Info.plist │ │ │ │ ├── lib/ │ │ │ │ │ ├── animate_camera.dart │ │ │ │ │ ├── example_google_map.dart │ │ │ │ │ ├── lite_mode.dart │ │ │ │ │ ├── main.dart │ │ │ │ │ ├── map_click.dart │ │ │ │ │ ├── map_coordinates.dart │ │ │ │ │ ├── map_ui.dart │ │ │ │ │ ├── marker_icons.dart │ │ │ │ │ ├── move_camera.dart │ │ │ │ │ ├── padding.dart │ │ │ │ │ ├── page.dart │ │ │ │ │ ├── place_circle.dart │ │ │ │ │ ├── place_marker.dart │ │ │ │ │ ├── place_polygon.dart │ │ │ │ │ ├── place_polyline.dart │ │ │ │ │ ├── scrolling_map.dart │ │ │ │ │ ├── snapshot.dart │ │ │ │ │ └── tile_overlay.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── ios/ │ │ │ │ ├── Assets/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── Classes/ │ │ │ │ │ ├── FLTGoogleMapJSONConversions.h │ │ │ │ │ ├── FLTGoogleMapJSONConversions.m │ │ │ │ │ ├── FLTGoogleMapTileOverlayController.h │ │ │ │ │ ├── FLTGoogleMapTileOverlayController.m │ │ │ │ │ ├── FLTGoogleMapsPlugin.h │ │ │ │ │ ├── FLTGoogleMapsPlugin.m │ │ │ │ │ ├── GoogleMapCircleController.h │ │ │ │ │ ├── GoogleMapCircleController.m │ │ │ │ │ ├── GoogleMapController.h │ │ │ │ │ ├── GoogleMapController.m │ │ │ │ │ ├── GoogleMapController_Test.h │ │ │ │ │ ├── GoogleMapMarkerController.h │ │ │ │ │ ├── GoogleMapMarkerController.m │ │ │ │ │ ├── GoogleMapPolygonController.h │ │ │ │ │ ├── GoogleMapPolygonController.m │ │ │ │ │ ├── GoogleMapPolylineController.h │ │ │ │ │ ├── GoogleMapPolylineController.m │ │ │ │ │ ├── google_maps_flutter_ios-umbrella.h │ │ │ │ │ └── google_maps_flutter_ios.modulemap │ │ │ │ └── google_maps_flutter_ios.podspec │ │ │ ├── lib/ │ │ │ │ ├── google_maps_flutter_ios.dart │ │ │ │ └── src/ │ │ │ │ ├── google_map_inspector_ios.dart │ │ │ │ └── google_maps_flutter_ios.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── google_maps_flutter_ios_test.dart │ │ ├── google_maps_flutter_platform_interface/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── google_maps_flutter_platform_interface.dart │ │ │ │ └── src/ │ │ │ │ ├── events/ │ │ │ │ │ └── map_event.dart │ │ │ │ ├── method_channel/ │ │ │ │ │ └── method_channel_google_maps_flutter.dart │ │ │ │ ├── platform_interface/ │ │ │ │ │ ├── google_maps_flutter_platform.dart │ │ │ │ │ └── google_maps_inspector_platform.dart │ │ │ │ └── types/ │ │ │ │ ├── bitmap.dart │ │ │ │ ├── callbacks.dart │ │ │ │ ├── camera.dart │ │ │ │ ├── cap.dart │ │ │ │ ├── circle.dart │ │ │ │ ├── circle_updates.dart │ │ │ │ ├── joint_type.dart │ │ │ │ ├── location.dart │ │ │ │ ├── map_configuration.dart │ │ │ │ ├── map_objects.dart │ │ │ │ ├── map_widget_configuration.dart │ │ │ │ ├── maps_object.dart │ │ │ │ ├── maps_object_updates.dart │ │ │ │ ├── marker.dart │ │ │ │ ├── marker_updates.dart │ │ │ │ ├── pattern_item.dart │ │ │ │ ├── polygon.dart │ │ │ │ ├── polygon_updates.dart │ │ │ │ ├── polyline.dart │ │ │ │ ├── polyline_updates.dart │ │ │ │ ├── screen_coordinate.dart │ │ │ │ ├── tile.dart │ │ │ │ ├── tile_overlay.dart │ │ │ │ ├── tile_overlay_updates.dart │ │ │ │ ├── tile_provider.dart │ │ │ │ ├── types.dart │ │ │ │ ├── ui.dart │ │ │ │ └── utils/ │ │ │ │ ├── circle.dart │ │ │ │ ├── map_configuration_serialization.dart │ │ │ │ ├── maps_object.dart │ │ │ │ ├── marker.dart │ │ │ │ ├── polygon.dart │ │ │ │ ├── polyline.dart │ │ │ │ └── tile_overlay.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── method_channel/ │ │ │ │ └── method_channel_google_maps_flutter_test.dart │ │ │ ├── platform_interface/ │ │ │ │ ├── google_maps_flutter_platform_test.dart │ │ │ │ └── google_maps_inspector_platform_test.dart │ │ │ ├── types/ │ │ │ │ ├── bitmap_test.dart │ │ │ │ ├── camera_test.dart │ │ │ │ ├── location_test.dart │ │ │ │ ├── map_configuration_test.dart │ │ │ │ ├── maps_object_test.dart │ │ │ │ ├── maps_object_updates_test.dart │ │ │ │ ├── marker_test.dart │ │ │ │ ├── test_maps_object.dart │ │ │ │ ├── tile_overlay_test.dart │ │ │ │ ├── tile_overlay_updates_test.dart │ │ │ │ └── tile_test.dart │ │ │ └── utils/ │ │ │ └── map_configuration_serialization_test.dart │ │ └── google_maps_flutter_web/ │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── build.yaml │ │ │ ├── integration_test/ │ │ │ │ ├── google_maps_controller_test.dart │ │ │ │ ├── google_maps_controller_test.mocks.dart │ │ │ │ ├── google_maps_plugin_test.dart │ │ │ │ ├── google_maps_plugin_test.mocks.dart │ │ │ │ ├── marker_test.dart │ │ │ │ ├── markers_test.dart │ │ │ │ ├── projection_test.dart │ │ │ │ ├── resources/ │ │ │ │ │ └── icon_image_base64.dart │ │ │ │ ├── shape_test.dart │ │ │ │ └── shapes_test.dart │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ ├── regen_mocks.sh │ │ │ ├── run_test.sh │ │ │ ├── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ └── web/ │ │ │ └── index.html │ │ ├── lib/ │ │ │ ├── google_maps_flutter_web.dart │ │ │ └── src/ │ │ │ ├── circle.dart │ │ │ ├── circles.dart │ │ │ ├── convert.dart │ │ │ ├── google_maps_controller.dart │ │ │ ├── google_maps_flutter_web.dart │ │ │ ├── marker.dart │ │ │ ├── markers.dart │ │ │ ├── polygon.dart │ │ │ ├── polygons.dart │ │ │ ├── polyline.dart │ │ │ ├── polylines.dart │ │ │ ├── shims/ │ │ │ │ ├── dart_ui.dart │ │ │ │ ├── dart_ui_fake.dart │ │ │ │ └── dart_ui_real.dart │ │ │ ├── third_party/ │ │ │ │ └── to_screen_location/ │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ └── to_screen_location.dart │ │ │ └── types.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── README.md │ │ └── tests_exist_elsewhere_test.dart │ ├── google_sign_in/ │ │ ├── google_sign_in/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── google-services.json │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── googlesigninexample/ │ │ │ │ │ │ │ └── FlutterActivityTest.java │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ ├── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ └── googlesigninexample/ │ │ │ │ │ │ │ └── GoogleSignInTestActivity.java │ │ │ │ │ │ └── res/ │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── strings.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── google_sign_in_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── GoogleSignInPluginTest/ │ │ │ │ │ │ └── Info.plist │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── GoogleService-Info.plist │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ └── web/ │ │ │ │ └── index.html │ │ │ ├── lib/ │ │ │ │ ├── google_sign_in.dart │ │ │ │ ├── src/ │ │ │ │ │ ├── common.dart │ │ │ │ │ └── fife.dart │ │ │ │ ├── testing.dart │ │ │ │ └── widgets.dart │ │ │ ├── pubspec.yaml │ │ │ ├── resources/ │ │ │ │ └── README.md │ │ │ └── test/ │ │ │ ├── fife_test.dart │ │ │ ├── google_sign_in_test.dart │ │ │ ├── google_sign_in_test.mocks.dart │ │ │ └── widgets_test.dart │ │ ├── google_sign_in_android/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── googlesignin/ │ │ │ │ │ ├── BackgroundTaskRunner.java │ │ │ │ │ ├── Executors.java │ │ │ │ │ ├── GoogleSignInPlugin.java │ │ │ │ │ └── GoogleSignInWrapper.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── io/ │ │ │ │ └── flutter/ │ │ │ │ └── plugins/ │ │ │ │ └── googlesignin/ │ │ │ │ └── GoogleSignInTest.java │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── google-services.json │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── googlesigninexample/ │ │ │ │ │ │ │ ├── FlutterActivityTest.java │ │ │ │ │ │ │ └── GoogleSignInTest.java │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ ├── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ └── googlesigninexample/ │ │ │ │ │ │ │ └── GoogleSignInTestActivity.java │ │ │ │ │ │ └── res/ │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── strings.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── google_sign_in_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ ├── google_sign_in_android.dart │ │ │ │ └── src/ │ │ │ │ └── utils.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── google_sign_in_android_test.dart │ │ ├── google_sign_in_ios/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ └── google_sign_in_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── GoogleSignInPluginTest/ │ │ │ │ │ │ └── Info.plist │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── GoogleService-Info.plist │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ ├── RunnerTests/ │ │ │ │ │ │ ├── GoogleSignInTests.m │ │ │ │ │ │ └── Info.plist │ │ │ │ │ └── RunnerUITests/ │ │ │ │ │ ├── GoogleSignInUITests.m │ │ │ │ │ └── Info.plist │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── ios/ │ │ │ │ ├── Assets/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── Classes/ │ │ │ │ │ ├── FLTGoogleSignInPlugin.h │ │ │ │ │ ├── FLTGoogleSignInPlugin.m │ │ │ │ │ ├── FLTGoogleSignInPlugin.modulemap │ │ │ │ │ ├── FLTGoogleSignInPlugin_Test.h │ │ │ │ │ └── google_sign_in_ios-umbrella.h │ │ │ │ └── google_sign_in_ios.podspec │ │ │ ├── lib/ │ │ │ │ ├── google_sign_in_ios.dart │ │ │ │ └── src/ │ │ │ │ └── utils.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── google_sign_in_ios_test.dart │ │ ├── google_sign_in_platform_interface/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── google_sign_in_platform_interface.dart │ │ │ │ └── src/ │ │ │ │ ├── method_channel_google_sign_in.dart │ │ │ │ ├── types.dart │ │ │ │ └── utils.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── google_sign_in_platform_interface_test.dart │ │ │ └── method_channel_google_sign_in_test.dart │ │ └── google_sign_in_web/ │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── build.yaml │ │ │ ├── integration_test/ │ │ │ │ ├── google_sign_in_web_test.dart │ │ │ │ ├── google_sign_in_web_test.mocks.dart │ │ │ │ ├── people_test.dart │ │ │ │ ├── src/ │ │ │ │ │ ├── dom.dart │ │ │ │ │ ├── jsify_as.dart │ │ │ │ │ ├── jwt_examples.dart │ │ │ │ │ └── person.dart │ │ │ │ └── utils_test.dart │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ ├── regen_mocks.sh │ │ │ ├── run_test.sh │ │ │ ├── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ └── web/ │ │ │ └── index.html │ │ ├── lib/ │ │ │ ├── google_sign_in_web.dart │ │ │ └── src/ │ │ │ ├── gis_client.dart │ │ │ ├── people.dart │ │ │ └── utils.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── README.md │ │ └── tests_exist_elsewhere_test.dart │ ├── image_picker/ │ │ ├── image_picker/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── imagepickerexample/ │ │ │ │ │ │ │ └── FlutterActivityTest.java │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ └── java/ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ └── imagepickerexample/ │ │ │ │ │ │ └── ImagePickerTestActivity.java │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── image_picker_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ ├── Runner.xcscheme │ │ │ │ │ │ └── RunnerUITests.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ └── image_picker_exampleTests/ │ │ │ │ │ └── Info.plist │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ └── web/ │ │ │ │ ├── index.html │ │ │ │ └── manifest.json │ │ │ ├── lib/ │ │ │ │ └── image_picker.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── image_picker_deprecated_test.dart │ │ │ ├── image_picker_test.dart │ │ │ └── image_picker_test.mocks.dart │ │ ├── image_picker_android/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ └── imagepicker/ │ │ │ │ │ │ ├── ExifDataCopier.java │ │ │ │ │ │ ├── FileUtils.java │ │ │ │ │ │ ├── ImagePickerCache.java │ │ │ │ │ │ ├── ImagePickerDelegate.java │ │ │ │ │ │ ├── ImagePickerFileProvider.java │ │ │ │ │ │ ├── ImagePickerPlugin.java │ │ │ │ │ │ ├── ImagePickerUtils.java │ │ │ │ │ │ └── ImageResizer.java │ │ │ │ │ └── res/ │ │ │ │ │ └── xml/ │ │ │ │ │ └── flutter_image_picker_file_paths.xml │ │ │ │ └── test/ │ │ │ │ ├── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── imagepicker/ │ │ │ │ │ ├── FileUtilTest.java │ │ │ │ │ ├── ImagePickerCacheTest.java │ │ │ │ │ ├── ImagePickerDelegateTest.java │ │ │ │ │ ├── ImagePickerPluginTest.java │ │ │ │ │ └── ImageResizerTest.java │ │ │ │ └── resources/ │ │ │ │ └── mockito-extensions/ │ │ │ │ └── org.mockito.plugins.MockMaker │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── imagepickerexample/ │ │ │ │ │ │ │ ├── FlutterActivityTest.java │ │ │ │ │ │ │ ├── ImagePickerPickTest.java │ │ │ │ │ │ │ └── ImagePickerTest.java │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ └── java/ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ └── imagepickerexample/ │ │ │ │ │ │ ├── DriverExtensionActivity.java │ │ │ │ │ │ ├── DummyContentProvider.java │ │ │ │ │ │ └── ImagePickerTestActivity.java │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── image_picker_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ └── image_picker_android.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── image_picker_android_test.dart │ │ ├── image_picker_for_web/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ ├── image_picker_for_web_test.dart │ │ │ │ │ └── image_resizer_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── run_test.sh │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ └── web/ │ │ │ │ └── index.html │ │ │ ├── lib/ │ │ │ │ ├── image_picker_for_web.dart │ │ │ │ └── src/ │ │ │ │ ├── image_resizer.dart │ │ │ │ └── image_resizer_utils.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── README.md │ │ │ ├── image_resizer_utils_test.dart │ │ │ └── tests_exist_elsewhere_test.dart │ │ ├── image_picker_ios/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ └── image_picker_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ ├── Runner.xcscheme │ │ │ │ │ │ └── RunnerUITests.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ ├── RunnerTests/ │ │ │ │ │ │ ├── ImagePickerPluginTests.m │ │ │ │ │ │ ├── ImagePickerTestImages.h │ │ │ │ │ │ ├── ImagePickerTestImages.m │ │ │ │ │ │ ├── ImageUtilTests.m │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── MetaDataUtilTests.m │ │ │ │ │ │ ├── PhotoAssetUtilTests.m │ │ │ │ │ │ └── PickerSaveImageToPathOperationTests.m │ │ │ │ │ ├── RunnerUITests/ │ │ │ │ │ │ ├── ImagePickerFromGalleryUITests.m │ │ │ │ │ │ ├── ImagePickerFromLimitedGalleryUITests.m │ │ │ │ │ │ └── Info.plist │ │ │ │ │ ├── TestImages/ │ │ │ │ │ │ ├── heicImage.heic │ │ │ │ │ │ ├── icnsImage.icns │ │ │ │ │ │ ├── proRawImage.dng │ │ │ │ │ │ └── tiffImage.tiff │ │ │ │ │ └── image_picker_exampleTests/ │ │ │ │ │ └── Info.plist │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── ios/ │ │ │ │ ├── Assets/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── Classes/ │ │ │ │ │ ├── FLTImagePickerImageUtil.h │ │ │ │ │ ├── FLTImagePickerImageUtil.m │ │ │ │ │ ├── FLTImagePickerMetaDataUtil.h │ │ │ │ │ ├── FLTImagePickerMetaDataUtil.m │ │ │ │ │ ├── FLTImagePickerPhotoAssetUtil.h │ │ │ │ │ ├── FLTImagePickerPhotoAssetUtil.m │ │ │ │ │ ├── FLTImagePickerPlugin.h │ │ │ │ │ ├── FLTImagePickerPlugin.m │ │ │ │ │ ├── FLTImagePickerPlugin_Test.h │ │ │ │ │ ├── FLTPHPickerSaveImageToPathOperation.h │ │ │ │ │ ├── FLTPHPickerSaveImageToPathOperation.m │ │ │ │ │ ├── ImagePickerPlugin.modulemap │ │ │ │ │ ├── image_picker_ios-umbrella.h │ │ │ │ │ ├── messages.g.h │ │ │ │ │ └── messages.g.m │ │ │ │ └── image_picker_ios.podspec │ │ │ ├── lib/ │ │ │ │ ├── image_picker_ios.dart │ │ │ │ └── src/ │ │ │ │ └── messages.g.dart │ │ │ ├── pigeons/ │ │ │ │ ├── copyright.txt │ │ │ │ └── messages.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── image_picker_ios_test.dart │ │ │ └── test_api.g.dart │ │ ├── image_picker_platform_interface/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── image_picker_platform_interface.dart │ │ │ │ └── src/ │ │ │ │ ├── method_channel/ │ │ │ │ │ └── method_channel_image_picker.dart │ │ │ │ ├── platform_interface/ │ │ │ │ │ └── image_picker_platform.dart │ │ │ │ └── types/ │ │ │ │ ├── camera_device.dart │ │ │ │ ├── image_options.dart │ │ │ │ ├── image_picker_options.dart │ │ │ │ ├── image_source.dart │ │ │ │ ├── lost_data_response.dart │ │ │ │ ├── multi_image_picker_options.dart │ │ │ │ ├── picked_file/ │ │ │ │ │ ├── base.dart │ │ │ │ │ ├── html.dart │ │ │ │ │ ├── io.dart │ │ │ │ │ ├── lost_data.dart │ │ │ │ │ ├── picked_file.dart │ │ │ │ │ └── unsupported.dart │ │ │ │ ├── retrieve_type.dart │ │ │ │ └── types.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── assets/ │ │ │ │ └── hello.txt │ │ │ ├── new_method_channel_image_picker_test.dart │ │ │ ├── picked_file_html_test.dart │ │ │ └── picked_file_io_test.dart │ │ └── image_picker_windows/ │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ └── windows/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── generated_plugins.cmake │ │ │ └── runner/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Runner.rc │ │ │ ├── flutter_window.cpp │ │ │ ├── flutter_window.h │ │ │ ├── main.cpp │ │ │ ├── resource.h │ │ │ ├── runner.exe.manifest │ │ │ ├── utils.cpp │ │ │ ├── utils.h │ │ │ ├── win32_window.cpp │ │ │ └── win32_window.h │ │ ├── lib/ │ │ │ └── image_picker_windows.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── image_picker_windows_test.dart │ │ └── image_picker_windows_test.mocks.dart │ ├── in_app_purchase/ │ │ ├── in_app_purchase/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── inapppurchaseexample/ │ │ │ │ │ │ │ └── FlutterActivityTest.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ └── res/ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ ├── keystore.example.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── in_app_purchase_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Configuration.storekit │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── lib/ │ │ │ │ │ ├── consumable_store.dart │ │ │ │ │ └── main.dart │ │ │ │ ├── macos/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ └── in_app_purchase.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── in_app_purchase_test.dart │ │ ├── in_app_purchase_android/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── inapppurchase/ │ │ │ │ │ ├── BillingClientFactory.java │ │ │ │ │ ├── BillingClientFactoryImpl.java │ │ │ │ │ ├── InAppPurchasePlugin.java │ │ │ │ │ ├── MethodCallHandlerImpl.java │ │ │ │ │ ├── PluginPurchaseListener.java │ │ │ │ │ └── Translator.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ ├── android/ │ │ │ │ │ ├── text/ │ │ │ │ │ │ └── TextUtils.java │ │ │ │ │ └── util/ │ │ │ │ │ └── Log.java │ │ │ │ └── io/ │ │ │ │ └── flutter/ │ │ │ │ └── plugins/ │ │ │ │ └── inapppurchase/ │ │ │ │ ├── InAppPurchasePluginTest.java │ │ │ │ ├── MethodCallHandlerTest.java │ │ │ │ └── TranslatorTest.java │ │ │ ├── build.yaml │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── inapppurchaseexample/ │ │ │ │ │ │ │ └── FlutterActivityTest.java │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ └── res/ │ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ └── values/ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ └── test/ │ │ │ │ │ │ └── resources/ │ │ │ │ │ │ └── mockito-extensions/ │ │ │ │ │ │ └── org.mockito.plugins.MockMaker │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ ├── keystore.example.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── in_app_purchase_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ ├── consumable_store.dart │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── test/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ ├── billing_client_wrappers.dart │ │ │ │ ├── in_app_purchase_android.dart │ │ │ │ └── src/ │ │ │ │ ├── billing_client_wrappers/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── billing_client_wrapper.dart │ │ │ │ │ ├── billing_client_wrapper.g.dart │ │ │ │ │ ├── purchase_wrapper.dart │ │ │ │ │ ├── purchase_wrapper.g.dart │ │ │ │ │ ├── sku_details_wrapper.dart │ │ │ │ │ └── sku_details_wrapper.g.dart │ │ │ │ ├── channel.dart │ │ │ │ ├── in_app_purchase_android_platform.dart │ │ │ │ ├── in_app_purchase_android_platform_addition.dart │ │ │ │ └── types/ │ │ │ │ ├── change_subscription_param.dart │ │ │ │ ├── google_play_product_details.dart │ │ │ │ ├── google_play_purchase_details.dart │ │ │ │ ├── google_play_purchase_param.dart │ │ │ │ ├── query_purchase_details_response.dart │ │ │ │ └── types.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── billing_client_wrappers/ │ │ │ │ ├── billing_client_wrapper_test.dart │ │ │ │ ├── purchase_wrapper_test.dart │ │ │ │ ├── sku_details_wrapper_deprecated_test.dart │ │ │ │ └── sku_details_wrapper_test.dart │ │ │ ├── in_app_purchase_android_platform_addition_test.dart │ │ │ ├── in_app_purchase_android_platform_test.dart │ │ │ └── stub_in_app_purchase_platform.dart │ │ ├── in_app_purchase_platform_interface/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── in_app_purchase_platform_interface.dart │ │ │ │ └── src/ │ │ │ │ ├── errors/ │ │ │ │ │ ├── errors.dart │ │ │ │ │ ├── in_app_purchase_error.dart │ │ │ │ │ └── in_app_purchase_exception.dart │ │ │ │ ├── in_app_purchase_platform.dart │ │ │ │ ├── in_app_purchase_platform_addition.dart │ │ │ │ ├── in_app_purchase_platform_addition_provider.dart │ │ │ │ └── types/ │ │ │ │ ├── product_details.dart │ │ │ │ ├── product_details_response.dart │ │ │ │ ├── purchase_details.dart │ │ │ │ ├── purchase_param.dart │ │ │ │ ├── purchase_status.dart │ │ │ │ ├── purchase_verification_data.dart │ │ │ │ └── types.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── in_app_purchase_platform_test.dart │ │ │ └── src/ │ │ │ ├── errors/ │ │ │ │ ├── in_app_purchase_error_test.dart │ │ │ │ └── in_app_purchase_exception_test.dart │ │ │ └── types/ │ │ │ └── product_details_test.dart │ │ └── in_app_purchase_storekit/ │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── build.yaml │ │ ├── darwin/ │ │ │ ├── Classes/ │ │ │ │ ├── FIAObjectTranslator.h │ │ │ │ ├── FIAObjectTranslator.m │ │ │ │ ├── FIAPPaymentQueueDelegate.h │ │ │ │ ├── FIAPPaymentQueueDelegate.m │ │ │ │ ├── FIAPReceiptManager.h │ │ │ │ ├── FIAPReceiptManager.m │ │ │ │ ├── FIAPRequestHandler.h │ │ │ │ ├── FIAPRequestHandler.m │ │ │ │ ├── FIAPaymentQueueHandler.h │ │ │ │ ├── FIAPaymentQueueHandler.m │ │ │ │ ├── FIATransactionCache.h │ │ │ │ ├── FIATransactionCache.m │ │ │ │ ├── InAppPurchasePlugin.h │ │ │ │ └── InAppPurchasePlugin.m │ │ │ └── in_app_purchase_storekit.podspec │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── integration_test/ │ │ │ │ └── in_app_purchase_test.dart │ │ │ ├── ios/ │ │ │ │ ├── Flutter/ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ └── Release.xcconfig │ │ │ │ ├── Podfile │ │ │ │ ├── Runner/ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ └── README.md │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ ├── Configuration.storekit │ │ │ │ │ ├── Info.plist │ │ │ │ │ └── main.m │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata/ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ ├── lib/ │ │ │ │ ├── consumable_store.dart │ │ │ │ ├── example_payment_queue_delegate.dart │ │ │ │ └── main.dart │ │ │ ├── macos/ │ │ │ │ ├── Flutter/ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ ├── Podfile │ │ │ │ ├── Runner/ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ ├── Info.plist │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ └── Release.entitlements │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata/ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ ├── pubspec.yaml │ │ │ ├── shared/ │ │ │ │ └── RunnerTests/ │ │ │ │ ├── FIAPPaymentQueueDeleteTests.m │ │ │ │ ├── FIATransactionCacheTests.m │ │ │ │ ├── InAppPurchasePluginTests.m │ │ │ │ ├── Info.plist │ │ │ │ ├── PaymentQueueTests.m │ │ │ │ ├── ProductRequestHandlerTests.m │ │ │ │ ├── Stubs.h │ │ │ │ ├── Stubs.m │ │ │ │ └── TranslatorTests.m │ │ │ └── test_driver/ │ │ │ └── integration_test.dart │ │ ├── lib/ │ │ │ ├── in_app_purchase_storekit.dart │ │ │ ├── src/ │ │ │ │ ├── channel.dart │ │ │ │ ├── in_app_purchase_storekit_platform.dart │ │ │ │ ├── in_app_purchase_storekit_platform_addition.dart │ │ │ │ ├── store_kit_wrappers/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── enum_converters.dart │ │ │ │ │ ├── enum_converters.g.dart │ │ │ │ │ ├── sk_payment_queue_delegate_wrapper.dart │ │ │ │ │ ├── sk_payment_queue_wrapper.dart │ │ │ │ │ ├── sk_payment_queue_wrapper.g.dart │ │ │ │ │ ├── sk_payment_transaction_wrappers.dart │ │ │ │ │ ├── sk_payment_transaction_wrappers.g.dart │ │ │ │ │ ├── sk_product_wrapper.dart │ │ │ │ │ ├── sk_product_wrapper.g.dart │ │ │ │ │ ├── sk_receipt_manager.dart │ │ │ │ │ ├── sk_request_maker.dart │ │ │ │ │ ├── sk_storefront_wrapper.dart │ │ │ │ │ └── sk_storefront_wrapper.g.dart │ │ │ │ └── types/ │ │ │ │ ├── app_store_product_details.dart │ │ │ │ ├── app_store_purchase_details.dart │ │ │ │ ├── app_store_purchase_param.dart │ │ │ │ └── types.dart │ │ │ └── store_kit_wrappers.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── fakes/ │ │ │ └── fake_storekit_platform.dart │ │ ├── in_app_purchase_storekit_platform_addtion_test.dart │ │ ├── in_app_purchase_storekit_platform_test.dart │ │ └── store_kit_wrappers/ │ │ ├── sk_methodchannel_apis_test.dart │ │ ├── sk_payment_queue_delegate_api_test.dart │ │ ├── sk_product_test.dart │ │ └── sk_test_stub_objects.dart │ ├── integration_test/ │ │ ├── .gitignore │ │ ├── .metadata │ │ └── README.md │ ├── ios_platform_images/ │ │ ├── .gitignore │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── ios/ │ │ │ │ ├── .gitignore │ │ │ │ ├── Flutter/ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ └── Release.xcconfig │ │ │ │ ├── Podfile │ │ │ │ ├── Runner/ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ ├── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ └── flutter.imageset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ ├── Info.plist │ │ │ │ │ ├── Runner-Bridging-Header.h │ │ │ │ │ └── textfile │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── RunnerTests/ │ │ │ │ ├── Info.plist │ │ │ │ └── IosPlatformImagesTests.m │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── widget_test.dart │ │ ├── ios/ │ │ │ ├── .gitignore │ │ │ ├── Assets/ │ │ │ │ └── .gitkeep │ │ │ ├── Classes/ │ │ │ │ ├── IosPlatformImagesPlugin.h │ │ │ │ ├── IosPlatformImagesPlugin.m │ │ │ │ ├── UIImage+ios_platform_images.h │ │ │ │ └── UIImage+ios_platform_images.m │ │ │ └── ios_platform_images.podspec │ │ ├── lib/ │ │ │ └── ios_platform_images.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── ios_platform_images_test.dart │ ├── local_auth/ │ │ ├── local_auth/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── localauth/ │ │ │ │ │ │ │ └── FlutterFragmentActivityTest.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ ├── settings.gradle │ │ │ │ │ └── settings_aar.gradle │ │ │ │ ├── build.excerpt.yaml │ │ │ │ ├── integration_test/ │ │ │ │ │ └── local_auth_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── lib/ │ │ │ │ │ ├── main.dart │ │ │ │ │ └── readme_excerpts.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ └── windows/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── flutter/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ └── runner/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Runner.rc │ │ │ │ ├── flutter_window.cpp │ │ │ │ ├── flutter_window.h │ │ │ │ ├── main.cpp │ │ │ │ ├── resource.h │ │ │ │ ├── runner.exe.manifest │ │ │ │ ├── utils.cpp │ │ │ │ ├── utils.h │ │ │ │ ├── win32_window.cpp │ │ │ │ └── win32_window.h │ │ │ ├── lib/ │ │ │ │ ├── error_codes.dart │ │ │ │ ├── local_auth.dart │ │ │ │ └── src/ │ │ │ │ └── local_auth.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── local_auth_test.dart │ │ ├── local_auth_android/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── lint-baseline.xml │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ └── localauth/ │ │ │ │ │ │ ├── AuthenticationHelper.java │ │ │ │ │ │ └── LocalAuthPlugin.java │ │ │ │ │ └── res/ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ ├── fingerprint_initial_icon.xml │ │ │ │ │ │ ├── fingerprint_success_icon.xml │ │ │ │ │ │ ├── fingerprint_warning_icon.xml │ │ │ │ │ │ ├── ic_done_white_24dp.xml │ │ │ │ │ │ ├── ic_fingerprint_white_24dp.xml │ │ │ │ │ │ └── ic_priority_high_white_24dp.xml │ │ │ │ │ ├── layout/ │ │ │ │ │ │ ├── go_to_setting.xml │ │ │ │ │ │ └── scan_fp.xml │ │ │ │ │ └── values/ │ │ │ │ │ ├── colors.xml │ │ │ │ │ ├── dimens.xml │ │ │ │ │ └── styles.xml │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── io/ │ │ │ │ └── flutter/ │ │ │ │ └── plugins/ │ │ │ │ └── localauth/ │ │ │ │ └── LocalAuthTest.java │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── localauth/ │ │ │ │ │ │ │ └── FlutterFragmentActivityTest.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ ├── settings.gradle │ │ │ │ │ └── settings_aar.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── local_auth_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ ├── local_auth_android.dart │ │ │ │ └── types/ │ │ │ │ └── auth_messages_android.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── local_auth_test.dart │ │ ├── local_auth_ios/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ └── local_auth_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ └── RunnerTests/ │ │ │ │ │ ├── FLTLocalAuthPluginTests.m │ │ │ │ │ └── Info.plist │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── ios/ │ │ │ │ ├── Assets/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── Classes/ │ │ │ │ │ ├── FLTLocalAuthPlugin.h │ │ │ │ │ └── FLTLocalAuthPlugin.m │ │ │ │ └── local_auth_ios.podspec │ │ │ ├── lib/ │ │ │ │ ├── local_auth_ios.dart │ │ │ │ └── types/ │ │ │ │ └── auth_messages_ios.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── local_auth_test.dart │ │ ├── local_auth_platform_interface/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── default_method_channel_platform.dart │ │ │ │ ├── local_auth_platform_interface.dart │ │ │ │ └── types/ │ │ │ │ ├── auth_messages.dart │ │ │ │ ├── auth_options.dart │ │ │ │ ├── biometric_type.dart │ │ │ │ └── types.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── default_method_channel_platform_test.dart │ │ └── local_auth_windows/ │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── README.md │ │ │ ├── integration_test/ │ │ │ │ └── local_auth_test.dart │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ ├── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ └── windows/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── generated_plugins.cmake │ │ │ └── runner/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Runner.rc │ │ │ ├── flutter_window.cpp │ │ │ ├── flutter_window.h │ │ │ ├── main.cpp │ │ │ ├── resource.h │ │ │ ├── runner.exe.manifest │ │ │ ├── utils.cpp │ │ │ ├── utils.h │ │ │ ├── win32_window.cpp │ │ │ └── win32_window.h │ │ ├── lib/ │ │ │ ├── local_auth_windows.dart │ │ │ ├── src/ │ │ │ │ └── messages.g.dart │ │ │ └── types/ │ │ │ └── auth_messages_windows.dart │ │ ├── pigeons/ │ │ │ ├── copyright.txt │ │ │ └── messages.dart │ │ ├── pubspec.yaml │ │ ├── test/ │ │ │ └── local_auth_test.dart │ │ └── windows/ │ │ ├── CMakeLists.txt │ │ ├── include/ │ │ │ └── local_auth_windows/ │ │ │ └── local_auth_plugin.h │ │ ├── local_auth.h │ │ ├── local_auth_plugin.cpp │ │ ├── local_auth_windows.cpp │ │ ├── messages.g.cpp │ │ ├── messages.g.h │ │ └── test/ │ │ ├── local_auth_plugin_test.cpp │ │ └── mocks.h │ ├── path_provider/ │ │ ├── path_provider/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── pathprovider/ │ │ │ │ │ │ │ └── MainActivityTest.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── path_provider_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ └── RunnerTests/ │ │ │ │ │ ├── Info.plist │ │ │ │ │ └── PathProviderTests.m │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── linux/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ │ ├── main.cc │ │ │ │ │ ├── my_application.cc │ │ │ │ │ └── my_application.h │ │ │ │ ├── macos/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ └── windows/ │ │ │ │ ├── .gitignore │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── flutter/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ └── runner/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Runner.rc │ │ │ │ ├── flutter_window.cpp │ │ │ │ ├── flutter_window.h │ │ │ │ ├── main.cpp │ │ │ │ ├── resource.h │ │ │ │ ├── run_loop.cpp │ │ │ │ ├── run_loop.h │ │ │ │ ├── runner.exe.manifest │ │ │ │ ├── utils.cpp │ │ │ │ ├── utils.h │ │ │ │ ├── win32_window.cpp │ │ │ │ └── win32_window.h │ │ │ ├── lib/ │ │ │ │ └── path_provider.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── path_provider_test.dart │ │ ├── path_provider_android/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── pathprovider/ │ │ │ │ │ ├── Messages.java │ │ │ │ │ ├── PathProviderPlugin.java │ │ │ │ │ └── StorageDirectoryMapper.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── io/ │ │ │ │ └── flutter/ │ │ │ │ └── plugins/ │ │ │ │ └── pathprovider/ │ │ │ │ └── StorageDirectoryMapperTest.java │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── pathprovider/ │ │ │ │ │ │ │ └── MainActivityTest.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── path_provider_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ ├── messages.g.dart │ │ │ │ └── path_provider_android.dart │ │ │ ├── pigeons/ │ │ │ │ ├── copyright.txt │ │ │ │ └── messages.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── messages_test.g.dart │ │ │ └── path_provider_android_test.dart │ │ ├── path_provider_foundation/ │ │ │ ├── .gitignore │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── darwin/ │ │ │ │ ├── Classes/ │ │ │ │ │ ├── PathProviderPlugin.swift │ │ │ │ │ └── messages.g.swift │ │ │ │ ├── RunnerTests/ │ │ │ │ │ └── RunnerTests.swift │ │ │ │ └── path_provider_foundation.podspec │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ └── path_provider_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── Runner-Bridging-Header.h │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── macos/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ └── RunnerTests/ │ │ │ │ │ └── Info.plist │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── ios/ │ │ │ │ └── README.md │ │ │ ├── lib/ │ │ │ │ ├── messages.g.dart │ │ │ │ └── path_provider_foundation.dart │ │ │ ├── macos/ │ │ │ │ └── README.md │ │ │ ├── pigeons/ │ │ │ │ ├── copyright.txt │ │ │ │ └── messages.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── messages_test.g.dart │ │ │ ├── path_provider_foundation_test.dart │ │ │ └── path_provider_foundation_test.mocks.dart │ │ ├── path_provider_linux/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ └── path_provider_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── linux/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ │ ├── main.cc │ │ │ │ │ ├── my_application.cc │ │ │ │ │ └── my_application.h │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ ├── path_provider_linux.dart │ │ │ │ └── src/ │ │ │ │ ├── get_application_id.dart │ │ │ │ ├── get_application_id_real.dart │ │ │ │ ├── get_application_id_stub.dart │ │ │ │ └── path_provider_linux.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── get_application_id_test.dart │ │ │ └── path_provider_linux_test.dart │ │ ├── path_provider_platform_interface/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── path_provider_platform_interface.dart │ │ │ │ └── src/ │ │ │ │ ├── enums.dart │ │ │ │ └── method_channel_path_provider.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── method_channel_path_provider_test.dart │ │ └── path_provider_windows/ │ │ ├── .gitignore │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── README.md │ │ │ ├── integration_test/ │ │ │ │ └── path_provider_test.dart │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ ├── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ └── windows/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── generated_plugins.cmake │ │ │ └── runner/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Runner.rc │ │ │ ├── flutter_window.cpp │ │ │ ├── flutter_window.h │ │ │ ├── main.cpp │ │ │ ├── resource.h │ │ │ ├── run_loop.cpp │ │ │ ├── run_loop.h │ │ │ ├── runner.exe.manifest │ │ │ ├── utils.cpp │ │ │ ├── utils.h │ │ │ ├── win32_window.cpp │ │ │ └── win32_window.h │ │ ├── lib/ │ │ │ ├── path_provider_windows.dart │ │ │ └── src/ │ │ │ ├── folders.dart │ │ │ ├── folders_stub.dart │ │ │ ├── path_provider_windows_real.dart │ │ │ └── path_provider_windows_stub.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── path_provider_windows_test.dart │ ├── plugin_platform_interface/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── lib/ │ │ │ └── plugin_platform_interface.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── plugin_platform_interface_test.dart │ ├── quick_actions/ │ │ ├── quick_actions/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── quickactionsexample/ │ │ │ │ │ │ │ └── FlutterActivityTest.java │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ ├── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ └── quickactionsexample/ │ │ │ │ │ │ │ └── QuickActionsTestActivity.java │ │ │ │ │ │ └── res/ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── quick_actions_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ ├── Runner.xcscheme │ │ │ │ │ │ └── RunnerUITests.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ ├── RunnerTests/ │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── RunnerTests.m │ │ │ │ │ └── RunnerUITests/ │ │ │ │ │ ├── Info.plist │ │ │ │ │ └── RunnerUITests.m │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ └── quick_actions.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── quick_actions_test.dart │ │ ├── quick_actions_android/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── quickactions/ │ │ │ │ │ ├── MethodCallHandlerImpl.java │ │ │ │ │ └── QuickActionsPlugin.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── io/ │ │ │ │ └── flutter/ │ │ │ │ └── plugins/ │ │ │ │ └── quickactions/ │ │ │ │ └── QuickActionsTest.java │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── quickactionsexample/ │ │ │ │ │ │ │ ├── FlutterActivityTest.java │ │ │ │ │ │ │ └── QuickActionsTest.java │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ └── main/ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ ├── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ └── quickactionsexample/ │ │ │ │ │ │ │ └── QuickActionsTestActivity.java │ │ │ │ │ │ └── res/ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ └── ic_launcher_background.xml │ │ │ │ │ │ └── values/ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── quick_actions_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ └── quick_actions_android.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── quick_actions_android_test.dart │ │ ├── quick_actions_ios/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ └── quick_actions_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ ├── Runner.xcscheme │ │ │ │ │ │ └── RunnerUITests.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ ├── RunnerTests/ │ │ │ │ │ │ ├── DefaultShortcutItemParserTests.swift │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── Mocks/ │ │ │ │ │ │ │ ├── MockMethodChannel.swift │ │ │ │ │ │ │ ├── MockShortcutItemParser.swift │ │ │ │ │ │ │ └── MockShortcutItemProvider.swift │ │ │ │ │ │ └── QuickActionsPluginTests.swift │ │ │ │ │ └── RunnerUITests/ │ │ │ │ │ ├── Info.plist │ │ │ │ │ └── RunnerUITests.swift │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── ios/ │ │ │ │ ├── Assets/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── Classes/ │ │ │ │ │ ├── MethodChannel.swift │ │ │ │ │ ├── QuickActionsPlugin.swift │ │ │ │ │ ├── ShortcutItemParser.swift │ │ │ │ │ └── ShortcutItemProviding.swift │ │ │ │ └── quick_actions_ios.podspec │ │ │ ├── lib/ │ │ │ │ └── quick_actions_ios.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── quick_actions_ios_test.dart │ │ └── quick_actions_platform_interface/ │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── lib/ │ │ │ ├── method_channel/ │ │ │ │ └── method_channel_quick_actions.dart │ │ │ ├── platform_interface/ │ │ │ │ └── quick_actions_platform.dart │ │ │ ├── quick_actions_platform_interface.dart │ │ │ └── types/ │ │ │ ├── quick_action_handler.dart │ │ │ ├── shortcut_item.dart │ │ │ └── types.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── method_channel_quick_actions_test.dart │ │ └── quick_actions_platform_interface_test.dart │ ├── shared_preferences/ │ │ ├── shared_preferences/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── sharedpreferencesexample/ │ │ │ │ │ │ │ ├── FlutterActivityTest.java │ │ │ │ │ │ │ └── MainActivityTest.java │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ └── res/ │ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ ├── drawable-v21/ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ ├── values/ │ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ │ └── values-night/ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ └── profile/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── shared_preferences_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── Runner-Bridging-Header.h │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── linux/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ │ ├── main.cc │ │ │ │ │ ├── my_application.cc │ │ │ │ │ └── my_application.h │ │ │ │ ├── macos/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ ├── web/ │ │ │ │ │ ├── index.html │ │ │ │ │ └── manifest.json │ │ │ │ └── windows/ │ │ │ │ ├── .gitignore │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── flutter/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ └── runner/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Runner.rc │ │ │ │ ├── flutter_window.cpp │ │ │ │ ├── flutter_window.h │ │ │ │ ├── main.cpp │ │ │ │ ├── resource.h │ │ │ │ ├── run_loop.cpp │ │ │ │ ├── run_loop.h │ │ │ │ ├── runner.exe.manifest │ │ │ │ ├── utils.cpp │ │ │ │ ├── utils.h │ │ │ │ ├── win32_window.cpp │ │ │ │ └── win32_window.h │ │ │ ├── lib/ │ │ │ │ └── shared_preferences.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── shared_preferences_test.dart │ │ ├── shared_preferences_android/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── lint-baseline.xml │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── sharedpreferences/ │ │ │ │ │ ├── MethodCallHandlerImpl.java │ │ │ │ │ └── SharedPreferencesPlugin.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── io/ │ │ │ │ └── flutter/ │ │ │ │ └── plugins/ │ │ │ │ └── sharedpreferences/ │ │ │ │ └── SharedPreferencesTest.java │ │ │ ├── example/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── sharedpreferencesexample/ │ │ │ │ │ │ │ └── MainActivityTest.java │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ └── res/ │ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ ├── drawable-v21/ │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ ├── values/ │ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ │ └── values-night/ │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ └── profile/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── integration_test/ │ │ │ │ │ └── shared_preferences_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ └── shared_preferences_android.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── shared_preferences_android_test.dart │ │ ├── shared_preferences_foundation/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── darwin/ │ │ │ │ ├── Classes/ │ │ │ │ │ ├── SharedPreferencesPlugin.swift │ │ │ │ │ └── messages.g.swift │ │ │ │ ├── Tests/ │ │ │ │ │ └── RunnerTests.swift │ │ │ │ └── shared_preferences_foundation.podspec │ │ │ ├── example/ │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ └── shared_preferences_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ │ │ ├── Contents.json │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── Runner-Bridging-Header.h │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── macos/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ ├── Runner.xcworkspace/ │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ │ └── RunnerTests/ │ │ │ │ │ └── Info.plist │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── ios/ │ │ │ │ └── README.md │ │ │ ├── lib/ │ │ │ │ ├── messages.g.dart │ │ │ │ └── shared_preferences_foundation.dart │ │ │ ├── macos/ │ │ │ │ └── README.md │ │ │ ├── pigeons/ │ │ │ │ ├── copyright_header.txt │ │ │ │ └── messages.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── shared_preferences_foundation_test.dart │ │ │ └── test_api.g.dart │ │ ├── shared_preferences_linux/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .metadata │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ └── shared_preferences_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── linux/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ │ ├── main.cc │ │ │ │ │ ├── my_application.cc │ │ │ │ │ └── my_application.h │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ ├── lib/ │ │ │ │ └── shared_preferences_linux.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── shared_preferences_linux_test.dart │ │ ├── shared_preferences_platform_interface/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── method_channel_shared_preferences.dart │ │ │ │ └── shared_preferences_platform_interface.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── method_channel_shared_preferences_test.dart │ │ │ └── shared_preferences_platform_interface_test.dart │ │ ├── shared_preferences_web/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── integration_test/ │ │ │ │ │ └── shared_preferences_web_test.dart │ │ │ │ ├── lib/ │ │ │ │ │ └── main.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── run_test.sh │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ └── web/ │ │ │ │ └── index.html │ │ │ ├── lib/ │ │ │ │ └── shared_preferences_web.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── README.md │ │ │ └── tests_exist_elsewhere_test.dart │ │ └── shared_preferences_windows/ │ │ ├── .metadata │ │ ├── AUTHORS │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── .metadata │ │ │ ├── AUTHORS │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── integration_test/ │ │ │ │ └── shared_preferences_test.dart │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ ├── test_driver/ │ │ │ │ └── integration_test.dart │ │ │ └── windows/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── flutter/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── generated_plugins.cmake │ │ │ └── runner/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Runner.rc │ │ │ ├── flutter_window.cpp │ │ │ ├── flutter_window.h │ │ │ ├── main.cpp │ │ │ ├── resource.h │ │ │ ├── run_loop.cpp │ │ │ ├── run_loop.h │ │ │ ├── runner.exe.manifest │ │ │ ├── utils.cpp │ │ │ ├── utils.h │ │ │ ├── win32_window.cpp │ │ │ └── win32_window.h │ │ ├── lib/ │ │ │ └── shared_preferences_windows.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── shared_preferences_windows_test.dart │ ├── url_launcher/ │ │ ├── url_launcher/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── urllauncherexample/ │ │ │ │ │ │ │ └── FlutterActivityTest.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── build.gradle │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ ├── gradle.properties │ │ │ │ │ └── settings.gradle │ │ │ │ ├── build.excerpt.yaml │ │ │ │ ├── integration_test/ │ │ │ │ │ └── url_launcher_test.dart │ │ │ │ ├── ios/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ └── Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ │ ├── AppDelegate.m │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ │ │ └── Main.storyboard │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ └── main.m │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── lib/ │ │ │ │ │ ├── basic.dart │ │ │ │ │ ├── encoding.dart │ │ │ │ │ ├── files.dart │ │ │ │ │ └── main.dart │ │ │ │ ├── linux/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── flutter/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ │ ├── main.cc │ │ │ │ │ ├── my_application.cc │ │ │ │ │ └── my_application.h │ │ │ │ ├── macos/ │ │ │ │ │ ├── Flutter/ │ │ │ │ │ │ ├── Flutter-Debug.xcconfig │ │ │ │ │ │ └── Flutter-Release.xcconfig │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── Runner/ │ │ │ │ │ │ ├── AppDelegate.swift │ │ │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ │ │ └── AppIcon.appiconset/ │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ ├── Base.lproj/ │ │ │ │ │ │ │ └── MainMenu.xib │ │ │ │ │ │ ├── Configs/ │ │ │ │ │ │ │ ├── AppInfo.xcconfig │ │ │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ │ │ ├── Release.xcconfig │ │ │ │ │ │ │ └── Warnings.xcconfig │ │ │ │ │ │ ├── DebugProfile.entitlements │ │ │ │ │ │ ├── Info.plist │ │ │ │ │ │ ├── MainFlutterWindow.swift │ │ │ │ │ │ └── Release.entitlements │ │ │ │ │ ├── Runner.xcodeproj/ │ │ │ │ │ │ ├── project.pbxproj │ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ │ └── xcschemes/ │ │ │ │ │ │ └── Runner.xcscheme │ │ │ │ │ └── Runner.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── pubspec.yaml │ │ │ │ ├── test_driver/ │ │ │ │ │ └── integration_test.dart │ │ │ │ ├── web/ │ │ │ │ │ ├── index.html │ │ │ │ │ └── manifest.json │ │ │ │ └── windows/ │ │ │ │ ├── .gitignore │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── flutter/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── generated_plugins.cmake │ │ │ │ └── runner/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Runner.rc │ │ │ │ ├── flutter_window.cpp │ │ │ │ ├── flutter_window.h │ │ │ │ ├── main.cpp │ │ │ │ ├── resource.h │ │ │ │ ├── run_loop.cpp │ │ │ │ ├── run_loop.h │ │ │ │ ├── runner.exe.manifest │ │ │ │ ├── utils.cpp │ │ │ │ ├── utils.h │ │ │ │ ├── win32_window.cpp │ │ │ │ └── win32_window.h │ │ │ ├── lib/ │ │ │ │ ├── link.dart │ │ │ │ ├── src/ │ │ │ │ │ ├── legacy_api.dart │ │ │ │ │ ├── link.dart │ │ │ │ │ ├── type_conversion.dart │ │ │ │ │ ├── types.dart │ │ │ │ │ ├── url_launcher_string.dart │ │ │ │ │ └── url_launcher_uri.dart │ │ │ │ ├── url_launcher.dart │ │ │ │ └── url_launcher_string.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── link_test.dart │ │ │ ├── mocks/ │ │ │ │ └── mock_url_launcher_platform.dart │ │ │ └── src/ │ │ │ ├── legacy_api_test.dart │ │ │ ├── url_launcher_string_test.dart │ │ │ └── url_launcher_uri_test.dart │ │ ├── url_launcher_android/ │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── android/ │ │ │ │ ├── build.gradle │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ └── java/ │ │ │ │ │ └── io/ │ │ │ │ │ └── flutter/ │ │ │ │ │ └── plugins/ │ │ │ │ │ └── urllauncher/ │ │ │ │ │ ├── MethodCallHandlerImpl.java │ │ │ │ │ ├── UrlLauncher.java │ │ │ │ │ ├── UrlLauncherPlugin.java │ │ │ │ │ └── WebViewActivity.java │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── io/ │ │ │ │ └── flutter/ │ │ │ │ └── plugins/ │ │ │ │ └── urllauncher/ │ │ │ │ ├── MethodCallHandlerImplTest.java │ │ │ │ └── WebViewActivityTest.java │ │ │ ├── example/ │ │ │ │ ├── README.md │ │ │ │ ├── android/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── build.gradle │ │ │ │ │ │ ├── gradle/ │ │ │ │ │ │ │ └── wrapper/ │ │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── androidTest/ │ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ │ └── io/ │ │ │ │ │ │ │ └── flutter/ │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ ├── DartIntegrationTest.java │ │ │ │ │ │ │ └── urllauncherexample/ │ │ │ │ │ │ │ └── FlutterActivityTest.java │ │ │ │ │ │ └── main/ │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── build.gradl
Showing preview only (1,126K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (12496 symbols across 1464 files)
FILE: packages/camera/camera/example/android/app/src/androidTest/java/io/flutter/plugins/cameraexample/FlutterActivityTest.java
class FlutterActivityTest (line 14) | @DartIntegrationTest
FILE: packages/camera/camera/example/integration_test/camera_test.dart
function main (line 16) | void main()
function assertExpectedDimensions (line 45) | bool assertExpectedDimensions(Size expectedSize, Size actual)
function testCaptureImageResolution (line 55) | Future<bool> testCaptureImageResolution(
function testCaptureVideoResolution (line 102) | Future<bool> testCaptureVideoResolution(
function startStreaming (line 243) | Future<CameraImage> startStreaming(List<CameraDescription> cameras,
FILE: packages/camera/camera/example/lib/main.dart
class CameraExampleHome (line 15) | class CameraExampleHome extends StatefulWidget {
method createState (line 20) | State<CameraExampleHome> createState()
function getCameraLensIcon (line 26) | IconData getCameraLensIcon(CameraLensDirection direction)
function _logError (line 41) | void _logError(String code, String? message)
class _CameraExampleHomeState (line 46) | class _CameraExampleHomeState extends State<CameraExampleHome>
method initState (line 72) | void initState()
method dispose (line 103) | void dispose()
method didChangeAppLifecycleState (line 112) | void didChangeAppLifecycleState(AppLifecycleState state)
method build (line 129) | Widget build(BuildContext context)
method _cameraPreviewWidget (line 173) | Widget _cameraPreviewWidget()
method _handleScaleStart (line 206) | void _handleScaleStart(ScaleStartDetails details)
method _handleScaleUpdate (line 210) | Future<void> _handleScaleUpdate(ScaleUpdateDetails details)
method _thumbnailWidget (line 223) | Widget _thumbnailWidget()
method _modeControlRowWidget (line 267) | Widget _modeControlRowWidget()
method _flashModeControlRowWidget (line 319) | Widget _flashModeControlRowWidget()
method _exposureModeControlRowWidget (line 368) | Widget _exposureModeControlRowWidget()
method _focusModeControlRowWidget (line 455) | Widget _focusModeControlRowWidget()
method _captureControlRowWidget (line 514) | Widget _captureControlRowWidget()
method _cameraTogglesRowWidget (line 575) | Widget _cameraTogglesRowWidget()
method onChanged (line 578) | void onChanged(CameraDescription? description)
method timestamp (line 613) | String timestamp()
method showInSnackBar (line 615) | void showInSnackBar(String message)
method onViewFinderTap (line 620) | void onViewFinderTap(TapDownDetails details, BoxConstraints constraints)
method onNewCameraSelected (line 635) | Future<void> onNewCameraSelected(CameraDescription cameraDescription)
method onTakePictureButtonPressed (line 722) | void onTakePictureButtonPressed()
method onFlashModeButtonPressed (line 737) | void onFlashModeButtonPressed()
method onExposureModeButtonPressed (line 747) | void onExposureModeButtonPressed()
method onFocusModeButtonPressed (line 757) | void onFocusModeButtonPressed()
method onAudioModeButtonPressed (line 767) | void onAudioModeButtonPressed()
method onCaptureOrientationLockButtonPressed (line 774) | Future<void> onCaptureOrientationLockButtonPressed()
method onSetFlashModeButtonPressed (line 792) | void onSetFlashModeButtonPressed(FlashMode mode)
method onSetExposureModeButtonPressed (line 801) | void onSetExposureModeButtonPressed(ExposureMode mode)
method onSetFocusModeButtonPressed (line 810) | void onSetFocusModeButtonPressed(FocusMode mode)
method onVideoRecordButtonPressed (line 819) | void onVideoRecordButtonPressed()
method onStopButtonPressed (line 827) | void onStopButtonPressed()
method onPausePreviewButtonPressed (line 840) | Future<void> onPausePreviewButtonPressed()
method onPauseButtonPressed (line 859) | void onPauseButtonPressed()
method onResumeButtonPressed (line 868) | void onResumeButtonPressed()
method startVideoRecording (line 877) | Future<void> startVideoRecording()
method stopVideoRecording (line 898) | Future<XFile?> stopVideoRecording()
method pauseVideoRecording (line 913) | Future<void> pauseVideoRecording()
method resumeVideoRecording (line 928) | Future<void> resumeVideoRecording()
method setFlashMode (line 943) | Future<void> setFlashMode(FlashMode mode)
method setExposureMode (line 956) | Future<void> setExposureMode(ExposureMode mode)
method setExposureOffset (line 969) | Future<void> setExposureOffset(double offset)
method setFocusMode (line 985) | Future<void> setFocusMode(FocusMode mode)
method _startVideoPlayer (line 998) | Future<void> _startVideoPlayer()
method takePicture (line 1029) | Future<XFile?> takePicture()
method _showCameraException (line 1050) | void _showCameraException(CameraException e)
class CameraApp (line 1057) | class CameraApp extends StatelessWidget {
method build (line 1062) | Widget build(BuildContext context)
function main (line 1071) | Future<void> main()
FILE: packages/camera/camera/example/lib/readme_full_example.dart
function main (line 11) | Future<void> main()
class CameraApp (line 19) | class CameraApp extends StatefulWidget {
method createState (line 24) | State<CameraApp> createState()
class _CameraAppState (line 27) | class _CameraAppState extends State<CameraApp> {
method initState (line 31) | void initState()
method dispose (line 54) | void dispose()
method build (line 60) | Widget build(BuildContext context)
FILE: packages/camera/camera/example/test/main_test.dart
function main (line 9) | void main()
FILE: packages/camera/camera/example/test_driver/integration_test.dart
function main (line 15) | Future<void> main()
FILE: packages/camera/camera/lib/src/camera_controller.dart
type onLatestImageAvailable (line 22) | typedef onLatestImageAvailable = Function(CameraImage image);
function availableCameras (line 27) | Future<List<CameraDescription>> availableCameras()
function _unawaited (line 33) | void _unawaited(Future<void>? future)
class CameraValue (line 36) | class CameraValue {
method copyWith (line 150) | CameraValue copyWith({
method toString (line 198) | String toString()
class CameraController (line 225) | class CameraController extends ValueNotifier<CameraValue> {
method debugCheckIsDisposed (line 267) | void debugCheckIsDisposed()
method initialize (line 277) | Future<void> initialize()
method prepareForVideoRecording (line 348) | Future<void> prepareForVideoRecording()
method pausePreview (line 353) | Future<void> pausePreview()
method resumePreview (line 369) | Future<void> resumePreview()
method takePicture (line 386) | Future<XFile> takePicture()
method startImageStream (line 422) | Future<void> startImageStream(onLatestImageAvailable onAvailable)
method stopImageStream (line 458) | Future<void> stopImageStream()
method startVideoRecording (line 485) | Future<void> startVideoRecording(
method stopVideoRecording (line 519) | Future<XFile> stopVideoRecording()
method pauseVideoRecording (line 548) | Future<void> pauseVideoRecording()
method resumeVideoRecording (line 567) | Future<void> resumeVideoRecording()
method buildPreview (line 584) | Widget buildPreview()
method getMaxZoomLevel (line 594) | Future<double> getMaxZoomLevel()
method getMinZoomLevel (line 604) | Future<double> getMinZoomLevel()
method setZoomLevel (line 618) | Future<void> setZoomLevel(double zoom)
method setFlashMode (line 628) | Future<void> setFlashMode(FlashMode mode)
method setExposureMode (line 638) | Future<void> setExposureMode(ExposureMode mode)
method setExposurePoint (line 651) | Future<void> setExposurePoint(Offset? point)
method getMinExposureOffset (line 674) | Future<double> getMinExposureOffset()
method getMaxExposureOffset (line 684) | Future<double> getMaxExposureOffset()
method getExposureOffsetStepSize (line 696) | Future<double> getExposureOffsetStepSize()
method setExposureOffset (line 716) | Future<double> setExposureOffset(double offset)
method lockCaptureOrientation (line 751) | Future<void> lockCaptureOrientation([DeviceOrientation? orientation])
method setFocusMode (line 764) | Future<void> setFocusMode(FocusMode mode)
method unlockCaptureOrientation (line 774) | Future<void> unlockCaptureOrientation()
method setFocusPoint (line 788) | Future<void> setFocusPoint(Offset? point)
method dispose (line 811) | Future<void> dispose()
method _throwIfNotInitialized (line 824) | void _throwIfNotInitialized(String functionName)
method removeListener (line 840) | void removeListener(VoidCallback listener)
class Optional (line 854) | @immutable
method ifPresent (line 892) | void ifPresent(void Function(T value) ifPresent)
method ifAbsent (line 899) | void ifAbsent(void Function() ifAbsent)
method or (line 910) | T or(T defaultValue)
method transform (line 922) | Optional<S> transform<S>(S Function(T value) transformer)
method transformNullable (line 933) | Optional<S> transformNullable<S>(S? Function(T value) transformer)
method toString (line 952) | String toString()
FILE: packages/camera/camera/lib/src/camera_image.dart
class Plane (line 20) | class Plane {
class ImageFormat (line 60) | class ImageFormat {
function _asImageFormatGroup (line 84) | ImageFormatGroup _asImageFormatGroup(dynamic rawFormat)
class CameraImage (line 119) | class CameraImage {
FILE: packages/camera/camera/lib/src/camera_preview.dart
class CameraPreview (line 12) | class CameraPreview extends StatelessWidget {
method build (line 24) | Widget build(BuildContext context)
method _wrapInRotatedBox (line 47) | Widget _wrapInRotatedBox({required Widget child})
method _isLandscape (line 58) | bool _isLandscape()
method _getQuarterTurns (line 65) | int _getQuarterTurns()
method _getApplicableOrientation (line 75) | DeviceOrientation _getApplicableOrientation()
FILE: packages/camera/camera/test/camera_image_stream_test.dart
function main (line 13) | void main()
class MockStreamingCameraPlatform (line 201) | class MockStreamingCameraPlatform extends MockCameraPlatform {
method onStreamedFrameAvailable (line 207) | Stream<CameraImageData> onStreamedFrameAvailable(int cameraId,
method startVideoRecording (line 218) | Future<XFile> startVideoRecording(int cameraId,
method startVideoCapturing (line 226) | Future<void> startVideoCapturing(VideoCaptureOptions options)
method _onFrameStreamListen (line 235) | void _onFrameStreamListen()
method _onFrameStreamCancel (line 239) | FutureOr<void> _onFrameStreamCancel()
FILE: packages/camera/camera/test/camera_image_test.dart
function main (line 14) | void main()
FILE: packages/camera/camera/test/camera_preview_test.dart
class FakeController (line 12) | class FakeController extends ValueNotifier<CameraValue>
method dispose (line 17) | Future<void> dispose()
method buildPreview (line 22) | Widget buildPreview()
method debugCheckIsDisposed (line 30) | void debugCheckIsDisposed()
method getExposureOffsetStepSize (line 40) | Future<double> getExposureOffsetStepSize()
method getMaxExposureOffset (line 43) | Future<double> getMaxExposureOffset()
method getMaxZoomLevel (line 46) | Future<double> getMaxZoomLevel()
method getMinExposureOffset (line 49) | Future<double> getMinExposureOffset()
method getMinZoomLevel (line 52) | Future<double> getMinZoomLevel()
method initialize (line 58) | Future<void> initialize()
method lockCaptureOrientation (line 61) | Future<void> lockCaptureOrientation([DeviceOrientation? orientation])
method pauseVideoRecording (line 64) | Future<void> pauseVideoRecording()
method prepareForVideoRecording (line 67) | Future<void> prepareForVideoRecording()
method resumeVideoRecording (line 73) | Future<void> resumeVideoRecording()
method setExposureMode (line 76) | Future<void> setExposureMode(ExposureMode mode)
method setExposureOffset (line 79) | Future<double> setExposureOffset(double offset)
method setExposurePoint (line 82) | Future<void> setExposurePoint(Offset? point)
method setFlashMode (line 85) | Future<void> setFlashMode(FlashMode mode)
method setFocusMode (line 88) | Future<void> setFocusMode(FocusMode mode)
method setFocusPoint (line 91) | Future<void> setFocusPoint(Offset? point)
method setZoomLevel (line 94) | Future<void> setZoomLevel(double zoom)
method startImageStream (line 97) | Future<void> startImageStream(onLatestImageAvailable onAvailable)
method startVideoRecording (line 100) | Future<void> startVideoRecording(
method stopImageStream (line 104) | Future<void> stopImageStream()
method stopVideoRecording (line 107) | Future<XFile> stopVideoRecording()
method takePicture (line 110) | Future<XFile> takePicture()
method unlockCaptureOrientation (line 113) | Future<void> unlockCaptureOrientation()
method pausePreview (line 116) | Future<void> pausePreview()
method resumePreview (line 119) | Future<void> resumePreview()
function main (line 122) | void main()
FILE: packages/camera/camera/test/camera_test.dart
function main (line 55) | void main()
class MockCameraPlatform (line 1371) | class MockCameraPlatform extends Mock
method initializeCamera (line 1375) | Future<void> initializeCamera(
method dispose (line 1388) | Future<void> dispose(int? cameraId)
method availableCameras (line 1393) | Future<List<CameraDescription>> availableCameras()
method createCamera (line 1397) | Future<int> createCamera(
method onCameraInitialized (line 1407) | Stream<CameraInitializedEvent> onCameraInitialized(int cameraId)
method onCameraClosing (line 1411) | Stream<CameraClosingEvent> onCameraClosing(int cameraId)
method onCameraError (line 1415) | Stream<CameraErrorEvent> onCameraError(int cameraId)
method onDeviceOrientationChanged (line 1419) | Stream<DeviceOrientationChangedEvent> onDeviceOrientationChanged()
method takePicture (line 1424) | Future<XFile> takePicture(int cameraId)
method prepareForVideoRecording (line 1429) | Future<void> prepareForVideoRecording()
method startVideoRecording (line 1433) | Future<XFile> startVideoRecording(int cameraId,
method startVideoCapturing (line 1438) | Future<void> startVideoCapturing(VideoCaptureOptions options)
method lockCaptureOrientation (line 1444) | Future<void> lockCaptureOrientation(
method unlockCaptureOrientation (line 1450) | Future<void> unlockCaptureOrientation(int? cameraId)
method pausePreview (line 1455) | Future<void> pausePreview(int? cameraId)
method resumePreview (line 1459) | Future<void> resumePreview(int? cameraId)
method getMaxZoomLevel (line 1463) | Future<double> getMaxZoomLevel(int? cameraId)
method getMinZoomLevel (line 1469) | Future<double> getMinZoomLevel(int? cameraId)
method setZoomLevel (line 1475) | Future<void> setZoomLevel(int? cameraId, double? zoom)
method setFlashMode (line 1480) | Future<void> setFlashMode(int? cameraId, FlashMode? mode)
method setExposureMode (line 1485) | Future<void> setExposureMode(int? cameraId, ExposureMode? mode)
method setExposurePoint (line 1490) | Future<void> setExposurePoint(int? cameraId, Point<double>? point)
method getMinExposureOffset (line 1495) | Future<double> getMinExposureOffset(int? cameraId)
method getMaxExposureOffset (line 1502) | Future<double> getMaxExposureOffset(int? cameraId)
method getExposureOffsetStepSize (line 1509) | Future<double> getExposureOffsetStepSize(int? cameraId)
method setExposureOffset (line 1516) | Future<double> setExposureOffset(int? cameraId, double? offset)
class MockCameraDescription (line 1523) | class MockCameraDescription extends CameraDescription {
FILE: packages/camera/camera/test/camera_value_test.dart
function main (line 16) | void main()
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java
type ErrorCallback (line 77) | @FunctionalInterface
method onError (line 79) | void onError(String errorCode, String errorMessage);
type CameraDeviceWrapper (line 83) | interface CameraDeviceWrapper {
method createCaptureRequest (line 84) | @NonNull
method createCaptureSession (line 87) | @TargetApi(VERSION_CODES.P)
method createCaptureSession (line 90) | @TargetApi(VERSION_CODES.LOLLIPOP)
method close (line 97) | void close();
class Camera (line 100) | class Camera
class DefaultCameraDeviceWrapper (line 158) | private class DefaultCameraDeviceWrapper implements CameraDeviceWrapper {
method DefaultCameraDeviceWrapper (line 161) | private DefaultCameraDeviceWrapper(CameraDevice cameraDevice) {
method createCaptureRequest (line 165) | @NonNull
method createCaptureSession (line 172) | @TargetApi(VERSION_CODES.P)
method createCaptureSession (line 178) | @TargetApi(VERSION_CODES.LOLLIPOP)
method close (line 189) | @Override
method Camera (line 195) | public Camera(
method onConverged (line 226) | @Override
method onPrecapture (line 231) | @Override
method updateBuilderSettings (line 241) | private void updateBuilderSettings(CaptureRequest.Builder requestBuild...
method prepareMediaRecorder (line 248) | private void prepareMediaRecorder(String outputFilePath) throws IOExce...
method open (line 280) | @SuppressLint("MissingPermission")
method createCaptureSession (line 388) | @VisibleForTesting
method createCaptureSession (line 393) | private void createCaptureSession(
method createCaptureSessionWithSessionConfig (line 478) | @TargetApi(VERSION_CODES.P)
method createCaptureSession (line 490) | @TargetApi(VERSION_CODES.LOLLIPOP)
method refreshPreviewCaptureSession (line 499) | private void refreshPreviewCaptureSession(
method startCapture (line 528) | private void startCapture(boolean record, boolean stream) throws Camer...
method takePicture (line 543) | public void takePicture(@NonNull final Result result) {
method runPrecaptureSequence (line 578) | private void runPrecaptureSequence() {
method takePictureAfterPrecapture (line 613) | private void takePictureAfterPrecapture() {
method getDefaultDisplay (line 668) | @SuppressWarnings("deprecation")
method startBackgroundThread (line 674) | public void startBackgroundThread() {
method stopBackgroundThread (line 689) | public void stopBackgroundThread() {
method runPictureAutoFocus (line 698) | private void runPictureAutoFocus() {
method lockAutoFocus (line 705) | private void lockAutoFocus() {
method unlockAutoFocus (line 724) | private void unlockAutoFocus() {
method startVideoRecording (line 752) | public void startVideoRecording(
method stopVideoRecording (line 771) | public void stopVideoRecording(@NonNull final Result result) {
method pauseVideoRecording (line 797) | public void pauseVideoRecording(@NonNull final Result result) {
method resumeVideoRecording (line 818) | public void resumeVideoRecording(@NonNull final Result result) {
method setFlashMode (line 846) | public void setFlashMode(@NonNull final Result result, @NonNull FlashM...
method setExposureMode (line 863) | public void setExposureMode(@NonNull final Result result, @NonNull Exp...
method setExposurePoint (line 880) | public void setExposurePoint(@NonNull final Result result, @Nullable P...
method getMaxExposureOffset (line 892) | public double getMaxExposureOffset() {
method getMinExposureOffset (line 897) | public double getMinExposureOffset() {
method getExposureOffsetStepSize (line 902) | public double getExposureOffsetStepSize() {
method setFocusMode (line 912) | public void setFocusMode(final Result result, @NonNull FocusMode newMo...
method setFocusPoint (line 964) | public void setFocusPoint(@NonNull final Result result, @Nullable Poin...
method setExposureOffset (line 983) | public void setExposureOffset(@NonNull final Result result, double off...
method getMaxZoomLevel (line 994) | public float getMaxZoomLevel() {
method getMinZoomLevel (line 998) | public float getMinZoomLevel() {
method getRecordingProfileLegacy (line 1003) | CamcorderProfile getRecordingProfileLegacy() {
method getRecordingProfile (line 1007) | EncoderProfiles getRecordingProfile() {
method getDeviceOrientationManager (line 1012) | DeviceOrientationManager getDeviceOrientationManager() {
method setZoomLevel (line 1022) | public void setZoomLevel(@NonNull final Result result, float zoom) thr...
method lockCaptureOrientation (line 1051) | public void lockCaptureOrientation(PlatformChannel.DeviceOrientation o...
method unlockCaptureOrientation (line 1056) | public void unlockCaptureOrientation() {
method pausePreview (line 1061) | public void pausePreview() throws CameraAccessException {
method resumePreview (line 1067) | public void resumePreview() {
method startPreview (line 1073) | public void startPreview() throws CameraAccessException {
method startPreviewWithImageStream (line 1080) | public void startPreviewWithImageStream(EventChannel imageStreamChannel)
method onImageAvailable (line 1092) | @Override
method prepareRecording (line 1115) | private void prepareRecording(@NonNull Result result) {
method setStreamHandler (line 1136) | private void setStreamHandler(EventChannel imageStreamChannel) {
method setImageStreamImageAvailableListener (line 1151) | private void setImageStreamImageAvailableListener(final EventChannel.E...
method closeCaptureSession (line 1191) | private void closeCaptureSession() {
method close (line 1200) | public void close() {
method dispose (line 1232) | public void dispose() {
class HandlerThreadFactory (line 1241) | static class HandlerThreadFactory {
method create (line 1251) | @VisibleForTesting
class HandlerFactory (line 1258) | static class HandlerFactory {
method create (line 1268) | @VisibleForTesting
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraCaptureCallback.java
class CameraCaptureCallback (line 21) | class CameraCaptureCallback extends CaptureCallback {
method CameraCaptureCallback (line 28) | private CameraCaptureCallback(
method create (line 46) | public static CameraCaptureCallback create(
method getCameraState (line 58) | public CameraState getCameraState() {
method setCameraState (line 67) | public void setCameraState(@NonNull CameraState state) {
method process (line 71) | private void process(CaptureResult result) {
method handleWaitingFocusState (line 147) | private void handleWaitingFocusState(Integer aeState) {
method onCaptureProgressed (line 156) | @Override
method onCaptureCompleted (line 164) | @Override
type CameraCaptureStateListener (line 173) | interface CameraCaptureStateListener {
method onConverged (line 176) | void onConverged();
method onPrecapture (line 181) | void onPrecapture();
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraPermissions.java
class CameraPermissions (line 15) | final class CameraPermissions {
type PermissionsRegistry (line 16) | interface PermissionsRegistry {
method addListener (line 17) | @SuppressWarnings("deprecation")
type ResultCallback (line 22) | interface ResultCallback {
method onResult (line 23) | void onResult(String errorCode, String errorDescription);
method requestPermissions (line 43) | void requestPermissions(
method hasCameraPermission (line 73) | private boolean hasCameraPermission(Activity activity) {
method hasAudioPermission (line 78) | private boolean hasAudioPermission(Activity activity) {
class CameraRequestPermissionsListener (line 83) | @VisibleForTesting
method CameraRequestPermissionsListener (line 96) | @VisibleForTesting
method onRequestPermissionsResult (line 101) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraPlugin.java
class CameraPlugin (line 27) | public final class CameraPlugin implements FlutterPlugin, ActivityAware {
method CameraPlugin (line 38) | public CameraPlugin() {}
method registerWith (line 47) | @SuppressWarnings("deprecation")
method onAttachedToEngine (line 57) | @Override
method onDetachedFromEngine (line 62) | @Override
method onAttachedToActivity (line 67) | @Override
method onDetachedFromActivity (line 76) | @Override
method onReattachedToActivityForConfigChanges (line 85) | @Override
method onDetachedFromActivityForConfigChanges (line 90) | @Override
method maybeStartListening (line 95) | private void maybeStartListening(
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraProperties.java
type CameraProperties (line 18) | public interface CameraProperties {
method getCameraName (line 25) | String getCameraName();
method getControlAutoExposureAvailableTargetFpsRanges (line 37) | Range<Integer>[] getControlAutoExposureAvailableTargetFpsRanges();
method getControlAutoExposureCompensationRange (line 50) | Range<Integer> getControlAutoExposureCompensationRange();
method getControlAutoExposureCompensationStep (line 60) | double getControlAutoExposureCompensationStep();
method getControlAutoFocusAvailableModes (line 71) | int[] getControlAutoFocusAvailableModes();
method getControlMaxRegionsAutoExposure (line 82) | Integer getControlMaxRegionsAutoExposure();
method getControlMaxRegionsAutoFocus (line 92) | Integer getControlMaxRegionsAutoFocus();
method getDistortionCorrectionAvailableModes (line 103) | @RequiresApi(api = VERSION_CODES.P)
method getFlashInfoAvailable (line 114) | Boolean getFlashInfoAvailable();
method getLensFacing (line 131) | int getLensFacing();
method getLensInfoMinimumFocusDistance (line 143) | Float getLensInfoMinimumFocusDistance();
method getScalerAvailableMaxDigitalZoom (line 155) | Float getScalerAvailableMaxDigitalZoom();
method getScalerMinZoomRatio (line 166) | @RequiresApi(api = VERSION_CODES.R)
method getScalerMaxZoomRatio (line 178) | @RequiresApi(api = VERSION_CODES.R)
method getSensorInfoActiveArraySize (line 191) | Rect getSensorInfoActiveArraySize();
method getSensorInfoPixelArraySize (line 202) | Size getSensorInfoPixelArraySize();
method getSensorInfoPreCorrectionActiveArraySize (line 215) | @RequiresApi(api = VERSION_CODES.M)
method getSensorOrientation (line 228) | int getSensorOrientation();
method getHardwareLevel (line 249) | int getHardwareLevel();
method getAvailableNoiseReductionModes (line 261) | int[] getAvailableNoiseReductionModes();
class CameraPropertiesImpl (line 268) | class CameraPropertiesImpl implements CameraProperties {
method CameraPropertiesImpl (line 272) | public CameraPropertiesImpl(String cameraName, CameraManager cameraMan...
method getCameraName (line 278) | @Override
method getControlAutoExposureAvailableTargetFpsRanges (line 283) | @Override
method getControlAutoExposureCompensationRange (line 288) | @Override
method getControlAutoExposureCompensationStep (line 293) | @Override
method getControlAutoFocusAvailableModes (line 301) | @Override
method getControlMaxRegionsAutoExposure (line 306) | @Override
method getControlMaxRegionsAutoFocus (line 311) | @Override
method getDistortionCorrectionAvailableModes (line 316) | @RequiresApi(api = VERSION_CODES.P)
method getFlashInfoAvailable (line 322) | @Override
method getLensFacing (line 327) | @Override
method getLensInfoMinimumFocusDistance (line 332) | @Override
method getScalerAvailableMaxDigitalZoom (line 337) | @Override
method getScalerMaxZoomRatio (line 342) | @RequiresApi(api = VERSION_CODES.R)
method getScalerMinZoomRatio (line 348) | @RequiresApi(api = VERSION_CODES.R)
method getSensorInfoActiveArraySize (line 354) | @Override
method getSensorInfoPixelArraySize (line 359) | @Override
method getSensorInfoPreCorrectionActiveArraySize (line 364) | @RequiresApi(api = VERSION_CODES.M)
method getSensorOrientation (line 371) | @Override
method getHardwareLevel (line 376) | @Override
method getAvailableNoiseReductionModes (line 381) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraRegionUtils.java
class CameraRegionUtils (line 22) | public final class CameraRegionUtils {
method getCameraBoundaries (line 32) | public static Size getCameraBoundaries(
method convertPointToMeteringRectangle (line 72) | public static MeteringRectangle convertPointToMeteringRectangle(
method supportsDistortionCorrection (line 127) | @TargetApi(Build.VERSION_CODES.P)
class MeteringRectangleFactory (line 142) | static class MeteringRectangleFactory {
method create (line 158) | @VisibleForTesting
class SizeFactory (line 166) | static class SizeFactory {
method create (line 177) | @VisibleForTesting
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraState.java
type CameraState (line 12) | public enum CameraState {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraUtils.java
class CameraUtils (line 20) | public final class CameraUtils {
method CameraUtils (line 22) | private CameraUtils() {}
method getCameraManager (line 30) | static CameraManager getCameraManager(Context context) {
method serializeDeviceOrientation (line 42) | static String serializeDeviceOrientation(PlatformChannel.DeviceOrienta...
method deserializeDeviceOrientation (line 69) | static PlatformChannel.DeviceOrientation deserializeDeviceOrientation(...
method getAvailableCameras (line 94) | public static List<Map<String, Object>> getAvailableCameras(Activity a...
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java
class DartMessenger (line 20) | public class DartMessenger {
type DeviceEventType (line 26) | enum DeviceEventType {
method DeviceEventType (line 31) | DeviceEventType(String method) {
type CameraEventType (line 37) | enum CameraEventType {
method CameraEventType (line 52) | CameraEventType(String method) {
method DartMessenger (line 66) | DartMessenger(BinaryMessenger messenger, long cameraId, @NonNull Handl...
method sendDeviceOrientationChangeEvent (line 78) | public void sendDeviceOrientationChangeEvent(PlatformChannel.DeviceOri...
method sendCameraInitializedEvent (line 99) | void sendCameraInitializedEvent(
method sendCameraClosingEvent (line 127) | void sendCameraClosingEvent() {
method sendCameraErrorEvent (line 137) | void sendCameraErrorEvent(@Nullable String description) {
method send (line 147) | private void send(CameraEventType eventType) {
method send (line 151) | private void send(CameraEventType eventType, Map<String, Object> args) {
method send (line 165) | private void send(DeviceEventType eventType) {
method send (line 169) | private void send(DeviceEventType eventType, Map<String, Object> args) {
method finish (line 188) | public void finish(MethodChannel.Result result, Object payload) {
method error (line 199) | public void error(
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/ImageSaver.java
class ImageSaver (line 17) | public class ImageSaver implements Runnable {
method ImageSaver (line 35) | ImageSaver(@NonNull Image image, @NonNull File file, @NonNull Callback...
method run (line 41) | @Override
type Callback (line 71) | public interface Callback {
method onComplete (line 77) | void onComplete(String absolutePath);
method onError (line 85) | void onError(String errorCode, String errorMessage);
class FileOutputStreamFactory (line 89) | static class FileOutputStreamFactory {
method create (line 100) | @VisibleForTesting
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/MethodCallHandlerImpl.java
class MethodCallHandlerImpl (line 31) | final class MethodCallHandlerImpl implements MethodChannel.MethodCallHan...
method MethodCallHandlerImpl (line 41) | MethodCallHandlerImpl(
method onMethodCall (line 59) | @Override
method stopListening (line 371) | void stopListening() {
method instantiateCamera (line 375) | private void instantiateCamera(MethodCall call, Result result) throws ...
method handleException (line 407) | @SuppressWarnings("ConstantConditions")
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeature.java
class CameraFeature (line 19) | public abstract class CameraFeature<T> {
method CameraFeature (line 23) | protected CameraFeature(@NonNull CameraProperties cameraProperties) {
method getDebugName (line 28) | public abstract String getDebugName();
method getValue (line 35) | public abstract T getValue();
method setValue (line 42) | public abstract void setValue(T value);
method checkIsSupported (line 51) | public abstract boolean checkIsSupported();
method updateBuilder (line 59) | public abstract void updateBuilder(CaptureRequest.Builder requestBuild...
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeatureFactory.java
type CameraFeatureFactory (line 28) | public interface CameraFeatureFactory {
method createAutoFocusFeature (line 38) | AutoFocusFeature createAutoFocusFeature(
method createExposureLockFeature (line 48) | ExposureLockFeature createExposureLockFeature(@NonNull CameraPropertie...
method createExposureOffsetFeature (line 57) | ExposureOffsetFeature createExposureOffsetFeature(@NonNull CameraPrope...
method createFlashFeature (line 66) | FlashFeature createFlashFeature(@NonNull CameraProperties cameraProper...
method createResolutionFeature (line 77) | ResolutionFeature createResolutionFeature(
method createFocusPointFeature (line 91) | FocusPointFeature createFocusPointFeature(
method createFpsRangeFeature (line 102) | FpsRangeFeature createFpsRangeFeature(@NonNull CameraProperties camera...
method createSensorOrientationFeature (line 114) | SensorOrientationFeature createSensorOrientationFeature(
method createZoomLevelFeature (line 126) | ZoomLevelFeature createZoomLevelFeature(@NonNull CameraProperties came...
method createExposurePointFeature (line 137) | ExposurePointFeature createExposurePointFeature(
method createNoiseReductionFeature (line 148) | NoiseReductionFeature createNoiseReductionFeature(@NonNull CameraPrope...
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeatureFactoryImpl.java
class CameraFeatureFactoryImpl (line 29) | public class CameraFeatureFactoryImpl implements CameraFeatureFactory {
method createAutoFocusFeature (line 31) | @Override
method createExposureLockFeature (line 37) | @Override
method createExposureOffsetFeature (line 42) | @Override
method createFlashFeature (line 48) | @Override
method createResolutionFeature (line 53) | @Override
method createFocusPointFeature (line 61) | @Override
method createFpsRangeFeature (line 68) | @Override
method createSensorOrientationFeature (line 73) | @Override
method createZoomLevelFeature (line 81) | @Override
method createExposurePointFeature (line 86) | @Override
method createNoiseReductionFeature (line 93) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeatures.java
class CameraFeatures (line 30) | public class CameraFeatures {
method init (line 44) | public static CameraFeatures init(
method getAllFeatures (line 84) | public Collection<CameraFeature> getAllFeatures() {
method getAutoFocus (line 93) | public AutoFocusFeature getAutoFocus() {
method setAutoFocus (line 102) | public void setAutoFocus(AutoFocusFeature autoFocus) {
method getExposureLock (line 111) | public ExposureLockFeature getExposureLock() {
method setExposureLock (line 120) | public void setExposureLock(ExposureLockFeature exposureLock) {
method getExposureOffset (line 129) | public ExposureOffsetFeature getExposureOffset() {
method setExposureOffset (line 138) | public void setExposureOffset(ExposureOffsetFeature exposureOffset) {
method getExposurePoint (line 147) | public ExposurePointFeature getExposurePoint() {
method setExposurePoint (line 156) | public void setExposurePoint(ExposurePointFeature exposurePoint) {
method getFlash (line 165) | public FlashFeature getFlash() {
method setFlash (line 174) | public void setFlash(FlashFeature flash) {
method getFocusPoint (line 183) | public FocusPointFeature getFocusPoint() {
method setFocusPoint (line 192) | public void setFocusPoint(FocusPointFeature focusPoint) {
method getFpsRange (line 201) | public FpsRangeFeature getFpsRange() {
method setFpsRange (line 210) | public void setFpsRange(FpsRangeFeature fpsRange) {
method getNoiseReduction (line 219) | public NoiseReductionFeature getNoiseReduction() {
method setNoiseReduction (line 228) | public void setNoiseReduction(NoiseReductionFeature noiseReduction) {
method getResolution (line 237) | public ResolutionFeature getResolution() {
method setResolution (line 246) | public void setResolution(ResolutionFeature resolution) {
method getSensorOrientation (line 255) | public SensorOrientationFeature getSensorOrientation() {
method setSensorOrientation (line 264) | public void setSensorOrientation(SensorOrientationFeature sensorOrient...
method getZoomLevel (line 273) | public ZoomLevelFeature getZoomLevel() {
method setZoomLevel (line 282) | public void setZoomLevel(ZoomLevelFeature zoomLevel) {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/Point.java
class Point (line 8) | public class Point {
method Point (line 12) | public Point(Double x, Double y) {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/autofocus/AutoFocusFeature.java
class AutoFocusFeature (line 13) | public class AutoFocusFeature extends CameraFeature<FocusMode> {
method AutoFocusFeature (line 25) | public AutoFocusFeature(CameraProperties cameraProperties, boolean rec...
method getDebugName (line 30) | @Override
method getValue (line 35) | @Override
method setValue (line 40) | @Override
method checkIsSupported (line 45) | @Override
method updateBuilder (line 60) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/autofocus/FocusMode.java
type FocusMode (line 8) | public enum FocusMode {
method FocusMode (line 14) | FocusMode(String strValue) {
method getValueForString (line 18) | public static FocusMode getValueForString(String modeStr) {
method toString (line 27) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurelock/ExposureLockFeature.java
class ExposureLockFeature (line 12) | public class ExposureLockFeature extends CameraFeature<ExposureMode> {
method ExposureLockFeature (line 21) | public ExposureLockFeature(CameraProperties cameraProperties) {
method getDebugName (line 25) | @Override
method getValue (line 30) | @Override
method setValue (line 35) | @Override
method checkIsSupported (line 41) | @Override
method updateBuilder (line 46) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurelock/ExposureMode.java
type ExposureMode (line 8) | public enum ExposureMode {
method ExposureMode (line 14) | ExposureMode(String strValue) {
method getValueForString (line 27) | public static ExposureMode getValueForString(String modeStr) {
method toString (line 36) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposureoffset/ExposureOffsetFeature.java
class ExposureOffsetFeature (line 14) | public class ExposureOffsetFeature extends CameraFeature<Double> {
method ExposureOffsetFeature (line 23) | public ExposureOffsetFeature(CameraProperties cameraProperties) {
method getDebugName (line 27) | @Override
method getValue (line 32) | @Override
method setValue (line 37) | @Override
method checkIsSupported (line 44) | @Override
method updateBuilder (line 49) | @Override
method getMinExposureOffset (line 63) | public double getMinExposureOffset() {
method getMaxExposureOffset (line 75) | public double getMaxExposureOffset() {
method getExposureOffsetStepSize (line 91) | public double getExposureOffsetStepSize() {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java
class ExposurePointFeature (line 19) | public class ExposurePointFeature extends CameraFeature<Point> {
method ExposurePointFeature (line 31) | public ExposurePointFeature(
method setCameraBoundaries (line 42) | public void setCameraBoundaries(@NonNull Size cameraBoundaries) {
method getDebugName (line 47) | @Override
method getValue (line 52) | @Override
method setValue (line 57) | @Override
method checkIsSupported (line 64) | @Override
method updateBuilder (line 70) | @Override
method buildExposureRectangle (line 80) | private void buildExposureRectangle() {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/flash/FlashFeature.java
class FlashFeature (line 12) | public class FlashFeature extends CameraFeature<FlashMode> {
method FlashFeature (line 20) | public FlashFeature(CameraProperties cameraProperties) {
method getDebugName (line 24) | @Override
method getValue (line 29) | @Override
method setValue (line 34) | @Override
method checkIsSupported (line 39) | @Override
method updateBuilder (line 45) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/flash/FlashMode.java
type FlashMode (line 8) | public enum FlashMode {
method FlashMode (line 16) | FlashMode(String strValue) {
method getValueForString (line 29) | public static FlashMode getValueForString(String modeStr) {
method toString (line 36) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/focuspoint/FocusPointFeature.java
class FocusPointFeature (line 19) | public class FocusPointFeature extends CameraFeature<Point> {
method FocusPointFeature (line 31) | public FocusPointFeature(
method setCameraBoundaries (line 42) | public void setCameraBoundaries(@NonNull Size cameraBoundaries) {
method getDebugName (line 47) | @Override
method getValue (line 52) | @Override
method setValue (line 57) | @Override
method checkIsSupported (line 64) | @Override
method updateBuilder (line 70) | @Override
method buildFocusRectangle (line 80) | private void buildFocusRectangle() {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/fpsrange/FpsRangeFeature.java
class FpsRangeFeature (line 17) | public class FpsRangeFeature extends CameraFeature<Range<Integer>> {
method FpsRangeFeature (line 26) | public FpsRangeFeature(CameraProperties cameraProperties) {
method isPixel4A (line 54) | private boolean isPixel4A() {
method getDebugName (line 58) | @Override
method getValue (line 63) | @Override
method setValue (line 68) | @Override
method checkIsSupported (line 74) | @Override
method updateBuilder (line 79) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/noisereduction/NoiseReductionFeature.java
class NoiseReductionFeature (line 20) | public class NoiseReductionFeature extends CameraFeature<NoiseReductionM...
method NoiseReductionFeature (line 30) | public NoiseReductionFeature(CameraProperties cameraProperties) {
method getDebugName (line 44) | @Override
method getValue (line 49) | @Override
method setValue (line 54) | @Override
method checkIsSupported (line 59) | @Override
method updateBuilder (line 79) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/noisereduction/NoiseReductionMode.java
type NoiseReductionMode (line 8) | public enum NoiseReductionMode {
method NoiseReductionMode (line 17) | NoiseReductionMode(String strValue) {
method getValueForString (line 30) | public static NoiseReductionMode getValueForString(String modeStr) {
method toString (line 37) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/resolution/ResolutionFeature.java
class ResolutionFeature (line 25) | public class ResolutionFeature extends CameraFeature<ResolutionPreset> {
method ResolutionFeature (line 40) | public ResolutionFeature(
method getRecordingProfileLegacy (line 59) | public CamcorderProfile getRecordingProfileLegacy() {
method getRecordingProfile (line 63) | public EncoderProfiles getRecordingProfile() {
method getPreviewSize (line 72) | public Size getPreviewSize() {
method getCaptureSize (line 81) | public Size getCaptureSize() {
method getDebugName (line 85) | @Override
method getValue (line 90) | @Override
method setValue (line 95) | @Override
method checkIsSupported (line 101) | @Override
method updateBuilder (line 106) | @Override
method computeBestPreviewSize (line 111) | @VisibleForTesting
method getBestAvailableCamcorderProfileForResolutionPresetLegacy (line 147) | public static CamcorderProfile getBestAvailableCamcorderProfileForReso...
method getBestAvailableCamcorderProfileForResolutionPreset (line 190) | @TargetApi(Build.VERSION_CODES.S)
method configureResolution (line 236) | private void configureResolution(ResolutionPreset resolutionPreset, in...
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/resolution/ResolutionPreset.java
type ResolutionPreset (line 8) | public enum ResolutionPreset {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/sensororientation/DeviceOrientationManager.java
class DeviceOrientationManager (line 25) | public class DeviceOrientationManager {
method create (line 38) | public static DeviceOrientationManager create(
method DeviceOrientationManager (line 46) | private DeviceOrientationManager(
method start (line 69) | public void start() {
method stop (line 85) | public void stop() {
method getPhotoOrientation (line 101) | public int getPhotoOrientation() {
method getPhotoOrientation (line 115) | public int getPhotoOrientation(PlatformChannel.DeviceOrientation orien...
method getVideoOrientation (line 152) | public int getVideoOrientation() {
method getVideoOrientation (line 172) | public int getVideoOrientation(PlatformChannel.DeviceOrientation orien...
method getLastUIOrientation (line 203) | public PlatformChannel.DeviceOrientation getLastUIOrientation() {
method handleUIOrientationChange (line 213) | @VisibleForTesting
method handleOrientationChange (line 227) | @VisibleForTesting
method getUIOrientation (line 245) | @VisibleForTesting
method calculateSensorOrientation (line 277) | @VisibleForTesting
method getDeviceDefaultOrientation (line 308) | @VisibleForTesting
method getDisplay (line 330) | @SuppressWarnings("deprecation")
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/sensororientation/SensorOrientationFeature.java
class SensorOrientationFeature (line 18) | public class SensorOrientationFeature extends CameraFeature<Integer> {
method SensorOrientationFeature (line 32) | public SensorOrientationFeature(
method getDebugName (line 45) | @Override
method getValue (line 50) | @Override
method setValue (line 55) | @Override
method checkIsSupported (line 60) | @Override
method updateBuilder (line 65) | @Override
method getDeviceOrientationManager (line 75) | public DeviceOrientationManager getDeviceOrientationManager() {
method lockCaptureOrientation (line 85) | public void lockCaptureOrientation(PlatformChannel.DeviceOrientation o...
method unlockCaptureOrientation (line 93) | public void unlockCaptureOrientation() {
method getLockedCaptureOrientation (line 102) | public PlatformChannel.DeviceOrientation getLockedCaptureOrientation() {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/zoomlevel/ZoomLevelFeature.java
class ZoomLevelFeature (line 14) | public class ZoomLevelFeature extends CameraFeature<Float> {
method ZoomLevelFeature (line 27) | public ZoomLevelFeature(CameraProperties cameraProperties) {
method getDebugName (line 53) | @Override
method getValue (line 58) | @Override
method setValue (line 63) | @Override
method checkIsSupported (line 68) | @Override
method updateBuilder (line 73) | @Override
method getMinimumZoomLevel (line 98) | public float getMinimumZoomLevel() {
method getMaximumZoomLevel (line 107) | public float getMaximumZoomLevel() {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/zoomlevel/ZoomUtils.java
class ZoomUtils (line 15) | final class ZoomUtils {
method computeZoomRect (line 30) | static Rect computeZoomRect(
method computeZoomRatio (line 42) | static Float computeZoomRatio(float zoom, float minimumZoomLevel, floa...
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/media/MediaRecorderBuilder.java
class MediaRecorderBuilder (line 14) | public class MediaRecorderBuilder {
class MediaRecorderFactory (line 15) | @SuppressWarnings("deprecation")
method makeMediaRecorder (line 17) | MediaRecorder makeMediaRecorder() {
method MediaRecorderBuilder (line 30) | public MediaRecorderBuilder(
method MediaRecorderBuilder (line 35) | public MediaRecorderBuilder(
method MediaRecorderBuilder (line 40) | MediaRecorderBuilder(
method MediaRecorderBuilder (line 50) | MediaRecorderBuilder(
method setEnableAudio (line 60) | public MediaRecorderBuilder setEnableAudio(boolean enableAudio) {
method setMediaOrientation (line 65) | public MediaRecorderBuilder setMediaOrientation(int orientation) {
method build (line 70) | public MediaRecorder build() throws IOException, NullPointerException,...
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/CameraCaptureProperties.java
class CameraCaptureProperties (line 7) | public class CameraCaptureProperties {
method getLastLensAperture (line 18) | public Float getLastLensAperture() {
method setLastLensAperture (line 27) | public void setLastLensAperture(Float lastLensAperture) {
method getLastSensorExposureTime (line 36) | public Long getLastSensorExposureTime() {
method setLastSensorExposureTime (line 45) | public void setLastSensorExposureTime(Long lastSensorExposureTime) {
method getLastSensorSensitivity (line 54) | public Integer getLastSensorSensitivity() {
method setLastSensorSensitivity (line 64) | public void setLastSensorSensitivity(Integer lastSensorSensitivity) {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/CaptureTimeoutsWrapper.java
class CaptureTimeoutsWrapper (line 11) | public class CaptureTimeoutsWrapper {
method CaptureTimeoutsWrapper (line 23) | public CaptureTimeoutsWrapper(
method reset (line 30) | public void reset() {
method getPreCaptureFocusing (line 40) | public Timeout getPreCaptureFocusing() {
method getPreCaptureMetering (line 49) | public Timeout getPreCaptureMetering() {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/ExposureMode.java
type ExposureMode (line 8) | public enum ExposureMode {
method ExposureMode (line 14) | ExposureMode(String strValue) {
method getValueForString (line 18) | public static ExposureMode getValueForString(String modeStr) {
method toString (line 25) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/FlashMode.java
type FlashMode (line 8) | public enum FlashMode {
method FlashMode (line 16) | FlashMode(String strValue) {
method getValueForString (line 20) | public static FlashMode getValueForString(String modeStr) {
method toString (line 27) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/FocusMode.java
type FocusMode (line 8) | public enum FocusMode {
method FocusMode (line 14) | FocusMode(String strValue) {
method getValueForString (line 18) | public static FocusMode getValueForString(String modeStr) {
method toString (line 25) | @Override
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/ResolutionPreset.java
type ResolutionPreset (line 8) | public enum ResolutionPreset {
FILE: packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/Timeout.java
class Timeout (line 19) | public class Timeout {
method create (line 33) | public static Timeout create(long timeoutMs) {
method Timeout (line 42) | private Timeout(long timeoutMs) {
method getIsExpired (line 48) | public boolean getIsExpired() {
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraCaptureCallbackStatesTest.java
class CameraCaptureCallbackStatesTest (line 30) | public class CameraCaptureCallbackStatesTest extends TestCase {
method suite (line 49) | public static TestSuite suite() {
method CameraCaptureCallbackStatesTest (line 60) | protected CameraCaptureCallbackStatesTest(
method CameraCaptureCallbackStatesTest (line 65) | protected CameraCaptureCallbackStatesTest(
method setUp (line 75) | @Override
method tearDown (line 105) | @Override
method runTest (line 115) | @Override
method setUpPreviewStateTest (line 135) | private static void setUpPreviewStateTest(TestSuite suite) {
method setUpWaitingFocusTests (line 152) | private static void setUpWaitingFocusTests(TestSuite suite) {
method setUpWaitingPreCaptureStartTests (line 275) | private static void setUpWaitingPreCaptureStartTests(TestSuite suite) {
method setUpWaitingPreCaptureDoneTests (line 336) | private static void setUpWaitingPreCaptureDoneTests(TestSuite suite) {
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraCaptureCallbackTest.java
class CameraCaptureCallbackTest (line 27) | @RunWith(RobolectricTestRunner.class)
method setUp (line 33) | @Before
method onCaptureProgressed_doesNotUpdateCameraCaptureProperties (line 44) | @Test
method onCaptureCompleted_updatesCameraCaptureProperties (line 57) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraPermissionsTest.java
class CameraPermissionsTest (line 17) | public class CameraPermissionsTest {
method listener_respondsOnce (line 18) | @Test
method callback_respondsWithCameraAccessDenied (line 32) | @Test
method callback_respondsWithAudioAccessDenied (line 45) | @Test
method callback_doesNotRespond (line 59) | @Test
method callback_respondsWithCameraAccessDeniedWhenEmptyResult (line 76) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraPropertiesImplTest.java
class CameraPropertiesImplTest (line 26) | public class CameraPropertiesImplTest {
method before (line 33) | @Before
method ctor_shouldReturnValidInstance (line 43) | @Test
method getControlAutoExposureAvailableTargetFpsRangesTest (line 49) | @Test
method getControlAutoExposureCompensationRangeTest (line 65) | @Test
method getControlAutoExposureCompensationStep_shouldReturnDoubleWhenRationalIsNotNull (line 78) | @Test
method getControlAutoExposureCompensationStep_shouldReturnZeroWhenRationalIsNull (line 93) | @Test
method getControlAutoFocusAvailableModesTest (line 106) | @Test
method getControlMaxRegionsAutoExposureTest (line 118) | @Test
method getControlMaxRegionsAutoFocusTest (line 130) | @Test
method getDistortionCorrectionAvailableModesTest (line 142) | @Test
method getFlashInfoAvailableTest (line 155) | @Test
method getLensFacingTest (line 167) | @Test
method getLensInfoMinimumFocusDistanceTest (line 178) | @Test
method getScalerAvailableMaxDigitalZoomTest (line 191) | @Test
method getScalerGetScalerMinZoomRatioTest (line 204) | @Test
method getScalerGetScalerMaxZoomRatioTest (line 216) | @Test
method getSensorInfoActiveArraySizeTest (line 228) | @Test
method getSensorInfoPixelArraySizeTest (line 240) | @Test
method getSensorInfoPreCorrectionActiveArraySize (line 252) | @Test
method getSensorOrientationTest (line 266) | @Test
method getHardwareLevelTest (line 278) | @Test
method getAvailableNoiseReductionModesTest (line 290) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraRegionUtils_convertPointToMeteringRectangleTest.java
class CameraRegionUtils_convertPointToMeteringRectangleTest (line 23) | public class CameraRegionUtils_convertPointToMeteringRectangleTest {
method setUp (line 27) | @Before
method tearDown (line 73) | @After
method convertPointToMeteringRectangle_shouldReturnValidMeteringRectangleForCenterCoord (line 78) | @Test
method convertPointToMeteringRectangle_shouldReturnValidMeteringRectangleForTopLeftCoord (line 86) | @Test
method convertPointToMeteringRectangle_ShouldReturnValidMeteringRectangleForTopRightCoord (line 94) | @Test
method convertPointToMeteringRectangle_shouldReturnValidMeteringRectangleForBottomLeftCoord (line 102) | @Test
method convertPointToMeteringRectangle_shouldReturnValidMeteringRectangleForBottomRightCoord (line 111) | @Test
method convertPointToMeteringRectangle_shouldThrowForXUpperBound (line 120) | @Test(expected = AssertionError.class)
method convertPointToMeteringRectangle_shouldThrowForXLowerBound (line 126) | @Test(expected = AssertionError.class)
method convertPointToMeteringRectangle_shouldThrowForYUpperBound (line 132) | @Test(expected = AssertionError.class)
method convertPointToMeteringRectangle_shouldThrowForYLowerBound (line 138) | @Test(expected = AssertionError.class)
method convertPointToMeteringRectangle_shouldRotateMeteringRectangleAccordingToUiOrientationForPortraitUp (line 144) | @Test()
method convertPointToMeteringRectangle_shouldRotateMeteringRectangleAccordingToUiOrientationForPortraitDown (line 153) | @Test()
method convertPointToMeteringRectangle_shouldRotateMeteringRectangleAccordingToUiOrientationForLandscapeLeft (line 162) | @Test()
method convertPointToMeteringRectangle_shouldRotateMeteringRectangleAccordingToUiOrientationForLandscapeRight (line 171) | @Test()
method convertPointToMeteringRectangle_shouldThrowFor0WidthBoundary (line 180) | @Test(expected = AssertionError.class)
method convertPointToMeteringRectangle_shouldThrowFor0HeightBoundary (line 189) | @Test(expected = AssertionError.class)
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraRegionUtils_getCameraBoundariesTest.java
class CameraRegionUtils_getCameraBoundariesTest (line 24) | public class CameraRegionUtils_getCameraBoundariesTest {
method setUp (line 28) | @Before
method getCameraBoundaries_shouldReturnSensorInfoPixelArraySizeWhenRunningPreAndroidP (line 35) | @Test
method getCameraBoundaries_shouldReturnSensorInfoPixelArraySizeWhenDistortionCorrectionIsNull (line 54) | @Test
method getCameraBoundaries_shouldReturnSensorInfoPixelArraySizeWhenDistortionCorrectionIsOff (line 76) | @Test
method getCameraBoundaries_shouldReturnInfoPreCorrectionActiveArraySizeWhenDistortionCorrectionModeIsSetToNull (line 99) | @Test
method getCameraBoundaries_shouldReturnInfoPreCorrectionActiveArraySizeWhenDistortionCorrectionModeIsSetToOff (line 146) | @Test
method getCameraBoundaries_shouldReturnSensorInfoActiveArraySizeWhenDistortionCorrectionModeIsSet (line 195) | @Test
method updateSdkVersion (line 244) | private static void updateSdkVersion(int version) {
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraTest.java
class FakeCameraDeviceWrapper (line 68) | class FakeCameraDeviceWrapper implements CameraDeviceWrapper {
method FakeCameraDeviceWrapper (line 71) | FakeCameraDeviceWrapper(List<CaptureRequest.Builder> captureRequests) {
method createCaptureRequest (line 75) | @NonNull
method createCaptureSession (line 81) | @Override
method createCaptureSession (line 84) | @Override
method close (line 90) | @Override
class CameraTest (line 94) | public class CameraTest {
method before (line 106) | @Before
method after (line 145) | @After
method shouldNotImplementLifecycleObserverInterface (line 152) | @Test
method shouldCreateCameraPluginAndSetAllFeatures (line 159) | @Test
method getDeviceOrientationManager (line 202) | @Test
method getExposureOffsetStepSize (line 217) | @Test
method getMaxExposureOffset (line 231) | @Test
method getMinExposureOffset (line 245) | @Test
method getMaxZoomLevel (line 259) | @Test
method getMinZoomLevel (line 273) | @Test
method setExposureMode_shouldUpdateExposureLockFeature (line 287) | @Test
method setExposureMode_shouldUpdateBuilder (line 301) | @Test
method setExposureMode_shouldCallErrorOnResultOnCameraAccessException (line 313) | @Test
method setExposurePoint_shouldUpdateExposurePointFeature (line 328) | @Test
method setExposurePoint_shouldUpdateBuilder (line 344) | @Test
method setExposurePoint_shouldCallErrorOnResultOnCameraAccessException (line 358) | @Test
method setFlashMode_shouldUpdateFlashFeature (line 373) | @Test
method setFlashMode_shouldUpdateBuilder (line 387) | @Test
method setFlashMode_shouldCallErrorOnResultOnCameraAccessException (line 399) | @Test
method setFocusPoint_shouldUpdateFocusPointFeature (line 413) | @Test
method setFocusPoint_shouldUpdateBuilder (line 432) | @Test
method setFocusPoint_shouldCallErrorOnResultOnCameraAccessException (line 449) | @Test
method setZoomLevel_shouldUpdateZoomLevelFeature (line 466) | @Test
method setZoomLevel_shouldUpdateBuilder (line 484) | @Test
method setZoomLevel_shouldCallErrorOnResultOnCameraAccessException (line 500) | @Test
method pauseVideoRecording_shouldSendNullResultWhenNotRecording (line 520) | @Test
method pauseVideoRecording_shouldCallPauseWhenRecordingAndOnAPIN (line 531) | @Test
method pauseVideoRecording_shouldSendVideoRecordingFailedErrorWhenVersionCodeSmallerThenN (line 546) | @Test
method pauseVideoRecording_shouldSendVideoRecordingFailedErrorWhenMediaRecorderPauseThrowsIllegalStateException (line 559) | @Test
method resumeVideoRecording_shouldSendNullResultWhenNotRecording (line 579) | @Test
method resumeVideoRecording_shouldCallPauseWhenRecordingAndOnAPIN (line 590) | @Test
method resumeVideoRecording_shouldSendVideoRecordingFailedErrorWhenVersionCodeSmallerThanN (line 605) | @Test
method resumeVideoRecording_shouldSendVideoRecordingFailedErrorWhenMediaRecorderPauseThrowsIllegalStateException (line 620) | @Test
method setFocusMode_shouldUpdateAutoFocusFeature (line 640) | @Test
method setFocusMode_shouldUpdateBuilder (line 653) | @Test
method setFocusMode_shouldUnlockAutoFocusForAutoMode (line 664) | @Test
method setFocusMode_shouldSkipUnlockAutoFocusWhenNullCaptureSession (line 673) | @Test
method setFocusMode_shouldSendErrorEventOnUnlockAutoFocusCameraAccessException (line 683) | @Test
method setFocusMode_shouldLockAutoFocusForLockedMode (line 692) | @Test
method setFocusMode_shouldSkipLockAutoFocusWhenNullCaptureSession (line 701) | @Test
method setFocusMode_shouldSendErrorEventOnLockAutoFocusCameraAccessException (line 709) | @Test
method setFocusMode_shouldCallErrorOnResultOnCameraAccessException (line 718) | @Test
method setExposureOffset_shouldUpdateExposureOffsetFeature (line 732) | @Test
method setExposureOffset_shouldAndUpdateBuilder (line 747) | @Test
method setExposureOffset_shouldCallErrorOnResultOnCameraAccessException (line 758) | @Test
method lockCaptureOrientation_shouldLockCaptureOrientation (line 772) | @Test
method unlockCaptureOrientation_shouldUnlockCaptureOrientation (line 785) | @Test
method pausePreview_shouldPausePreview (line 797) | @Test
method resumePreview_shouldResumePreview (line 805) | @Test
method resumePreview_shouldSendErrorEventOnCameraAccessException (line 813) | @Test
method startBackgroundThread_shouldStartNewThread (line 824) | @Test
method startBackgroundThread_shouldNotStartNewThreadWhenAlreadyCreated (line 832) | @Test
method stopBackgroundThread_quitsSafely (line 840) | @Test
method onConverge_shouldTakePictureWithoutAbortingSession (line 849) | @Test
method createCaptureSession_doesNotCloseCaptureSession (line 872) | @Test
method close_doesCloseCaptureSessionWhenCameraDeviceNull (line 899) | @Test
method close_doesNotCloseCaptureSessionWhenCameraDeviceNonNull (line 906) | @Test
class TestCameraFeatureFactory (line 918) | private static class TestCameraFeatureFactory implements CameraFeature...
method TestCameraFeatureFactory (line 931) | public TestCameraFeatureFactory() {
method createAutoFocusFeature (line 945) | @Override
method createExposureLockFeature (line 951) | @Override
method createExposureOffsetFeature (line 957) | @Override
method createFlashFeature (line 963) | @Override
method createResolutionFeature (line 968) | @Override
method createFocusPointFeature (line 976) | @Override
method createFpsRangeFeature (line 983) | @Override
method createSensorOrientationFeature (line 988) | @Override
method createZoomLevelFeature (line 996) | @Override
method createExposurePointFeature (line 1001) | @Override
method createNoiseReductionFeature (line 1008) | @Override
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraTest_getRecordingProfileTest.java
class CameraTest_getRecordingProfileTest (line 42) | @RunWith(RobolectricTestRunner.class)
method before (line 56) | @Before
method getRecordingProfileLegacy (line 79) | @Config(maxSdk = 30)
method getRecordingProfile (line 94) | @Config(minSdk = 31)
class TestCameraFeatureFactory (line 109) | private static class TestCameraFeatureFactory implements CameraFeature...
method TestCameraFeatureFactory (line 122) | public TestCameraFeatureFactory() {
method createAutoFocusFeature (line 136) | @Override
method createExposureLockFeature (line 142) | @Override
method createExposureOffsetFeature (line 148) | @Override
method createFlashFeature (line 154) | @Override
method createResolutionFeature (line 159) | @Override
method createFocusPointFeature (line 167) | @Override
method createFpsRangeFeature (line 174) | @Override
method createSensorOrientationFeature (line 179) | @Override
method createZoomLevelFeature (line 187) | @Override
method createExposurePointFeature (line 192) | @Override
method createNoiseReductionFeature (line 199) | @Override
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraUtilsTest.java
class CameraUtilsTest (line 24) | public class CameraUtilsTest {
method serializeDeviceOrientation_serializesCorrectly (line 26) | @Test
method serializeDeviceOrientation_throws_for_null (line 42) | @Test(expected = UnsupportedOperationException.class)
method deserializeDeviceOrientation_deserializesCorrectly (line 47) | @Test
method deserializeDeviceOrientation_throwsForNull (line 63) | @Test(expected = UnsupportedOperationException.class)
method getAvailableCameras_retrievesValidCameras (line 68) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/DartMessengerTest.java
class DartMessengerTest (line 29) | public class DartMessengerTest {
class FakeBinaryMessenger (line 31) | private static class FakeBinaryMessenger implements BinaryMessenger {
method send (line 34) | @Override
method send (line 39) | @Override
method setMessageHandler (line 44) | @Override
method getMessages (line 47) | List<ByteBuffer> getMessages() {
method setUp (line 56) | @Before
method sendCameraErrorEvent_includesErrorDescriptions (line 63) | @Test
method sendCameraInitializedEvent_includesPreviewSize (line 76) | @Test
method sendCameraClosingEvent (line 93) | @Test
method sendDeviceOrientationChangedEvent (line 105) | @Test
method createPostHandlerAnswer (line 117) | private static Answer<Boolean> createPostHandlerAnswer() {
method decodeSentMessage (line 130) | private MethodCall decodeSentMessage(ByteBuffer sentMessage) {
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/ImageSaverTests.java
class ImageSaverTests (line 28) | public class ImageSaverTests {
method setup (line 39) | @Before
method teardown (line 77) | @After
method runWritesBytesToFileAndFinishesWithPath (line 82) | @Test
method runCallsErrorOnWriteIoexception (line 91) | @Test
method runCallsErrorOnCloseIoexception (line 99) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/MethodCallHandlerImplTest.java
class MethodCallHandlerImplTest (line 24) | public class MethodCallHandlerImplTest {
method setUp (line 30) | @Before
method shouldNotImplementLifecycleObserverInterface (line 44) | @Test
method onMethodCall_pausePreview_shouldPausePreviewAndSendSuccessResult (line 51) | @Test
method onMethodCall_pausePreview_shouldSendErrorResultOnCameraAccessException (line 60) | @Test
method onMethodCall_resumePreview_shouldResumePreviewAndSendSuccessResult (line 70) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/autofocus/AutoFocusFeatureTest.java
class AutoFocusFeatureTest (line 22) | public class AutoFocusFeatureTest {
method getDebugName_shouldReturnTheNameOfTheFeature (line 30) | @Test
method getValue_shouldReturnAutoIfNotSet (line 38) | @Test
method getValue_shouldEchoTheSetValue (line 46) | @Test
method checkIsSupported_shouldReturnFalseWhenMinimumFocusDistanceIsZero (line 58) | @Test
method checkIsSupported_shouldReturnFalseWhenMinimumFocusDistanceIsNull (line 69) | @Test
method checkIsSupport_shouldReturnFalseWhenNoFocusModesAreAvailable (line 80) | @Test
method checkIsSupport_shouldReturnFalseWhenOnlyFocusOffIsAvailable (line 91) | @Test
method checkIsSupport_shouldReturnTrueWhenOnlyMultipleFocusModesAreAvailable (line 102) | @Test
method updateBuilderShouldReturnWhenCheckIsSupportedIsFalse (line 113) | @Test
method updateBuilder_shouldSetControlModeToAutoWhenFocusIsLocked (line 127) | @Test
method updateBuilder_shouldSetControlModeToContinuousVideoWhenFocusIsAutoAndRecordingVideo (line 143) | @Test
method updateBuilder_shouldSetControlModeToContinuousVideoWhenFocusIsAutoAndNotRecordingVideo (line 160) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/autofocus/FocusModeTest.java
class FocusModeTest (line 11) | public class FocusModeTest {
method getValueForString_returnsCorrectValues (line 13) | @Test
method getValueForString_returnsNullForNonexistantValue (line 23) | @Test
method toString_returnsCorrectValue (line 29) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurelock/ExposureLockFeatureTest.java
class ExposureLockFeatureTest (line 17) | public class ExposureLockFeatureTest {
method getDebugName_shouldReturnTheNameOfTheFeature (line 18) | @Test
method getValue_shouldReturnAutoIfNotSet (line 26) | @Test
method getValue_shouldEchoTheSetValue (line 34) | @Test
method checkIsSupported_shouldReturnTrue (line 46) | @Test
method updateBuilder_shouldSetControlAeLockToFalseWhenAutoExposureIsSetToAuto (line 54) | @Test
method updateBuilder_shouldSetControlAeLockToFalseWhenAutoExposureIsSetToLocked (line 66) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurelock/ExposureModeTest.java
class ExposureModeTest (line 11) | public class ExposureModeTest {
method getValueForString_returnsCorrectValues (line 13) | @Test
method getValueForString_returnsNullForNonexistantValue (line 25) | @Test
method toString_returnsCorrectValue (line 31) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposureoffset/ExposureOffsetFeatureTest.java
class ExposureOffsetFeatureTest (line 18) | public class ExposureOffsetFeatureTest {
method getDebugName_shouldReturnTheNameOfTheFeature (line 19) | @Test
method getValue_shouldReturnZeroIfNotSet (line 27) | @Test
method getValue_shouldEchoTheSetValue (line 37) | @Test
method getExposureOffsetStepSize_shouldReturnTheControlExposureCompensationStepValue (line 51) | @Test
method checkIsSupported_shouldReturnTrue (line 61) | @Test
method updateBuilder_shouldSetControlAeExposureCompensationToOffset (line 69) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java
class ExposurePointFeatureTest (line 33) | public class ExposurePointFeatureTest {
method setUp (line 39) | @Before
method getDebugName_shouldReturnTheNameOfTheFeature (line 52) | @Test
method getValue_shouldReturnNullIfNotSet (line 61) | @Test
method getValue_shouldEchoTheSetValue (line 69) | @Test
method setValue_shouldResetPointWhenXCoordIsNull (line 83) | @Test
method setValue_shouldResetPointWhenYCoordIsNull (line 95) | @Test
method setValue_shouldSetPointWhenValidCoordsAreSupplied (line 107) | @Test
method setValue_shouldDetermineMeteringRectangleWhenValidBoundariesAndCoordsAreSupplied (line 120) | @Test
method setValue_shouldThrowAssertionErrorWhenNoValidBoundariesAreSet (line 145) | @Test(expected = AssertionError.class)
method setValue_shouldNotDetermineMeteringRectangleWhenNullCoordsAreSet (line 158) | @Test
method setCameraBoundaries_shouldDetermineMeteringRectangleWhenValidBoundariesAndCoordsAreSupplied (line 178) | @Test
method checkIsSupported_shouldReturnFalseWhenMaxRegionsIsNull (line 205) | @Test
method checkIsSupported_shouldReturnFalseWhenMaxRegionsIsZero (line 217) | @Test
method checkIsSupported_shouldReturnTrueWhenMaxRegionsIsBiggerThenZero (line 229) | @Test
method updateBuilder_shouldReturnWhenCheckIsSupportedIsFalse (line 241) | @Test
method updateBuilder_shouldSetMeteringRectangleWhenValidBoundariesAndCoordsAreSupplied (line 255) | @Test
method updateBuilder_shouldNotSetMeteringRectangleWhenNoValidBoundariesAreSupplied (line 286) | @Test
method updateBuilder_shouldNotSetMeteringRectangleWhenNoValidCoordsAreSupplied (line 299) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/flash/FlashFeatureTest.java
class FlashFeatureTest (line 21) | public class FlashFeatureTest {
method getDebugName_shouldReturnTheNameOfTheFeature (line 22) | @Test
method getValue_shouldReturnAutoIfNotSet (line 30) | @Test
method getValue_shouldEchoTheSetValue (line 38) | @Test
method checkIsSupported_shouldReturnFalseWhenFlashInfoAvailableIsNull (line 50) | @Test
method checkIsSupported_shouldReturnFalseWhenFlashInfoAvailableIsFalse (line 60) | @Test
method checkIsSupported_shouldReturnTrueWhenFlashInfoAvailableIsTrue (line 70) | @Test
method updateBuilder_shouldReturnWhenCheckIsSupportedIsFalse (line 80) | @Test
method updateBuilder_shouldSetAeModeAndFlashModeWhenFlashModeIsOff (line 93) | @Test
method updateBuilder_shouldSetAeModeAndFlashModeWhenFlashModeIsAlways (line 109) | @Test
method updateBuilder_shouldSetAeModeAndFlashModeWhenFlashModeIsTorch (line 125) | @Test
method updateBuilder_shouldSetAeModeAndFlashModeWhenFlashModeIsAuto (line 141) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/focuspoint/FocusPointFeatureTest.java
class FocusPointFeatureTest (line 33) | public class FocusPointFeatureTest {
method setUp (line 39) | @Before
method getDebugName_shouldReturnTheNameOfTheFeature (line 52) | @Test
method getValue_shouldReturnNullIfNotSet (line 61) | @Test
method getValue_shouldEchoTheSetValue (line 70) | @Test
method setValue_shouldResetPointWhenXCoordIsNull (line 84) | @Test
method setValue_shouldResetPointWhenYCoordIsNull (line 96) | @Test
method setValue_shouldSetPointWhenValidCoordsAreSupplied (line 108) | @Test
method setValue_shouldDetermineMeteringRectangleWhenValidBoundariesAndCoordsAreSupplied (line 121) | @Test
method setValue_shouldThrowAssertionErrorWhenNoValidBoundariesAreSet (line 146) | @Test(expected = AssertionError.class)
method setValue_shouldNotDetermineMeteringRectangleWhenNullCoordsAreSet (line 159) | @Test
method setCameraBoundaries_shouldDetermineMeteringRectangleWhenValidBoundariesAndCoordsAreSupplied (line 179) | @Test
method checkIsSupported_shouldReturnFalseWhenMaxRegionsIsNull (line 206) | @Test
method checkIsSupported_shouldReturnFalseWhenMaxRegionsIsZero (line 218) | @Test
method checkIsSupported_shouldReturnTrueWhenMaxRegionsIsBiggerThenZero (line 230) | @Test
method updateBuilder_shouldReturnWhenCheckIsSupportedIsFalse (line 242) | @Test
method updateBuilder_shouldSetMeteringRectangleWhenValidBoundariesAndCoordsAreSupplied (line 256) | @Test
method updateBuilder_shouldNotSetMeteringRectangleWhenNoValidBoundariesAreSupplied (line 287) | @Test
method updateBuilder_shouldNotSetMeteringRectangleWhenNoValidCoordsAreSupplied (line 301) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/fpsrange/FpsRangeFeaturePixel4aTest.java
class FpsRangeFeaturePixel4aTest (line 18) | @RunWith(RobolectricTestRunner.class)
method ctor_shouldInitializeFpsRangeWith30WhenDeviceIsPixel4a (line 20) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/fpsrange/FpsRangeFeatureTest.java
class FpsRangeFeatureTest (line 24) | public class FpsRangeFeatureTest {
method before (line 25) | @Before
method after (line 31) | @After
method ctor_shouldInitializeFpsRangeWithHighestUpperValueFromRangeArray (line 37) | @Test
method getDebugName_shouldReturnTheNameOfTheFeature (line 43) | @Test
method getValue_shouldReturnHighestUpperRangeIfNotSet (line 49) | @Test
method getValue_shouldEchoTheSetValue (line 57) | @Test
method checkIsSupported_shouldReturnTrue (line 70) | @Test
method updateBuilder_shouldSetAeTargetFpsRange (line 76) | @Test
method createTestInstance (line 87) | private static FpsRangeFeature createTestInstance() {
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/noisereduction/NoiseReductionFeatureTest.java
class NoiseReductionFeatureTest (line 25) | public class NoiseReductionFeatureTest {
method before (line 26) | @Before
method after (line 33) | @After
method getDebugName_shouldReturnTheNameOfTheFeature (line 39) | @Test
method getValue_shouldReturnFastIfNotSet (line 47) | @Test
method getValue_shouldEchoTheSetValue (line 55) | @Test
method checkIsSupported_shouldReturnFalseWhenAvailableNoiseReductionModesIsNull (line 67) | @Test
method checkIsSupported_shouldReturnFalseWhenAvailableNoiseReductionModesReturnsAnEmptyArray (line 77) | @Test
method checkIsSupported_shouldReturnTrueWhenAvailableNoiseReductionModesReturnsAtLeastOneItem (line 88) | @Test
method updateBuilder_shouldReturnWhenCheckIsSupportedIsFalse (line 99) | @Test
method updateBuilder_shouldSetNoiseReductionModeOffWhenOff (line 112) | @Test
method updateBuilder_shouldSetNoiseReductionModeFastWhenFast (line 117) | @Test
method updateBuilder_shouldSetNoiseReductionModeHighQualityWhenHighQuality (line 122) | @Test
method updateBuilder_shouldSetNoiseReductionModeMinimalWhenMinimal (line 128) | @Test
method updateBuilder_shouldSetNoiseReductionModeZeroShutterLagWhenZeroShutterLag (line 133) | @Test
method testUpdateBuilderWith (line 139) | private static void testUpdateBuilderWith(NoiseReductionMode mode, int...
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/resolution/ResolutionFeatureTest.java
class ResolutionFeatureTest (line 32) | @RunWith(RobolectricTestRunner.class)
method beforeLegacy (line 39) | @Before
method before (line 91) | public void before() {
method after (line 124) | @After
method getDebugName_shouldReturnTheNameOfTheFeature (line 130) | @Test
method getValue_shouldReturnInitialValueWhenNotSet (line 139) | @Test
method getValue_shouldEchoSetValue (line 148) | @Test
method checkIsSupport_returnsTrue (line 159) | @Test
method getBestAvailableCamcorderProfileForResolutionPreset_shouldFallThroughLegacy (line 168) | @Config(maxSdk = 30)
method getBestAvailableCamcorderProfileForResolutionPreset_shouldFallThrough (line 200) | @Config(minSdk = 31)
method computeBestPreviewSize_shouldUse720PWhenResolutionPresetMaxLegacy (line 231) | @Config(maxSdk = 30)
method computeBestPreviewSize_shouldUse720PWhenResolutionPresetMax (line 240) | @Config(minSdk = 31)
method computeBestPreviewSize_shouldUse720PWhenResolutionPresetUltraHighLegacy (line 249) | @Config(maxSdk = 30)
method computeBestPreviewSize_shouldUse720PWhenResolutionPresetUltraHigh (line 258) | @Config(minSdk = 31)
method computeBestPreviewSize_shouldUse720PWhenResolutionPresetVeryHighLegacy (line 267) | @Config(maxSdk = 30)
method computeBestPreviewSize_shouldUse720PWhenResolutionPresetVeryHigh (line 276) | @Config(minSdk = 31)
method computeBestPreviewSize_shouldUse720PWhenResolutionPresetHighLegacy (line 286) | @Config(maxSdk = 30)
method computeBestPreviewSize_shouldUse720PWhenResolutionPresetHigh (line 295) | @Config(minSdk = 31)
method computeBestPreviewSize_shouldUse480PWhenResolutionPresetMediumLegacy (line 304) | @Config(maxSdk = 30)
method computeBestPreviewSize_shouldUse480PWhenResolutionPresetMedium (line 313) | @Config(minSdk = 31)
method computeBestPreviewSize_shouldUseQVGAWhenResolutionPresetLowLegacy (line 322) | @Config(maxSdk = 30)
method computeBestPreviewSize_shouldUseQVGAWhenResolutionPresetLow (line 331) | @Config(minSdk = 31)
method computeBestPreviewSize_shouldUseLegacyBehaviorWhenEncoderProfilesNull (line 340) | @Config(minSdk = 31)
method resolutionFeatureShouldUseLegacyBehaviorWhenEncoderProfilesNull (line 386) | @Config(minSdk = 31)
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/sensororientation/DeviceOrientationManagerTest.java
class DeviceOrientationManagerTest (line 31) | public class DeviceOrientationManagerTest {
method before (line 38) | @Before
method getVideoOrientation_whenNaturalScreenOrientationEqualsPortraitUp (line 53) | @Test
method getVideoOrientation_whenNaturalScreenOrientationEqualsLandscapeLeft (line 70) | @Test
method getVideoOrientation_fallbackToPortraitSensorOrientationWhenOrientationIsNull (line 89) | @Test
method getVideoOrientation_fallbackToLandscapeSensorOrientationWhenOrientationIsNull (line 98) | @Test
method getPhotoOrientation_whenNaturalScreenOrientationEqualsPortraitUp (line 110) | @Test
method getPhotoOrientation_whenNaturalScreenOrientationEqualsLandscapeLeft (line 127) | @Test
method getPhotoOrientation_shouldFallbackToCurrentOrientationWhenOrientationIsNull (line 146) | @Test
method handleUIOrientationChange_shouldSendMessageWhenSensorAccessIsAllowed (line 155) | @Test
method handleOrientationChange_shouldSendMessageWhenOrientationIsUpdated (line 172) | @Test
method handleOrientationChange_shouldNotSendMessageWhenOrientationIsNotUpdated (line 183) | @Test
method getUIOrientation (line 194) | @Test
method getDeviceDefaultOrientation (line 242) | @Test
method calculateSensorOrientation (line 277) | @Test
method setUpUIOrientationMocks (line 296) | private void setUpUIOrientationMocks(int orientation, int rotation) {
method getDisplayTest (line 307) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/sensororientation/SensorOrientationFeatureTest.java
class SensorOrientationFeatureTest (line 26) | public class SensorOrientationFeatureTest {
method before (line 33) | @Before
method after (line 49) | @After
method ctor_shouldStartDeviceOrientationManager (line 54) | @Test
method getDebugName_shouldReturnTheNameOfTheFeature (line 62) | @Test
method getValue_shouldReturnNullIfNotSet (line 70) | @Test
method getValue_shouldEchoSetValue (line 78) | @Test
method checkIsSupport_returnsTrue (line 88) | @Test
method getDeviceOrientationManager_shouldReturnInitializedDartOrientationManagerInstance (line 96) | @Test
method lockCaptureOrientation_shouldLockToSpecifiedOrientation (line 105) | @Test
method unlockCaptureOrientation_shouldSetLockToNull (line 116) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/zoomlevel/ZoomLevelFeatureTest.java
class ZoomLevelFeatureTest (line 30) | public class ZoomLevelFeatureTest {
method before (line 37) | @Before
method after (line 50) | @After
method ctor_whenParametersAreValid (line 55) | @Test
method ctor_whenSensorSizeIsNull (line 68) | @Test
method ctor_whenMaxZoomIsNull (line 82) | @Test
method ctor_whenMaxZoomIsSmallerThenDefaultZoomFactor (line 96) | @Test
method getDebugName_shouldReturnTheNameOfTheFeature (line 110) | @Test
method getValue_shouldReturnNullIfNotSet (line 117) | @Test
method getValue_shouldEchoSetValue (line 124) | @Test
method checkIsSupport_returnsFalseByDefault (line 133) | @Test
method updateBuilder_shouldSetScalarCropRegionWhenCheckIsSupportIsTrue (line 140) | @Test
method updateBuilder_shouldControlZoomRatioWhenCheckIsSupportIsTrue (line 153) | @Test
method getMinimumZoomLevel (line 169) | @Test
method getMaximumZoomLevel (line 176) | @Test
method checkZoomLevelFeature_callsMaxDigitalZoomOnAndroidQ (line 186) | @Test
method checkZoomLevelFeature_callsScalarMaxZoomRatioOnAndroidR (line 199) | @Test
method setSdkVersion (line 211) | static void setSdkVersion(int sdkVersion) throws Exception {
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/zoomlevel/ZoomUtilsTest.java
class ZoomUtilsTest (line 15) | @RunWith(RobolectricTestRunner.class)
method setZoomRect_whenSensorSizeEqualsZeroShouldReturnCropRegionOfZero (line 17) | @Test
method setZoomRect_whenSensorSizeIsValidShouldReturnCropRegion (line 29) | @Test
method setZoomRect_whenZoomIsGreaterThenMaxZoomClampToMaxZoom (line 41) | @Test
method setZoomRect_whenZoomIsSmallerThenMinZoomClampToMinZoom (line 53) | @Test
method setZoomRatio_whenNewZoomGreaterThanMaxZoomClampToMaxZoom (line 65) | @Test
method setZoomRatio_whenNewZoomLesserThanMinZoomClampToMinZoom (line 72) | @Test
method setZoomRatio_whenNewZoomValidReturnNewZoom (line 79) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/media/MediaRecorderBuilderTest.java
class MediaRecorderBuilderTest (line 22) | @RunWith(RobolectricTestRunner.class)
method ctor_testLegacy (line 24) | @Config(maxSdk = 30)
method ctor_test (line 34) | @Config(minSdk = 31)
method build_shouldSetValuesInCorrectOrderWhenAudioIsDisabledLegacy (line 43) | @Config(maxSdk = 30)
method build_shouldSetValuesInCorrectOrderWhenAudioIsDisabled (line 76) | @Config(minSdk = 31)
method build_shouldThrowExceptionWithoutVideoOrAudioProfiles (line 114) | @Config(minSdk = 31)
method build_shouldSetValuesInCorrectOrderWhenAudioIsEnabledLegacy (line 133) | @Config(maxSdk = 30)
method build_shouldSetValuesInCorrectOrderWhenAudioIsEnabled (line 170) | @Config(minSdk = 31)
method getEmptyCamcorderProfile (line 213) | private CamcorderProfile getEmptyCamcorderProfile() {
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/types/ExposureModeTest.java
class ExposureModeTest (line 11) | public class ExposureModeTest {
method getValueForString_returnsCorrectValues (line 13) | @Test
method getValueForString_returnsNullForNonexistantValue (line 25) | @Test
method toString_returnsCorrectValue (line 31) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/types/FlashModeTest.java
class FlashModeTest (line 11) | public class FlashModeTest {
method getValueForString_returnsCorrectValues (line 13) | @Test
method getValueForString_returnsNullForNonexistantValue (line 29) | @Test
method toString_returnsCorrectValue (line 35) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/types/FocusModeTest.java
class FocusModeTest (line 11) | public class FocusModeTest {
method getValueForString_returnsCorrectValues (line 13) | @Test
method getValueForString_returnsNullForNonexistantValue (line 23) | @Test
method toString_returnsCorrectValue (line 29) | @Test
FILE: packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/utils/TestUtils.java
class TestUtils (line 11) | public class TestUtils {
method setFinalStatic (line 12) | public static <T> void setFinalStatic(Class<T> classToModify, String f...
method setPrivateField (line 27) | public static <T> void setPrivateField(T instance, String fieldName, O...
method getPrivateField (line 37) | public static <T> Object getPrivateField(T instance, String fieldName) {
FILE: packages/camera/camera_android/example/android/app/src/androidTest/java/io/flutter/plugins/cameraexample/FlutterActivityTest.java
class FlutterActivityTest (line 14) | @DartIntegrationTest
FILE: packages/camera/camera_android/example/integration_test/camera_test.dart
function main (line 17) | void main()
function assertExpectedDimensions (line 45) | bool assertExpectedDimensions(Size expectedSize, Size actual)
function testCaptureImageResolution (line 55) | Future<bool> testCaptureImageResolution(
function testCaptureVideoResolution (line 103) | Future<bool> testCaptureVideoResolution(
FILE: packages/camera/camera_android/example/lib/camera_controller.dart
class CameraValue (line 14) | class CameraValue {
method copyWith (line 99) | CameraValue copyWith({
method toString (line 142) | String toString()
class CameraController (line 165) | class CameraController extends ValueNotifier<CameraValue> {
method initialize (line 205) | Future<void> initialize()
method prepareForVideoRecording (line 256) | Future<void> prepareForVideoRecording()
method pausePreview (line 261) | Future<void> pausePreview()
method resumePreview (line 270) | Future<void> resumePreview()
method takePicture (line 280) | Future<XFile> takePicture()
method startImageStream (line 288) | Future<void> startImageStream(
method stopImageStream (line 299) | Future<void> stopImageStream()
method startVideoRecording (line 309) | Future<void> startVideoRecording(
method stopVideoRecording (line 324) | Future<XFile> stopVideoRecording()
method pauseVideoRecording (line 342) | Future<void> pauseVideoRecording()
method resumeVideoRecording (line 350) | Future<void> resumeVideoRecording()
method buildPreview (line 356) | Widget buildPreview()
method setFlashMode (line 361) | Future<void> setFlashMode(FlashMode mode)
method setExposureMode (line 367) | Future<void> setExposureMode(ExposureMode mode)
method setExposureOffset (line 373) | Future<double> setExposureOffset(double offset)
method lockCaptureOrientation (line 400) | Future<void> lockCaptureOrientation()
method unlockCaptureOrientation (line 409) | Future<void> unlockCaptureOrientation()
method setFocusMode (line 416) | Future<void> setFocusMode(FocusMode mode)
method dispose (line 423) | Future<void> dispose()
method removeListener (line 437) | void removeListener(VoidCallback listener)
class Optional (line 451) | @immutable
method ifPresent (line 489) | void ifPresent(void Function(T value) ifPresent)
method ifAbsent (line 496) | void ifAbsent(void Function() ifAbsent)
method or (line 507) | T or(T defaultValue)
method transform (line 519) | Optional<S> transform<S>(S Function(T value) transformer)
method transformNullable (line 530) | Optional<S> transformNullable<S>(S? Function(T value) transformer)
method toString (line 549) | String toString()
FILE: packages/camera/camera_android/example/lib/camera_preview.dart
class CameraPreview (line 12) | class CameraPreview extends StatelessWidget {
method build (line 24) | Widget build(BuildContext context)
method _wrapInRotatedBox (line 50) | Widget _wrapInRotatedBox({required Widget child})
method _isLandscape (line 61) | bool _isLandscape()
method _getQuarterTurns (line 68) | int _getQuarterTurns()
method _getApplicableOrientation (line 78) | DeviceOrientation _getApplicableOrientation()
FILE: packages/camera/camera_android/example/lib/main.dart
class CameraExampleHome (line 19) | class CameraExampleHome extends StatefulWidget {
method createState (line 24) | State<CameraExampleHome> createState()
function getCameraLensIcon (line 30) | IconData getCameraLensIcon(CameraLensDirection direction)
function _logError (line 45) | void _logError(String code, String? message)
class _CameraExampleHomeState (line 50) | class _CameraExampleHomeState extends State<CameraExampleHome>
method initState (line 76) | void initState()
method dispose (line 107) | void dispose()
method didChangeAppLifecycleState (line 115) | void didChangeAppLifecycleState(AppLifecycleState state)
method build (line 131) | Widget build(BuildContext context)
method _cameraPreviewWidget (line 175) | Widget _cameraPreviewWidget()
method _handleScaleStart (line 208) | void _handleScaleStart(ScaleStartDetails details)
method _handleScaleUpdate (line 212) | Future<void> _handleScaleUpdate(ScaleUpdateDetails details)
method _thumbnailWidget (line 226) | Widget _thumbnailWidget()
method _modeControlRowWidget (line 270) | Widget _modeControlRowWidget()
method _flashModeControlRowWidget (line 322) | Widget _flashModeControlRowWidget()
method _exposureModeControlRowWidget (line 371) | Widget _exposureModeControlRowWidget()
method _focusModeControlRowWidget (line 459) | Widget _focusModeControlRowWidget()
method _captureControlRowWidget (line 519) | Widget _captureControlRowWidget()
method _cameraTogglesRowWidget (line 581) | Widget _cameraTogglesRowWidget()
method onChanged (line 584) | void onChanged(CameraDescription? description)
method timestamp (line 619) | String timestamp()
method showInSnackBar (line 621) | void showInSnackBar(String message)
method onViewFinderTap (line 626) | void onViewFinderTap(TapDownDetails details, BoxConstraints constraints)
method onNewCameraSelected (line 641) | Future<void> onNewCameraSelected(CameraDescription cameraDescription)
method onTakePictureButtonPressed (line 730) | void onTakePictureButtonPressed()
method onFlashModeButtonPressed (line 745) | void onFlashModeButtonPressed()
method onExposureModeButtonPressed (line 755) | void onExposureModeButtonPressed()
method onFocusModeButtonPressed (line 765) | void onFocusModeButtonPressed()
method onAudioModeButtonPressed (line 775) | void onAudioModeButtonPressed()
method onCaptureOrientationLockButtonPressed (line 782) | Future<void> onCaptureOrientationLockButtonPressed()
method onSetFlashModeButtonPressed (line 800) | void onSetFlashModeButtonPressed(FlashMode mode)
method onSetExposureModeButtonPressed (line 809) | void onSetExposureModeButtonPressed(ExposureMode mode)
method onSetFocusModeButtonPressed (line 818) | void onSetFocusModeButtonPressed(FocusMode mode)
method onVideoRecordButtonPressed (line 827) | void onVideoRecordButtonPressed()
method onStopButtonPressed (line 835) | void onStopButtonPressed()
method onPausePreviewButtonPressed (line 848) | Future<void> onPausePreviewButtonPressed()
method onPauseButtonPressed (line 867) | void onPauseButtonPressed()
method onResumeButtonPressed (line 876) | void onResumeButtonPressed()
method startVideoRecording (line 885) | Future<void> startVideoRecording()
method stopVideoRecording (line 906) | Future<XFile?> stopVideoRecording()
method pauseVideoRecording (line 921) | Future<void> pauseVideoRecording()
method resumeVideoRecording (line 936) | Future<void> resumeVideoRecording()
method setFlashMode (line 951) | Future<void> setFlashMode(FlashMode mode)
method setExposureMode (line 964) | Future<void> setExposureMode(ExposureMode mode)
method setExposureOffset (line 977) | Future<void> setExposureOffset(double offset)
method setFocusMode (line 993) | Future<void> setFocusMode(FocusMode mode)
method _startVideoPlayer (line 1006) | Future<void> _startVideoPlayer()
method takePicture (line 1037) | Future<XFile?> takePicture()
method _showCameraException (line 1058) | void _showCameraException(CameraException e)
class CameraApp (line 1065) | class CameraApp extends StatelessWidget {
method build (line 1070) | Widget build(BuildContext context)
function main (line 1079) | Future<void> main()
function _ambiguate (line 1094) | T? _ambiguate<T>(T? value)
FILE: packages/camera/camera_android/example/test_driver/integration_test.dart
function main (line 15) | Future<void> main()
FILE: packages/camera/camera_android/lib/src/android_camera.dart
class AndroidCamera (line 21) | class AndroidCamera extends CameraPlatform {
method registerWith (line 23) | void registerWith()
method _createDeviceEventStreamController (line 54) | StreamController<DeviceEvent> _createDeviceEventStreamController()
method _cameraEvents (line 67) | Stream<CameraEvent> _cameraEvents(int cameraId)
method availableCameras (line 72) | Future<List<CameraDescription>> availableCameras()
method createCamera (line 95) | Future<int> createCamera(
method initializeCamera (line 117) | Future<void> initializeCamera(
method dispose (line 162) | Future<void> dispose(int cameraId)
method onCameraInitialized (line 176) | Stream<CameraInitializedEvent> onCameraInitialized(int cameraId)
method onCameraResolutionChanged (line 181) | Stream<CameraResolutionChangedEvent> onCameraResolutionChanged(int cam...
method onCameraClosing (line 186) | Stream<CameraClosingEvent> onCameraClosing(int cameraId)
method onCameraError (line 191) | Stream<CameraErrorEvent> onCameraError(int cameraId)
method onVideoRecordedEvent (line 196) | Stream<VideoRecordedEvent> onVideoRecordedEvent(int cameraId)
method onDeviceOrientationChanged (line 201) | Stream<DeviceOrientationChangedEvent> onDeviceOrientationChanged()
method lockCaptureOrientation (line 207) | Future<void> lockCaptureOrientation(
method unlockCaptureOrientation (line 221) | Future<void> unlockCaptureOrientation(int cameraId)
method takePicture (line 229) | Future<XFile> takePicture(int cameraId)
method prepareForVideoRecording (line 246) | Future<void> prepareForVideoRecording()
method startVideoRecording (line 250) | Future<void> startVideoRecording(int cameraId,
method startVideoCapturing (line 257) | Future<void> startVideoCapturing(VideoCaptureOptions options)
method stopVideoRecording (line 274) | Future<XFile> stopVideoRecording(int cameraId)
method pauseVideoRecording (line 291) | Future<void> pauseVideoRecording(int cameraId)
method resumeVideoRecording (line 297) | Future<void> resumeVideoRecording(int cameraId)
method onStreamedFrameAvailable (line 304) | Stream<CameraImageData> onStreamedFrameAvailable(int cameraId,
method _installStreamController (line 310) | StreamController<CameraImageData> _installStreamController(
method _onFrameStreamListen (line 321) | void _onFrameStreamListen()
method _startPlatformStream (line 325) | Future<void> _startPlatformStream()
method _startStreamListener (line 330) | void _startStreamListener()
method _onFrameStreamCancel (line 340) | FutureOr<void> _onFrameStreamCancel()
method _onFrameStreamPauseResume (line 347) | void _onFrameStreamPauseResume()
method setFlashMode (line 353) | Future<void> setFlashMode(int cameraId, FlashMode mode)
method setExposureMode (line 363) | Future<void> setExposureMode(int cameraId, ExposureMode mode)
method setExposurePoint (line 373) | Future<void> setExposurePoint(int cameraId, Point<double>? point)
method getMinExposureOffset (line 389) | Future<double> getMinExposureOffset(int cameraId)
method getMaxExposureOffset (line 399) | Future<double> getMaxExposureOffset(int cameraId)
method getExposureOffsetStepSize (line 409) | Future<double> getExposureOffsetStepSize(int cameraId)
method setExposureOffset (line 419) | Future<double> setExposureOffset(int cameraId, double offset)
method setFocusMode (line 432) | Future<void> setFocusMode(int cameraId, FocusMode mode)
method setFocusPoint (line 442) | Future<void> setFocusPoint(int cameraId, Point<double>? point)
method getMaxZoomLevel (line 458) | Future<double> getMaxZoomLevel(int cameraId)
method getMinZoomLevel (line 468) | Future<double> getMinZoomLevel(int cameraId)
method setZoomLevel (line 478) | Future<void> setZoomLevel(int cameraId, double zoom)
method pausePreview (line 493) | Future<void> pausePreview(int cameraId)
method resumePreview (line 501) | Future<void> resumePreview(int cameraId)
method buildPreview (line 509) | Widget buildPreview(int cameraId)
method _serializeFlashMode (line 514) | String _serializeFlashMode(FlashMode flashMode)
method _serializeResolutionPreset (line 535) | String _serializeResolutionPreset(ResolutionPreset resolutionPreset)
method _handleDeviceMethodCall (line 560) | Future<dynamic> _handleDeviceMethodCall(MethodCall call)
method handleCameraMethodCall (line 577) | Future<dynamic> handleCameraMethodCall(MethodCall call, int cameraId)
method _getArgumentDictionary (line 630) | Map<String, Object?> _getArgumentDictionary(MethodCall call)
FILE: packages/camera/camera_android/lib/src/type_conversion.dart
function cameraImageFromPlatformData (line 13) | CameraImageData cameraImageFromPlatformData(Map<dynamic, dynamic> data)
function _cameraImageFormatFromPlatformData (line 27) | CameraImageFormat _cameraImageFormatFromPlatformData(dynamic data)
function _imageFormatGroupFromPlatformData (line 31) | ImageFormatGroup _imageFormatGroupFromPlatformData(dynamic data)
function _cameraImagePlaneFromPlatformData (line 42) | CameraImagePlane _cameraImagePlaneFromPlatformData(Map<dynamic, dynamic>...
FILE: packages/camera/camera_android/lib/src/utils.dart
function parseCameraLensDirection (line 9) | CameraLensDirection parseCameraLensDirection(String string)
function serializeDeviceOrientation (line 22) | String serializeDeviceOrientation(DeviceOrientation orientation)
function deserializeDeviceOrientation (line 43) | DeviceOrientation deserializeDeviceOrientation(String str)
FILE: packages/camera/camera_android/test/android_camera_test.dart
function main (line 20) | void main()
function _ambiguate (line 1131) | T? _ambiguate<T>(T? value)
FILE: packages/camera/camera_android/test/method_channel_mock.dart
class MethodChannelMock (line 8) | class MethodChannelMock {
method _handler (line 24) | Future<dynamic> _handler(MethodCall methodCall)
function _ambiguate (line 47) | T? _ambiguate<T>(T? value)
FILE: packages/camera/camera_android/test/type_conversion_test.dart
function main (line 13) | void main()
FILE: packages/camera/camera_android/test/utils_test.dart
function main (line 10) | void main()
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraAndroidCameraxPlugin.java
class CameraAndroidCameraxPlugin (line 17) | public final class CameraAndroidCameraxPlugin implements FlutterPlugin, ...
method CameraAndroidCameraxPlugin (line 28) | public CameraAndroidCameraxPlugin() {}
method setUp (line 30) | void setUp(BinaryMessenger binaryMessenger, Context context, TextureRe...
method onAttachedToEngine (line 56) | @Override
method onDetachedFromEngine (line 61) | @Override
method onAttachedToActivity (line 70) | @Override
method onDetachedFromActivityForConfigChanges (line 84) | @Override
method onReattachedToActivityForConfigChanges (line 89) | @Override
method onDetachedFromActivity (line 95) | @Override
method updateContext (line 104) | public void updateContext(Context context) {
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraFlutterApiImpl.java
class CameraFlutterApiImpl (line 11) | public class CameraFlutterApiImpl extends CameraFlutterApi {
method CameraFlutterApiImpl (line 14) | public CameraFlutterApiImpl(BinaryMessenger binaryMessenger, InstanceM...
method create (line 19) | void create(Camera camera, Reply<Void> reply) {
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraInfoFlutterApiImpl.java
class CameraInfoFlutterApiImpl (line 11) | public class CameraInfoFlutterApiImpl extends CameraInfoFlutterApi {
method CameraInfoFlutterApiImpl (line 14) | public CameraInfoFlutterApiImpl(
method create (line 20) | void create(CameraInfo cameraInfo, Reply<Void> reply) {
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraInfoHostApiImpl.java
class CameraInfoHostApiImpl (line 12) | public class CameraInfoHostApiImpl implements CameraInfoHostApi {
method CameraInfoHostApiImpl (line 15) | public CameraInfoHostApiImpl(InstanceManager instanceManager) {
method getSensorRotationDegrees (line 19) | @Override
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraPermissionsManager.java
class CameraPermissionsManager (line 15) | final class CameraPermissionsManager {
type PermissionsRegistry (line 16) | interface PermissionsRegistry {
method addListener (line 17) | @SuppressWarnings("deprecation")
type ResultCallback (line 22) | interface ResultCallback {
method onResult (line 23) | void onResult(String errorCode, String errorDescription);
method requestPermissions (line 43) | void requestPermissions(
method hasCameraPermission (line 73) | private boolean hasCameraPermission(Activity activity) {
method hasAudioPermission (line 78) | private boolean hasAudioPermission(Activity activity) {
class CameraRequestPermissionsListener (line 83) | @VisibleForTesting
method CameraRequestPermissionsListener (line 96) | @VisibleForTesting
method onRequestPermissionsResult (line 101) | @Override
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraSelectorFlutterApiImpl.java
class CameraSelectorFlutterApiImpl (line 11) | public class CameraSelectorFlutterApiImpl extends CameraSelectorFlutterA...
method CameraSelectorFlutterApiImpl (line 14) | public CameraSelectorFlutterApiImpl(
method create (line 20) | void create(CameraSelector cameraSelector, Long lensFacing, Reply<Void...
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraSelectorHostApiImpl.java
class CameraSelectorHostApiImpl (line 17) | public class CameraSelectorHostApiImpl implements CameraSelectorHostApi {
method CameraSelectorHostApiImpl (line 23) | public CameraSelectorHostApiImpl(
method create (line 29) | @Override
method filter (line 43) | @Override
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXProxy.java
class CameraXProxy (line 16) | public class CameraXProxy {
method createCameraSelectorBuilder (line 17) | public CameraSelector.Builder createCameraSelectorBuilder() {
method createCameraPermissionsManager (line 21) | public CameraPermissionsManager createCameraPermissionsManager() {
method createDeviceOrientationManager (line 25) | public DeviceOrientationManager createDeviceOrientationManager(
method createPreviewBuilder (line 33) | public Preview.Builder createPreviewBuilder() {
method createSurface (line 37) | public Surface createSurface(@NonNull SurfaceTexture surfaceTexture) {
method createSystemServicesFlutterApiImpl (line 47) | public SystemServicesFlutterApiImpl createSystemServicesFlutterApiImpl(
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/DeviceOrientationManager.java
class DeviceOrientationManager (line 24) | public class DeviceOrientationManager {
type DeviceOrientationChangeCallback (line 26) | interface DeviceOrientationChangeCallback {
method onChange (line 27) | void onChange(DeviceOrientation newOrientation);
method DeviceOrientationManager (line 40) | DeviceOrientationManager(
method start (line 63) | public void start() {
method stop (line 79) | public void stop() {
method getPhotoOrientation (line 95) | public int getPhotoOrientation() {
method getPhotoOrientation (line 109) | public int getPhotoOrientation(PlatformChannel.DeviceOrientation orien...
method getVideoOrientation (line 146) | public int getVideoOrientation() {
method getVideoOrientation (line 166) | public int getVideoOrientation(PlatformChannel.DeviceOrientation orien...
method getLastUIOrientation (line 197) | public PlatformChannel.DeviceOrientation getLastUIOrientation() {
method handleUIOrientationChange (line 207) | @VisibleForTesting
method handleOrientationChange (line 221) | @VisibleForTesting
method getUIOrientation (line 239) | @VisibleForTesting
method calculateSensorOrientation (line 271) | @VisibleForTesting
method getDeviceDefaultOrientation (line 302) | @VisibleForTesting
method getDisplay (line 324) | @SuppressWarnings("deprecation")
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/GeneratedCameraXLibrary.java
class GeneratedCameraXLibrary (line 25) | @SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSu...
class ResolutionInfo (line 29) | public static class ResolutionInfo {
method getWidth (line 32) | public @NonNull Long getWidth() {
method setWidth (line 36) | public void setWidth(@NonNull Long setterArg) {
method getHeight (line 45) | public @NonNull Long getHeight() {
method setHeight (line 49) | public void setHeight(@NonNull Long setterArg) {
method ResolutionInfo (line 57) | private ResolutionInfo() {}
class Builder (line 59) | public static final class Builder {
method setWidth (line 62) | public @NonNull Builder setWidth(@NonNull Long setterArg) {
method setHeight (line 69) | public @NonNull Builder setHeight(@NonNull Long setterArg) {
method build (line 74) | public @NonNull ResolutionInfo build() {
method toMap (line 82) | @NonNull
method fromMap (line 90) | static @NonNull ResolutionInfo fromMap(@NonNull Map<String, Object> ...
class CameraPermissionsErrorData (line 105) | public static class CameraPermissionsErrorData {
method getErrorCode (line 108) | public @NonNull String getErrorCode() {
method setErrorCode (line 112) | public void setErrorCode(@NonNull String setterArg) {
method getDescription (line 121) | public @NonNull String getDescription() {
method setDescription (line 125) | public void setDescription(@NonNull String setterArg) {
method CameraPermissionsErrorData (line 133) | private CameraPermissionsErrorData() {}
class Builder (line 135) | public static final class Builder {
method setErrorCode (line 138) | public @NonNull Builder setErrorCode(@NonNull String setterArg) {
method setDescription (line 145) | public @NonNull Builder setDescription(@NonNull String setterArg) {
method build (line 150) | public @NonNull CameraPermissionsErrorData build() {
method toMap (line 158) | @NonNull
method fromMap (line 166) | static @NonNull CameraPermissionsErrorData fromMap(@NonNull Map<Stri...
type Result (line 176) | public interface Result<T> {
method success (line 177) | void success(T result);
method error (line 179) | void error(Throwable error);
class JavaObjectHostApiCodec (line 182) | private static class JavaObjectHostApiCodec extends StandardMessageCod...
method JavaObjectHostApiCodec (line 185) | private JavaObjectHostApiCodec() {}
type JavaObjectHostApi (line 189) | public interface JavaObjectHostApi {
method dispose (line 190) | void dispose(@NonNull Long identifier);
method getCodec (line 193) | static MessageCodec<Object> getCodec() {
method setup (line 200) | static void setup(BinaryMessenger binaryMessenger, JavaObjectHostApi...
class JavaObjectFlutterApiCodec (line 229) | private static class JavaObjectFlutterApiCodec extends StandardMessage...
method JavaObjectFlutterApiCodec (line 232) | private JavaObjectFlutterApiCodec() {}
class JavaObjectFlutterApi (line 236) | public static class JavaObjectFlutterApi {
method JavaObjectFlutterApi (line 239) | public JavaObjectFlutterApi(BinaryMessenger argBinaryMessenger) {
type Reply (line 243) | public interface Reply<T> {
method reply (line 244) | void reply(T reply);
method getCodec (line 247) | static MessageCodec<Object> getCodec() {
method dispose (line 251) | public void dispose(@NonNull Long identifierArg, Reply<Void> callbac...
class CameraInfoHostApiCodec (line 263) | private static class CameraInfoHostApiCodec extends StandardMessageCod...
method CameraInfoHostApiCodec (line 266) | private CameraInfoHostApiCodec() {}
type CameraInfoHostApi (line 270) | public interface CameraInfoHostApi {
method getSensorRotationDegrees (line 271) | @NonNull
method getCodec (line 275) | static MessageCodec<Object> getCodec() {
method setup (line 282) | static void setup(BinaryMessenger binaryMessenger, CameraInfoHostApi...
class CameraInfoFlutterApiCodec (line 315) | private static class CameraInfoFlutterApiCodec extends StandardMessage...
method CameraInfoFlutterApiCodec (line 318) | private CameraInfoFlutterApiCodec() {}
class CameraInfoFlutterApi (line 322) | public static class CameraInfoFlutterApi {
method CameraInfoFlutterApi (line 325) | public CameraInfoFlutterApi(BinaryMessenger argBinaryMessenger) {
type Reply (line 329) | public interface Reply<T> {
method reply (line 330) | void reply(T reply);
method getCodec (line 333) | static MessageCodec<Object> getCodec() {
method create (line 337) | public void create(@NonNull Long identifierArg, Reply<Void> callback) {
class CameraSelectorHostApiCodec (line 349) | private static class CameraSelectorHostApiCodec extends StandardMessag...
method CameraSelectorHostApiCodec (line 352) | private CameraSelectorHostApiCodec() {}
type CameraSelectorHostApi (line 356) | public interface CameraSelectorHostApi {
method create (line 357) | void create(@NonNull Long identifier, @Nullable Long lensFacing);
method filter (line 359) | @NonNull
method getCodec (line 363) | static MessageCodec<Object> getCodec() {
method setup (line 371) | static void setup(BinaryMessenger binaryMessenger, CameraSelectorHos...
class CameraSelectorFlutterApiCodec (line 435) | private static class CameraSelectorFlutterApiCodec extends StandardMes...
method CameraSelectorFlutterApiCodec (line 439) | private CameraSelectorFlutterApiCodec() {}
class CameraSelectorFlutterApi (line 443) | public static class CameraSelectorFlutterApi {
method CameraSelectorFlutterApi (line 446) | public CameraSelectorFlutterApi(BinaryMessenger argBinaryMessenger) {
type Reply (line 450) | public interface Reply<T> {
method reply (line 451) | void reply(T reply);
method getCodec (line 454) | static MessageCodec<Object> getCodec() {
method create (line 458) | public void create(
class ProcessCameraProviderHostApiCodec (line 471) | private static class ProcessCameraProviderHostApiCodec extends Standar...
method ProcessCameraProviderHostApiCodec (line 475) | private ProcessCameraProviderHostApiCodec() {}
type ProcessCameraProviderHostApi (line 479) | public interface ProcessCameraProviderHostApi {
method getInstance (line 480) | void getInstance(Result<Long> result);
method getAvailableCameraInfos (line 482) | @NonNull
method bindToLifecycle (line 485) | @NonNull
method unbind (line 491) | void unbind(@NonNull Long identifier, @NonNull List<Long> useCaseIds);
method unbindAll (line 493) | void unbindAll(@NonNull Long identifier);
method getCodec (line 496) | static MessageCodec<Object> getCodec() {
method setup (line 504) | static void setup(BinaryMessenger binaryMessenger, ProcessCameraProv...
class ProcessCameraProviderFlutterApiCodec (line 672) | private static class ProcessCameraProviderFlutterApiCodec extends Stan...
method ProcessCameraProviderFlutterApiCodec (line 676) | private ProcessCameraProviderFlutterApiCodec() {}
class ProcessCameraProviderFlutterApi (line 680) | public static class ProcessCameraProviderFlutterApi {
method ProcessCameraProviderFlutterApi (line 683) | public ProcessCameraProviderFlutterApi(BinaryMessenger argBinaryMess...
type Reply (line 687) | public interface Reply<T> {
method reply (line 688) | void reply(T reply);
method getCodec (line 691) | static MessageCodec<Object> getCodec() {
method create (line 695) | public void create(@NonNull Long identifierArg, Reply<Void> callback) {
class CameraFlutterApiCodec (line 709) | private static class CameraFlutterApiCodec extends StandardMessageCodec {
method CameraFlutterApiCodec (line 712) | private CameraFlutterApiCodec() {}
class CameraFlutterApi (line 716) | public static class CameraFlutterApi {
method CameraFlutterApi (line 719) | public CameraFlutterApi(BinaryMessenger argBinaryMessenger) {
type Reply (line 723) | public interface Reply<T> {
method reply (line 724) | void reply(T reply);
method getCodec (line 727) | static MessageCodec<Object> getCodec() {
method create (line 731) | public void create(@NonNull Long identifierArg, Reply<Void> callback) {
class SystemServicesHostApiCodec (line 743) | private static class SystemServicesHostApiCodec extends StandardMessag...
method SystemServicesHostApiCodec (line 746) | private SystemServicesHostApiCodec() {}
method readValueOfType (line 748) | @Override
method writeValue (line 759) | @Override
type SystemServicesHostApi (line 771) | public interface SystemServicesHostApi {
method requestCameraPermissions (line 772) | void requestCameraPermissions(
method startListeningForDeviceOrientationChange (line 775) | void startListeningForDeviceOrientationChange(
method stopListeningForDeviceOrientationChange (line 778) | void stopListeningForDeviceOrientationChange();
method getCodec (line 781) | static MessageCodec<Object> getCodec() {
method setup (line 789) | static void setup(BinaryMessenger binaryMessenger, SystemServicesHos...
class SystemServicesFlutterApiCodec (line 887) | private static class SystemServicesFlutterApiCodec extends StandardMes...
method SystemServicesFlutterApiCodec (line 891) | private SystemServicesFlutterApiCodec() {}
class SystemServicesFlutterApi (line 895) | public static class SystemServicesFlutterApi {
method SystemServicesFlutterApi (line 898) | public SystemServicesFlutterApi(BinaryMessenger argBinaryMessenger) {
type Reply (line 902) | public interface Reply<T> {
method reply (line 903) | void reply(T reply);
method getCodec (line 906) | static MessageCodec<Object> getCodec() {
method onDeviceOrientationChanged (line 910) | public void onDeviceOrientationChanged(@NonNull String orientationAr...
method onCameraError (line 923) | public void onCameraError(@NonNull String errorDescriptionArg, Reply...
class PreviewHostApiCodec (line 937) | private static class PreviewHostApiCodec extends StandardMessageCodec {
method PreviewHostApiCodec (line 940) | private PreviewHostApiCodec() {}
method readValueOfType (line 942) | @Override
method writeValue (line 956) | @Override
type PreviewHostApi (line 971) | public interface PreviewHostApi {
method create (line 972) | void create(
method setSurfaceProvider (line 977) | @NonNull
method releaseFlutterSurfaceTexture (line 980) | void releaseFlutterSurfaceTexture();
method getResolutionInfo (line 982) | @NonNull
method getCodec (line 986) | static MessageCodec<Object> getCodec() {
method setup (line 991) | static void setup(BinaryMessenger binaryMessenger, PreviewHostApi ap...
method wrapError (line 1103) | private static Map<String, Object> wrapError(Throwable exception) {
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/InstanceManager.java
class InstanceManager (line 27) | @SuppressWarnings("unchecked")
type FinalizationListener (line 37) | public interface FinalizationListener {
method onFinalize (line 38) | void onFinalize(long identifier);
method open (line 63) | public static InstanceManager open(FinalizationListener finalizationLi...
method InstanceManager (line 67) | private InstanceManager(FinalizationListener finalizationListener) {
method remove (line 81) | @Nullable
method getIdentifierForStrongReference (line 97) | @Nullable
method addDartCreatedInstance (line 117) | public void addDartCreatedInstance(Object instance, long identifier) {
method addHostCreatedInstance (line 131) | public long addHostCreatedInstance(Object instance) {
method getInstance (line 147) | @Nullable
method containsInstance (line 163) | public boolean containsInstance(Object instance) {
method close (line 174) | public void close() {
method releaseAllFinalizedInstances (line 179) | private void releaseAllFinalizedInstances() {
method addInstance (line 193) | private void addInstance(Object instance, long identifier) {
method assertManagerIsNotClosed (line 204) | private void assertManagerIsNotClosed() {
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/JavaObjectHostApiImpl.java
class JavaObjectHostApiImpl (line 17) | public class JavaObjectHostApiImpl implements JavaObjectHostApi {
method JavaObjectHostApiImpl (line 25) | public JavaObjectHostApiImpl(InstanceManager instanceManager) {
method dispose (line 29) | @Override
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewHostApiImpl.java
class PreviewHostApiImpl (line 21) | public class PreviewHostApiImpl implements PreviewHostApi {
method PreviewHostApiImpl (line 29) | public PreviewHostApiImpl(
method create (line 39) | @Override
method setSurfaceProvider (line 61) | @Override
method createSurfaceProvider (line 76) | @VisibleForTesting
method getProvideSurfaceErrorDescription (line 117) | private String getProvideSurfaceErrorDescription(@Nullable int resultC...
method releaseFlutterSurfaceTexture (line 130) | @Override
method getResolutionInfo (line 138) | @Override
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderFlutterApiImpl.java
class ProcessCameraProviderFlutterApiImpl (line 11) | public class ProcessCameraProviderFlutterApiImpl extends ProcessCameraPr...
method ProcessCameraProviderFlutterApiImpl (line 12) | public ProcessCameraProviderFlutterApiImpl(
method create (line 20) | void create(ProcessCameraProvider processCameraProvider, Reply<Void> r...
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderHostApiImpl.java
class ProcessCameraProviderHostApiImpl (line 23) | public class ProcessCameraProviderHostApiImpl implements ProcessCameraPr...
method ProcessCameraProviderHostApiImpl (line 30) | public ProcessCameraProviderHostApiImpl(
method setLifecycleOwner (line 37) | public void setLifecycleOwner(LifecycleOwner lifecycleOwner) {
method setContext (line 48) | public void setContext(Context context) {
method getInstance (line 56) | @Override
method getAvailableCameraInfos (line 81) | @Override
method bindToLifecycle (line 105) | @Override
method unbind (line 136) | @Override
method unbindAll (line 150) | @Override
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesFlutterApiImpl.java
class SystemServicesFlutterApiImpl (line 11) | public class SystemServicesFlutterApiImpl extends SystemServicesFlutterA...
method SystemServicesFlutterApiImpl (line 12) | public SystemServicesFlutterApiImpl(@NonNull BinaryMessenger binaryMes...
method sendDeviceOrientationChangedEvent (line 16) | public void sendDeviceOrientationChangedEvent(
method sendCameraError (line 21) | public void sendCameraError(@NonNull String errorDescription, @NonNull...
FILE: packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/SystemServicesHostApiImpl.java
class SystemServicesHostApiImpl (line 16) | public class SystemServicesHostApiImpl implements SystemServicesHostApi {
method SystemServicesHostApiImpl (line 27) | public SystemServicesHostApiImpl(
method setActivity (line 34) | public void setActivity(Activity activity) {
method setPermissionsRegistry (line 38) | public void setPermissionsRegistry(PermissionsRegistry permissionsRegi...
method requestCameraPermissions (line 48) | @Override
method startListeningForDeviceOrientationChange (line 79) | @Override
method serializeDeviceOrientation (line 95) | String serializeDeviceOrientation(DeviceOrientation orientation) {
method stopListeningForDeviceOrientationChange (line 105) | @Override
FILE: packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/CameraInfoTest.java
class CameraInfoTest (line 25) | public class CameraInfoTest {
method setUp (line 33) | @Before
method tearDown (line 38) | @After
method getSensorRotationDegreesTest (line 43) | @Test
method flutterApiCreateTest (line 55) | @Test
FILE: packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/CameraPermissionsManagerTest.java
class CameraPermissionsManagerTest (line 17) | public class CameraPermissionsManagerTest {
method listener_respondsOnce (line 18) | @Test
method callback_respondsWithCameraAccessDenied (line 32) | @Test
method callback_respondsWithAudioAccessDenied (line 45) | @Test
method callback_doesNotRespond (line 59) | @Test
method callback_respondsWithCameraAccessDeniedWhenEmptyResult (line 76) | @Test
FILE: packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/CameraSelectorTest.java
class CameraSelectorTest (line 29) | public class CameraSelectorTest {
method setUp (line 37) | @Before
method tearDown (line 42) | @After
method createTest (line 47) | @Test
method filterTest (line 66) | @Test
method flutterApiCreateTest (line 85) | @Test
FILE: packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/CameraTest.java
class CameraTest (line 23) | public class CameraTest {
method setUp (line 31) | @Before
method tearDown (line 36) | @After
method flutterApiCreateTest (line 41) | @Test
FILE: packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/DeviceOrientationManagerTest.java
class DeviceOrientationManagerTest (line 31) | public class DeviceOrientationManagerTest {
method before (line 38) | @Before
method getVideoOrientation_whenNaturalScreenOrientationEqualsPortraitUp (line 53) | @Test
method getVideoOrientation_whenNaturalScreenOrientationEqualsLandscapeLeft (line 70) | @Test
method getVideoOrientation_fallbackToPortraitSensorOrientationWhenOrientationIsNull (line 89) | @Test
method getVideoOrientation_fallbackToLandscapeSensorOrientationWhenOrientationIsNull (line 98) | @Test
method getPhotoOrientation_whenNaturalScreenOrientationEqualsPortraitUp (line 110) | @Test
method getPhotoOrientation_whenNaturalScreenOrientationEqualsLandscapeLeft (line 127) | @Test
method getPhotoOrientation_shouldFallbackToCurrentOrientationWhenOrientationIsNull (line 146) | @Test
method handleUIOrientationChange_shouldSendMessageWhenSensorAccessIsAllowed (line 155) | @Test
method handleOrientationChange_shouldSendMessageWhenOrientationIsUpdated (line 172) | @Test
method handleOrientationChange_shouldNotSendMessageWhenOrientationIsNotUpdated (line 183) | @Test
method getUIOrientation (line 194) | @Test
method getDeviceDefaultOrientation (line 242) | @Test
method calculateSensorOrientation (line 277) | @Test
method setUpUIOrientationMocks (line 296) | private void setUpUIOrientationMocks(int orientation, int rotation) {
method getDisplayTest (line 307) | @Test
FILE: packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/InstanceManagerTest.java
class InstanceManagerTest (line 15) | public class InstanceManagerTest {
method addDartCreatedInstance (line 16) | @Test
method addHostCreatedInstance (line 30) | @Test
method addHostCreatedInstance_createsSameInstanceTwice (line 44) | @Test
method remove (line 58) | @Test
FILE: packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/JavaObjectHostApiTest.java
class JavaObjectHostApiTest (line 11) | public class JavaObjectHostApiTest {
method dispose (line 12) | @Test
FILE: packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java
class PreviewTest (line 38) | @RunWith(RobolectricTestRunner.class)
method setUp (line 49) | @Before
method tearDown (line 54) | @After
method create_createsPreviewWithCorrectConfiguration (line 59) | @Test
method setSurfaceProviderTest_createsSurfaceProviderAndReturnsTextureEntryId (line 90) | @Test
method createSurfaceProvider_createsExpectedPreviewSurfaceProvider (line 118) | @Test
method releaseFlutterSurfaceTexture_makesCallToReleaseFlutterSurfaceTexture (line 189) | @Test
method getResolutionInfo_makesCallToRetrievePreviewResolutionInfo (line 202) | @Test
FILE: packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ProcessCameraProviderTest.java
class ProcessCameraProviderTest (line 42) | @RunWith(RobolectricTestRunner.class)
method setUp (line 52) | @Before
method tearDown (line 58) | @After
method getInstanceTest (line 63) | @Test
method getAvailableCameraInfosTest (line 91) | @Test
method bindToLifecycleTest (line 106) | @Test
method unbindTest (line 133) | @Test
method unbindAllTest (line 147) | @Test
method flutterApiCreateTest (line 158) | @Test
FILE: packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/SystemServicesTest.java
class SystemServicesTest (line 31) | public class SystemServicesTest {
method requestCameraPermissionsTest (line 37) | @Test
method deviceOrientationChangeTest (line 90) | @Test
FILE: packages/camera/camera_android_camerax/example/android/app/src/androidTest/java/io/flutter/plugins/cameraxexample/MainActivityTest.java
class MainActivityTest (line 13) | @DartIntegrationTest
FILE: packages/camera/camera_android_camerax/example/android/app/src/main/java/io/flutter/plugins/cameraexample/MainActivity.java
class MainActivity (line 9) | public class MainActivity extends FlutterActivity {}
FILE: packages/camera/camera_android_camerax/example/integration_test/integration_test.dart
function main (line 10) | void main()
FILE: packages/camera/camera_android_camerax/example/lib/camera_controller.dart
type onLatestImageAvailable (line 22) | typedef onLatestImageAvailable = Function(CameraImage image);
function availableCameras (line 27) | Future<List<CameraDescription>> availableCameras()
function _unawaited (line 33) | void _unawaited(Future<void>? future)
class CameraValue (line 36) | class CameraValue {
method copyWith (line 150) | CameraValue copyWith({
method toString (line 198) | String toString()
class CameraController (line 225) | class CameraController extends ValueNotifier<CameraValue> {
method debugCheckIsDisposed (line 267) | void debugCheckIsDisposed()
method initialize (line 277) | Future<void> initialize()
method prepareForVideoRecording (line 348) | Future<void> prepareForVideoRecording()
method pausePreview (line 353) | Future<void> pausePreview()
method resumePreview (line 369) | Future<void> resumePreview()
method takePicture (line 386) | Future<XFile> takePicture()
method startImageStream (line 422) | Future<void> startImageStream(onLatestImageAvailable onAvailable)
method stopImageStream (line 458) | Future<void> stopImageStream()
method startVideoRecording (line 485) | Future<void> startVideoRecording(
method stopVideoRecording (line 519) | Future<XFile> stopVideoRecording()
method pauseVideoRecording (line 548) | Future<void> pauseVideoRecording()
method resumeVideoRecording (line 567) | Future<void> resumeVideoRecording()
method buildPreview (line 584) | Widget buildPreview()
method getMaxZoomLevel (line 594) | Future<double> getMaxZoomLevel()
method getMinZoomLevel (line 604) | Future<double> getMinZoomLevel()
method setZoomLevel (line 618) | Future<void> setZoomLevel(double zoom)
method setFlashMode (line 628) | Future<void> setFlashMode(FlashMode mode)
method setExposureMode (line 638) | Future<void> setExposureMode(ExposureMode mode)
method setExposurePoint (line 651) | Future<void> setExposurePoint(Offset? point)
method getMinExposureOffset (line 674) | Future<double> getMinExposureOffset()
method getMaxExposureOffset (line 684) | Future<double> getMaxExposureOffset()
method getExposureOffsetStepSize (line 696) | Future<double> getExposureOffsetStepSize()
method setExposureOffset (line 716) | Future<double> setExposureOffset(double offset)
method lockCaptureOrientation (line 751) | Future<void> lockCaptureOrientation([DeviceOrientation? orientation])
method setFocusMode (line 764) | Future<void> setFocusMode(FocusMode mode)
method unlockCaptureOrientation (line 774) | Future<void> unlockCaptureOrientation()
method setFocusPoint (line 788) | Future<void> setFocusPoint(Offset? point)
method dispose (line 811) | Future<void> dispose()
method _throwIfNotInitialized (line 824) | void _throwIfNotInitialized(String functionName)
method removeListener (line 840) | void removeListener(VoidCallback listener)
class Optional (line 854) | @immutable
method ifPresent (line 892) | void ifPresent(void Function(T value) ifPresent)
method ifAbsent (line 899) | void ifAbsent(void Function() ifAbsent)
method or (line 910) | T or(T defaultValue)
method transform (line 922) | Optional<S> transform<S>(S Function(T value) transformer)
method transformNullable (line 933) | Optional<S> transformNullable<S>(S? Function(T value) transformer)
method toString (line 952) | String toString()
FILE: packages/camera/camera_android_camerax/example/lib/camera_image.dart
class Plane (line 20) | class Plane {
class ImageFormat (line 60) | class ImageFormat {
function _asImageFormatGroup (line 84) | ImageFormatGroup _asImageFormatGroup(dynamic rawFormat)
class CameraImage (line 119) | class CameraImage {
FILE: packages/camera/camera_android_camerax/example/lib/camera_preview.dart
class CameraPreview (line 12) | class CameraPreview extends StatelessWidget {
method build (line 23) | Widget build(BuildContext context)
method _wrapInRotatedBox (line 46) | Widget _wrapInRotatedBox({required Widget child})
method _isLandscape (line 57) | bool _isLandscape()
method _getQuarterTurns (line 64) | int _getQuarterTurns()
method _getApplicableOrientation (line 74) | DeviceOrientation _getApplicableOrientation()
FILE: packages/camera/camera_android_camerax/example/lib/main.dart
class CameraExampleHome (line 18) | class CameraExampleHome extends StatefulWidget {
method createState (line 23) | State<CameraExampleHome> createState()
function getCameraLensIcon (line 29) | IconData getCameraLensIcon(CameraLensDirection direction)
function _logError (line 44) | void _logError(String code, String? message)
class _CameraExampleHomeState (line 49) | class _CameraExampleHomeState extends State<CameraExampleHome>
method initState (line 75) | void initState()
method dispose (line 106) | void dispose()
method didChangeAppLifecycleState (line 115) | void didChangeAppLifecycleState(AppLifecycleState state)
method build (line 132) | Widget build(BuildContext context)
method _cameraPreviewWidget (line 176) | Widget _cameraPreviewWidget()
method _handleScaleStart (line 209) | void _handleScaleStart(ScaleStartDetails details)
method _handleScaleUpdate (line 213) | Future<void> _handleScaleUpdate(ScaleUpdateDetails details)
method _thumbnailWidget (line 226) | Widget _thumbnailWidget()
method _modeControlRowWidget (line 270) | Widget _modeControlRowWidget()
method _flashModeControlRowWidget (line 319) | Widget _flashModeControlRowWidget()
method _exposureModeControlRowWidget (line 360) | Widget _exposureModeControlRowWidget()
method _focusModeControlRowWidget (line 442) | Widget _focusModeControlRowWidget()
method _captureControlRowWidget (line 499) | Widget _captureControlRowWidget()
method _cameraTogglesRowWidget (line 542) | Widget _cameraTogglesRowWidget()
method onChanged (line 545) | void onChanged(CameraDescription? description)
method timestamp (line 580) | String timestamp()
method showInSnackBar (line 582) | void showInSnackBar(String message)
method onViewFinderTap (line 587) | void onViewFinderTap(TapDownDetails details, BoxConstraints constraints)
method onNewCameraSelected (line 602) | Future<void> onNewCameraSelected(CameraDescription cameraDescription)
method onTakePictureButtonPressed (line 689) | void onTakePictureButtonPressed()
method onFlashModeButtonPressed (line 704) | void onFlashModeButtonPressed()
method onExposureModeButtonPressed (line 714) | void onExposureModeButtonPressed()
method onFocusModeButtonPressed (line 724) | void onFocusModeButtonPressed()
method onAudioModeButtonPressed (line 734) | void onAudioModeButtonPressed()
method onCaptureOrientationLockButtonPressed (line 741) | Future<void> onCaptureOrientationLockButtonPressed()
method onSetFlashModeButtonPressed (line 759) | void onSetFlashModeButtonPressed(FlashMode mode)
method onSetExposureModeButtonPressed (line 768) | void onSetExposureModeButtonPressed(ExposureMode mode)
method onSetFocusModeButtonPressed (line 777) | void onSetFocusModeButtonPressed(FocusMode mode)
method onVideoRecordButtonPressed (line 786) | void onVideoRecordButtonPressed()
method onStopButtonPressed (line 794) | void onStopButtonPressed()
method onPausePreviewButtonPressed (line 807) | Future<void> onPausePreviewButtonPressed()
method onPauseButtonPressed (line 826) | void onPauseButtonPressed()
method onResumeButtonPressed (line 835) | void onResumeButtonPressed()
method startVideoRecording (line 844) | Future<void> startVideoRecording()
method stopVideoRecording (line 865) | Future<XFile?> stopVideoRecording()
method pauseVideoRecording (line 880) | Future<void> pauseVideoRecording()
method resumeVideoRecording (line 895) | Future<void> resumeVideoRecording()
method setFlashMode (line 910) | Future<void> setFlashMode(FlashMode mode)
method setExposureMode (line 923) | Future<void> setExposureMode(ExposureMode mode)
method setExposureOffset (line 936) | Future<void> setExposureOffset(double offset)
method setFocusMode (line 952) | Future<void> setFocusMode(FocusMode mode)
method _startVideoPlayer (line 965) | Future<void> _startVideoPlayer()
method takePicture (line 996) | Future<XFile?> takePicture()
method _showCameraException (line 1017) | void _showCameraException(CameraException e)
class CameraApp (line 1024) | class CameraApp extends StatelessWidget {
method build (line 1029) | Widget build(BuildContext context)
function main (line 1038) | Future<void> main()
FILE: packages/camera/camera_android_camerax/example/test/widget_test.dart
function main (line 14) | void main()
FILE: packages/camera/camera_android_camerax/example/test_driver/integration_test.dart
function main (line 7) | Future<void> main()
FILE: packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart
class AndroidCameraCameraX (line 22) | class AndroidCameraCameraX extends CameraPlatform {
method registerWith (line 24) | void registerWith()
method _cameraEvents (line 64) | Stream<CameraEvent> _cameraEvents(int cameraId)
method availableCameras (line 70) | Future<List<CameraDescription>> availableCameras()
method createCamera (line 122) | Future<int> createCamera(
method initializeCamera (line 166) | Future<void> initializeCamera(
method dispose (line 211) | Future<void> dispose(int cameraId)
method onCameraInitialized (line 218) | Stream<CameraInitializedEvent> onCameraInitialized(int cameraId)
method onCameraError (line 224) | Stream<CameraErrorEvent> onCameraError(int cameraId)
method onDeviceOrientationChanged (line 233) | Stream<DeviceOrientationChangedEvent> onDeviceOrientationChanged()
method pausePreview (line 241) | Future<void> pausePreview(int cameraId)
method resumePreview (line 250) | Future<void> resumePreview(int cameraId)
method buildPreview (line 257) | Widget buildPreview(int cameraId)
method _bindPreviewToLifecycle (line 278) | Future<void> _bindPreviewToLifecycle()
method _unbindPreviewFromLifecycle (line 294) | void _unbindPreviewFromLifecycle()
method _getCameraSelectorLensDirection (line 309) | int _getCameraSelectorLensDirection(CameraLensDirection lensDirection)
method _getTargetRotation (line 322) | int _getTargetRotation(int sensorOrientation)
method _getTargetResolutionForPreview (line 340) | ResolutionInfo? _getTargetResolutionForPreview(ResolutionPreset? resol...
method requestCameraPermissions (line 350) | Future<void> requestCameraPermissions(bool enableAudio)
method startListeningForDeviceOrientationChange (line 356) | void startListeningForDeviceOrientationChange(
method createCameraSelector (line 364) | CameraSelector createCameraSelector(int cameraSelectorLensDirection)
method createPreview (line 378) | Preview createPreview(int targetRotation, ResolutionInfo? targetResolu...
FILE: packages/camera/camera_android_camerax/lib/src/android_camera_camerax_flutter_api_impls.dart
class AndroidCameraXCameraFlutterApis (line 14) | class AndroidCameraXCameraFlutterApis {
method ensureSetUp (line 65) | void ensureSetUp()
FILE: packages/camera/camera_android_camerax/lib/src/camera.dart
class Camera (line 16) | class Camera extends JavaObject {
class CameraFlutterApiImpl (line 25) | class CameraFlutterApiImpl implements CameraFlutterApi {
method create (line 42) | void create(int identifier)
FILE: packages/camera/camera_android_camerax/lib/src/camera_info.dart
class CameraInfo (line 15) | class CameraInfo extends JavaObject {
method getSensorRotationDegrees (line 30) | Future<int> getSensorRotationDegrees()
class CameraInfoHostApiImpl (line 35) | class CameraInfoHostApiImpl extends CameraInfoHostApi {
method getSensorRotationDegreesFromInstance (line 46) | Future<int> getSensorRotationDegreesFromInstance(
class CameraInfoFlutterApiImpl (line 56) | class CameraInfoFlutterApiImpl extends CameraInfoFlutterApi {
method create (line 73) | void create(int identifier)
FILE: packages/camera/camera_android_camerax/lib/src/camera_selector.dart
class CameraSelector (line 16) | class CameraSelector extends JavaObject {
method getDefaultFrontCamera (line 67) | CameraSelector getDefaultFrontCamera({
method getDefaultBackCamera (line 79) | CameraSelector getDefaultBackCamera({
method filter (line 94) | Future<List<CameraInfo>> filter(List<CameraInfo> cameraInfos)
class CameraSelectorHostApiImpl (line 100) | class CameraSelectorHostApiImpl extends CameraSelectorHostApi {
method createFromInstance (line 118) | void createFromInstance(CameraSelector instance, int? lensFacing)
method filterFromInstance (line 132) | Future<List<CameraInfo>> filterFromInstance(
class CameraSelectorFlutterApiImpl (line 161) | class CameraSelectorFlutterApiImpl implements CameraSelectorFlutterApi {
method create (line 178) | void create(int identifier, int? lensFacing)
FILE: packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart
class ResolutionInfo (line 13) | class ResolutionInfo {
method encode (line 22) | Object encode()
method decode (line 29) | ResolutionInfo decode(Object message)
class CameraPermissionsErrorData (line 38) | class CameraPermissionsErrorData {
method encode (line 47) | Object encode()
method decode (line 54) | CameraPermissionsErrorData decode(Object message)
class _JavaObjectHostApiCodec (line 63) | class _JavaObjectHostApiCodec extends StandardMessageCodec {
class JavaObjectHostApi (line 67) | class JavaObjectHostApi {
method dispose (line 78) | Future<void> dispose(int arg_identifier)
class _JavaObjectFlutterApiCodec (line 103) | class _JavaObjectFlutterApiCodec extends StandardMessageCodec {
class JavaObjectFlutterApi (line 107) | abstract class JavaObjectFlutterApi {
method dispose (line 110) | void dispose(int identifier)
method setup (line 111) | void setup(JavaObjectFlutterApi? api,
class _CameraInfoHostApiCodec (line 135) | class _CameraInfoHostApiCodec extends StandardMessageCodec {
class CameraInfoHostApi (line 139) | class CameraInfoHostApi {
method getSensorRotationDegrees (line 150) | Future<int> getSensorRotationDegrees(int arg_identifier)
class _CameraInfoFlutterApiCodec (line 180) | class _CameraInfoFlutterApiCodec extends StandardMessageCodec {
class CameraInfoFlutterApi (line 184) | abstract class CameraInfoFlutterApi {
method create (line 187) | void create(int identifier)
method setup (line 188) | void setup(CameraInfoFlutterApi? api,
class _CameraSelectorHostApiCodec (line 212) | class _CameraSelectorHostApiCodec extends StandardMessageCodec {
class CameraSelectorHostApi (line 216) | class CameraSelectorHostApi {
method create (line 227) | Future<void> create(int arg_identifier, int? arg_lensFacing)
method filter (line 252) | Future<List<int?>> filter(
class _CameraSelectorFlutterApiCodec (line 284) | class _CameraSelectorFlutterApiCodec extends StandardMessageCodec {
class CameraSelectorFlutterApi (line 288) | abstract class CameraSelectorFlutterApi {
method create (line 291) | void create(int identifier, int? lensFacing)
method setup (line 292) | void setup(CameraSelectorFlutterApi? api,
class _ProcessCameraProviderHostApiCodec (line 317) | class _ProcessCameraProviderHostApiCodec extends StandardMessageCodec {
class ProcessCameraProviderHostApi (line 321) | class ProcessCameraProviderHostApi {
method getInstance (line 333) | Future<int> getInstance()
method getAvailableCameraInfos (line 362) | Future<List<int?>> getAvailableCameraInfos(int arg_identifier)
method bindToLifecycle (line 392) | Future<int> bindToLifecycle(int arg_identifier,
method unbind (line 426) | Future<void> unbind(int arg_identifier, List<int?> arg_useCaseIds)
method unbindAll (line 451) | Future<void> unbindAll(int arg_identifier)
class _ProcessCameraProviderFlutterApiCodec (line 476) | class _ProcessCameraProviderFlutterApiCodec extends StandardMessageCodec {
class ProcessCameraProviderFlutterApi (line 480) | abstract class ProcessCameraProviderFlutterApi {
method create (line 484) | void create(int identifier)
method setup (line 485) | void setup(ProcessCameraProviderFlutterApi? api,
class _CameraFlutterApiCodec (line 509) | class _CameraFlutterApiCodec extends StandardMessageCodec {
class CameraFlutterApi (line 513) | abstract class CameraFlutterApi {
method create (line 516) | void create(int identifier)
method setup (line 517) | void setup(CameraFlutterApi? api, {BinaryMessenger? binaryMessenger})
class _SystemServicesHostApiCodec (line 540) | class _SystemServicesHostApiCodec extends StandardMessageCodec {
method writeValue (line 543) | void writeValue(WriteBuffer buffer, Object? value)
method readValueOfType (line 553) | Object? readValueOfType(int type, ReadBuffer buffer)
class SystemServicesHostApi (line 564) | class SystemServicesHostApi {
method requestCameraPermissions (line 575) | Future<CameraPermissionsErrorData?> requestCameraPermissions(
method startListeningForDeviceOrientationChange (line 601) | Future<void> startListeningForDeviceOrientationChange(
method stopListeningForDeviceOrientationChange (line 628) | Future<void> stopListeningForDeviceOrientationChange()
class _SystemServicesFlutterApiCodec (line 654) | class _SystemServicesFlutterApiCodec extends StandardMessageCodec {
class SystemServicesFlutterApi (line 658) | abstract class SystemServicesFlutterApi {
method onDeviceOrientationChanged (line 661) | void onDeviceOrientationChanged(String orientation)
method onCameraError (line 662) | void onCameraError(String errorDescription)
method setup (line 663) | void setup(SystemServicesFlutterApi? api,
class _PreviewHostApiCodec (line 707) | class _PreviewHostApiCodec extends StandardMessageCodec {
method writeValue (line 710) | void writeValue(WriteBuffer buffer, Object? value)
method readValueOfType (line 723) | Object? readValueOfType(int type, ReadBuffer buffer)
class PreviewHostApi (line 737) | class PreviewHostApi {
method create (line 748) | Future<void> create(int arg_identifier, int? arg_rotation,
method setSurfaceProvider (line 774) | Future<int> setSurfaceProvider(int arg_identifier)
method releaseFlutterSurfaceTexture (line 803) | Future<void> releaseFlutterSurfaceTexture()
method getResolutionInfo (line 827) | Future<ResolutionInfo> getResolutionInfo(int arg_identifier)
FILE: packages/camera/camera_android_camerax/lib/src/instance_manager.dart
class InstanceManager (line 22) | class InstanceManager {
method addDartCreatedInstance (line 67) | int addDartCreatedInstance<T extends Object>(
method removeWeakReference (line 86) | int? removeWeakReference(Object instance)
method remove (line 108) | T? remove<T extends Object>(int identifier)
method getInstanceWithWeakReference (line 126) | T? getInstanceWithWeakReference<T extends Object>(int identifier)
method getIdentifier (line 150) | int? getIdentifier(Object instance)
method addHostCreatedInstance (line 163) | void addHostCreatedInstance<T extends Object>(
method _addInstanceWithIdentifier (line 174) | void _addInstanceWithIdentifier<T extends Object>(
method containsIdentifier (line 190) | bool containsIdentifier(int identifier)
method _nextUniqueIdentifier (line 195) | int _nextUniqueIdentifier()
FILE: packages/camera/camera_android_camerax/lib/src/java_object.dart
class JavaObject (line 14) | @immutable
method dispose (line 39) | void dispose(JavaObject instance)
class JavaObjectHostApiImpl (line 45) | class JavaObjectHostApiImpl extends JavaObjectHostApi {
class JavaObjectFlutterApiImpl (line 64) | class JavaObjectFlutterApiImpl implements JavaObjectFlutterApi {
method dispose (line 73) | void dispose(int identifier)
FILE: packages/camera/camera_android_camerax/lib/src/preview.dart
class Preview (line 15) | class Preview extends UseCase {
method setSurfaceProvider (line 55) | Future<int> setSurfaceProvider()
method releaseFlutterSurfaceTexture (line 61) | void releaseFlutterSurfaceTexture()
method getResolutionInfo (line 66) | Future<ResolutionInfo> getResolutionInfo()
class PreviewHostApiImpl (line 72) | class PreviewHostApiImpl extends PreviewHostApi {
method createFromInstance (line 88) | void createFromInstance(
method setSurfaceProviderFromInstance (line 102) | Future<int> setSurfaceProviderFromInstance(Preview instance)
method releaseFlutterSurfaceTextureFromInstance (line 113) | void releaseFlutterSurfaceTextureFromInstance()
method getResolutionInfoFromInstance (line 118) | Future<ResolutionInfo> getResolutionInfoFromInstance(Preview instance)
FILE: packages/camera/camera_android_camerax/lib/src/process_camera_provider.dart
class ProcessCameraProvider (line 19) | class ProcessCameraProvider extends JavaObject {
method getInstance (line 34) | Future<ProcessCameraProvider> getInstance(
method getAvailableCameraInfos (line 45) | Future<List<CameraInfo>> getAvailableCameraInfos()
method bindToLifecycle (line 51) | Future<Camera> bindToLifecycle(
method unbind (line 58) | void unbind(List<UseCase> useCases)
method unbindAll (line 64) | void unbindAll()
class ProcessCameraProviderHostApiImpl (line 70) | class ProcessCameraProviderHostApiImpl extends ProcessCameraProviderHost...
method getInstancefromInstances (line 89) | Future<ProcessCameraProvider> getInstancefromInstances()
method getProcessCameraProviderIdentifier (line 96) | int getProcessCameraProviderIdentifier(ProcessCameraProvider instance)
method getAvailableCameraInfosFromInstances (line 105) | Future<List<CameraInfo>> getAvailableCameraInfosFromInstances(
method bindToLifecycleFromInstances (line 120) | Future<Camera> bindToLifecycleFromInstances(
method unbindFromInstances (line 141) | void unbindFromInstances(
method unbindAllFromInstances (line 155) | void unbindAllFromInstances(ProcessCameraProvider instance)
class ProcessCameraProviderFlutterApiImpl (line 162) | class ProcessCameraProviderFlutterApiImpl
method create (line 180) | void create(int identifier)
FILE: packages/camera/camera_android_camerax/lib/src/surface.dart
class Surface (line 10) | class Surface extends JavaObject {
FILE: packages/camera/camera_android_camerax/lib/src/system_services.dart
class SystemServices (line 20) | class SystemServices {
method requestCameraPermissions (line 34) | Future<void> requestCameraPermissions(bool enableAudio,
method startListeningForDeviceOrientationChange (line 44) | void startListeningForDeviceOrientationChange(
method stopListeningForDeviceOrientationChange (line 57) | void stopListeningForDeviceOrientationChange(
class SystemServicesHostApiImpl (line 67) | class SystemServicesHostApiImpl extends SystemServicesHostApi {
method sendCameraPermissionsRequest (line 82) | Future<void> sendCameraPermissionsRequest(bool enableAudio)
class SystemServicesFlutterApiImpl (line 96) | class SystemServicesFlutterApiImpl implements SystemServicesFlutterApi {
method onDeviceOrientationChanged (line 114) | void onDeviceOrientationChanged(String orientation)
method deserializeDeviceOrientation (line 126) | DeviceOrientation deserializeDeviceOrientation(String orientation)
method onCameraError (line 144) | void onCameraError(String errorDescription)
FILE: packages/camera/camera_android_camerax/lib/src/use_case.dart
class UseCase (line 10) | class UseCase extends JavaObject {
FILE: packages/camera/camera_android_camerax/pigeons/camerax_library.dart
class ResolutionInfo (line 7) | @ConfigurePigeon(
class CameraPermissionsErrorData (line 39) | class CameraPermissionsErrorData {
class JavaObjectHostApi (line 49) | @HostApi(dartHostTestHandler: 'TestJavaObjectHostApi')
method dispose (line 51) | void dispose(int identifier)
class JavaObjectFlutterApi (line 54) | @FlutterApi()
method dispose (line 56) | void dispose(int identifier)
class CameraInfoHostApi (line 59) | @HostApi(dartHostTestHandler: 'TestCameraInfoHostApi')
method getSensorRotationDegrees (line 61) | int getSensorRotationDegrees(int identifier)
class CameraInfoFlutterApi (line 64) | @FlutterApi()
method create (line 66) | void create(int identifier)
class CameraSelectorHostApi (line 69) | @HostApi(dartHostTestHandler: 'TestCameraSelectorHostApi')
method create (line 71) | void create(int identifier, int? lensFacing)
method filter (line 73) | List<int> filter(int identifier, List<int> cameraInfoIds)
class CameraSelectorFlutterApi (line 76) | @FlutterApi()
method create (line 78) | void create(int identifier, int? lensFacing)
class ProcessCameraProviderHostApi (line 81) | @HostApi(dartHostTestHandler: 'TestProcessCameraProviderHostApi')
method getInstance (line 84) | int getInstance()
method getAvailableCameraInfos (line 86) | List<int> getAvailableCameraInfos(int identifier)
method bindToLifecycle (line 88) | int bindToLifecycle(
method unbind (line 91) | void unbind(int identifier, List<int> useCaseIds)
method unbindAll (line 93) | void unbindAll(int identifier)
class ProcessCameraProviderFlutterApi (line 96) | @FlutterApi()
method create (line 98) | void create(int identifier)
class CameraFlutterApi (line 101) | @FlutterApi()
method create (line 103) | void create(int identifier)
class SystemServicesHostApi (line 106) | @HostApi(dartHostTestHandler: 'TestSystemServicesHostApi')
method requestCameraPermissions (line 109) | CameraPermissionsErrorData? requestCameraPermissions(bool enableAudio)
method startListeningForDeviceOrientationChange (line 111) | void startListeningForDeviceOrientationChange(
method stopListeningForDeviceOrientationChange (line 114) | void stopListeningForDeviceOrientationChange()
class SystemServicesFlutterApi (line 117) | @FlutterApi()
method onDeviceOrientationChanged (line 119) | void onDeviceOrientationChanged(String orientation)
method onCameraError (line 121) | void onCameraError(String errorDescription)
class PreviewHostApi (line 124) | @HostApi(dartHostTestHandler: 'TestPreviewHostApi')
method create (line 126) | void create(int identifier, int? rotation, ResolutionInfo? targetResol...
method setSurfaceProvider (line 128) | int setSurfaceProvider(int identifier)
method releaseFlutterSurfaceTexture (line 130) | void releaseFlutterSurfaceTexture()
method getResolutionInfo (line 132) | ResolutionInfo getResolutionInfo(int identifier)
FILE: packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart
function main (line 34) | void main()
class MockAndroidCameraCamerax (line 371) | class MockAndroidCameraCamerax extends AndroidCameraCameraX {
method requestCameraPermissions (line 379) | Future<void> requestCameraPermissions(bool enableAudio)
method startListeningForDeviceOrientationChange (line 384) | void startListeningForDeviceOrientationChange(
method createCameraSelector (line 391) | CameraSelector createCameraSelector(int cameraSelectorLensDirection)
method createPreview (line 402) | Preview createPreview(int targetRotation, ResolutionInfo? targetResolu...
FILE: packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart
class _FakeResolutionInfo_0 (line 33) | class _FakeResolutionInfo_0 extends _i1.SmartFake
class _FakeCamera_1 (line 44) | class _FakeCamera_1 extends _i1.SmartFake implements _i3.Camera {
class _FakeWidget_2 (line 54) | class _FakeWidget_2 extends _i1.SmartFake implements _i4.Widget {
method toString (line 64) | String toString({_i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.i...
class _FakeInheritedWidget_3 (line 68) | class _FakeInheritedWidget_3 extends _i1.SmartFake
method toString (line 79) | String toString({_i5.DiagnosticLevel? minLevel = _i5.DiagnosticLevel.i...
class _FakeDiagnosticsNode_4 (line 83) | class _FakeDiagnosticsNode_4 extends _i1.SmartFake
method toString (line 94) | String toString({
class MockCamera (line 104) | class MockCamera extends _i1.Mock implements _i3.Camera {}
class MockCameraInfo (line 109) | class MockCameraInfo extends _i1.Mock implements _i7.CameraInfo {
method getSensorRotationDegrees (line 111) | _i8.Future<int> getSensorRotationDegrees()
class MockCameraSelector (line 124) | class MockCameraSelector extends _i1.Mock implements _i9.CameraSelector {
method filter (line 126) | _i8.Future<List<_i7.CameraInfo>> filter(List<_i7.CameraInfo>? cameraIn...
class MockPreview (line 141) | class MockPreview extends _i1.Mock implements _i10.Preview {
method setSurfaceProvider (line 143) | _i8.Future<int> setSurfaceProvider()
method releaseFlutterSurfaceTexture (line 152) | void releaseFlutterSurfaceTexture()
method getResolutionInfo (line 160) | _i8.Future<_i2.ResolutionInfo> getResolutionInfo()
class MockProcessCameraProvider (line 186) | class MockProcessCameraProvider extends _i1.Mock
method getAvailableCameraInfos (line 189) | _i8.Future<List<_i7.CameraInfo>> getAvailableCameraInfos()
method bindToLifecycle (line 200) | _i8.Future<_i3.Camera> bindToLifecycle(
method unbind (line 234) | void unbind(List<_i12.UseCase>? useCases)
method unbindAll (line 242) | void unbindAll()
class MockBuildContext (line 254) | class MockBuildContext extends _i1.Mock implements _i4.BuildContext {
method dependOnInheritedElement (line 278) | _i4.InheritedWidget dependOnInheritedElement(
method visitAncestorElements (line 298) | void visitAncestorElements(bool Function(_i4.Element)? visitor)
method visitChildElements (line 307) | void visitChildElements(_i4.ElementVisitor? visitor)
method dispatchNotification (line 315) | void dispatchNotification(_i13.Notification? notification)
method describeElement (line 324) | _i6.DiagnosticsNode describeElement(
method describeWidget (line 344) | _i6.DiagnosticsNode describeWidget(
method describeMissingAncestor (line 364) | List<_i6.DiagnosticsNode> describeMissingAncestor(
method describeOwnershipChain (line 375) | _i6.DiagnosticsNode describeOwnershipChain(String? name)
FILE: packages/camera/camera_android_camerax/test/camera_info_test.dart
function main (line 16) | void main()
FILE: packages/camera/camera_android_camerax/test/camera_info_test.mocks.dart
class MockTestCameraInfoHostApi (line 24) | class MockTestCameraInfoHostApi extends _i1.Mock
method getSensorRotationDegrees (line 31) | int getSensorRotationDegrees(int? identifier)
FILE: packages/camera/camera_android_camerax/test/camera_selector_test.dart
function main (line 17) | void main()
FILE: packages/camera/camera_android_camerax/test/camera_selector_test.mocks.dart
class MockTestCameraSelectorHostApi (line 24) | class MockTestCameraSelectorHostApi extends _i1.Mock
method create (line 31) | void create(
method filter (line 46) | List<int?> filter(
FILE: packages/camera/camera_android_camerax/test/camera_test.dart
function main (line 9) | void main()
FILE: packages/camera/camera_android_camerax/test/instance_manager_test.dart
function main (line 8) | void main()
FILE: packages/camera/camera_android_camerax/test/preview_test.dart
function main (line 16) | void main()
FILE: packages/camera/camera_android_camerax/test/preview_test.mocks.dart
class _FakeResolutionInfo_0 (line 22) | class _FakeResolutionInfo_0 extends _i1.SmartFake
class MockTestPreviewHostApi (line 36) | class MockTestPreviewHostApi extends _i1.Mock
method create (line 43) | void create(
method setSurfaceProvider (line 60) | int setSurfaceProvider(int? identifier)
method releaseFlutterSurfaceTexture (line 68) | void releaseFlutterSurfaceTexture()
method getResolutionInfo (line 76) | _i2.ResolutionInfo getResolutionInfo(int? identifier)
FILE: packages/camera/camera_android_camerax/test/process_camera_provider_test.dart
function main (line 19) | void main()
FILE: packages/camera/camera_android_camerax/test/process_camera_provider_test.mocks.dart
class MockTestProcessCameraProviderHostApi (line 26) | class MockTestProcessCameraProviderHostApi extends _i1.Mock
method getInstance (line 33) | _i3.Future<int> getInstance()
method getAvailableCameraInfos (line 41) | List<int?> getAvailableCameraInfos(int? identifier)
method bindToLifecycle (line 49) | int bindToLifecycle(
method unbind (line 66) | void unbind(
method unbindAll (line 81) | void unbindAll(int? identifier)
FILE: packages/camera/camera_android_camerax/test/system_services_test.dart
function main (line 19) | void main()
FILE: packages/camera/camera_android_camerax/test/system_services_test.mocks.dart
class MockTestSystemServicesHostApi (line 27) | class MockTestSystemServicesHostApi extends _i1.Mock
method requestCameraPermissions (line 34) | _i3.Future<_i4.CameraPermissionsErrorData?> requestCameraPermissions(
method startListeningForDeviceOrientationChange (line 44) | void startListeningForDeviceOrientationChange(
method stopListeningForDeviceOrientationChange (line 59) | void stopListeningForDeviceOrientationChange()
FILE: packages/camera/camera_android_camerax/test/test_camerax_library.g.dart
class _TestJavaObjectHostApiCodec (line 16) | class _TestJavaObjectHostApiCodec extends StandardMessageCodec {
class TestJavaObjectHostApi (line 20) | abstract class TestJavaObjectHostApi {
method dispose (line 23) | void dispose(int identifier)
method setup (line 24) | void setup(TestJavaObjectHostApi? api,
class _TestCameraInfoHostApiCodec (line 48) | class _TestCameraInfoHostApiCodec extends StandardMessageCodec {
class TestCameraInfoHostApi (line 52) | abstract class TestCameraInfoHostApi {
method getSensorRotationDegrees (line 55) | int getSensorRotationDegrees(int identifier)
method setup (line 56) | void setup(TestCameraInfoHostApi? api,
class _TestCameraSelectorHostApiCodec (line 81) | class _TestCameraSelectorHostApiCodec extends StandardMessageCodec {
class TestCameraSelectorHostApi (line 85) | abstract class TestCameraSelectorHostApi {
method create (line 88) | void create(int identifier, int? lensFacing)
method filter (line 89) | List<int?> filter(int identifier, List<int?> cameraInfoIds)
method setup (line 90) | void setup(TestCameraSelectorHostApi? api,
class _TestProcessCameraProviderHostApiCodec (line 139) | class _TestProcessCameraProviderHostApiCodec extends StandardMessageCodec {
class TestProcessCameraProviderHostApi (line 143) | abstract class TestProcessCameraProviderHostApi {
method getInstance (line 147) | Future<int> getInstance()
method getAvailableCameraInfos (line 148) | List<int?> getAvailableCameraInfos(int identifier)
method bindToLifecycle (line 149) | int bindToLifecycle(
method unbind (line 151) | void unbind(int identifier, List<int?> useCaseIds)
method unbindAll (line 152) | void unbindAll(int identifier)
method setup (line 153) | void setup(TestProcessCameraProviderHostApi? api,
class _TestSystemServicesHostApiCodec (line 263) | class _TestSystemServicesHostApiCodec extends StandardMessageCodec {
method writeValue (line 266) | void writeValue(WriteBuffer buffer, Object? value)
method readValueOfType (line 276) | Object? readValueOfType(int type, ReadBuffer buffer)
class TestSystemServicesHostApi (line 287) | abstract class TestSystemServicesHostApi {
method requestCameraPermissions (line 290) | Future<CameraPermissionsErrorData?> requestCameraPermissions(
method startListeningForDeviceOrientationChange (line 292) | void startListeningForDeviceOrientationChange(
method stopListeningForDeviceOrientationChange (line 294) | void stopListeningForDeviceOrientationChange()
method setup (line 295) | void setup(TestSystemServicesHostApi? api,
class _TestPreviewHostApiCodec (line 360) | class _TestPreviewHostApiCodec extends StandardMessageCodec {
method writeValue (line 363) | void writeValue(WriteBuffer buffer, Object? value)
method readValueOfType (line 376) | Object? readValueOfType(int type, ReadBuffer buffer)
class TestPreviewHostApi (line 390) | abstract class TestPreviewHostApi {
method create (line 393) | void create(int identifier, int? rotation, ResolutionInfo? targetResol...
method setSurfaceProvider (line 394) | int setSurfaceProvider(int identifier)
method releaseFlutterSurfaceTexture (line 395) | void releaseFlutterSurfaceTexture()
method getResolutionInfo (line 396) | ResolutionInfo getResolutionInfo(int identifier)
method setup (line 397) | void setup(TestPreviewHostApi? api,
FILE: packages/camera/camera_avfoundation/example/integration_test/camera_test.dart
function main (line 18) | void main()
function assertExpectedDimensions (line 46) | bool assertExpectedDimensions(Size expectedSize, Size actual)
function testCaptureImageResolution (line 56) | Future<bool> testCaptureImageResolution(
function testCaptureVideoResolution (line 100) | Future<bool> testCaptureVideoResolution(
function startStreaming (line 202) | Future<CameraImageData> startStreaming(List<CameraDescription> cameras,
FILE: packages/camera/camera_avfoundation/example/lib/camera_controller.dart
class CameraValue (line 14) | class CameraValue {
method copyWith (line 99) | CameraValue copyWith({
method toString (line 142) | String toString()
class CameraController (line 165) | class CameraController extends ValueNotifier<CameraValue> {
method initialize (line 205) | Future<void> initialize()
method prepareForVideoRecording (line 256) | Future<void> prepareForVideoRecording()
method pausePreview (line 261) | Future<void> pausePreview()
method resumePreview (line 270) | Future<void> resumePreview()
method takePicture (line 280) | Future<XFile> takePicture()
method startImageStream (line 288) | Future<void> startImageStream(
method stopImageStream (line 299) | Future<void> stopImageStream()
method startVideoRecording (line 309) | Future<void> startVideoRecording(
method stopVideoRecording (line 324) | Future<XFile> stopVideoRecording()
method pauseVideoRecording (line 341) | Future<void> pauseVideoRecording()
method resumeVideoRecording (line 349) | Future<void> resumeVideoRecording()
method buildPreview (line 355) | Widget buildPreview()
method setFlashMode (line 360) | Future<void> setFlashMode(FlashMode mode)
method setExposureMode (line 366) | Future<void> setExposureMode(ExposureMode mode)
method setExposureOffset (line 372) | Future<double> setExposureOffset(double offset)
method lockCaptureOrientation (line 399) | Future<void> lockCaptureOrientation()
method unlockCaptureOrientation (line 408) | Future<void> unlockCaptureOrientation()
method setFocusMode (line 415) | Future<void> setFocusMode(FocusMode mode)
method dispose (line 422) | Future<void> dispose()
method removeListener (line 436) | void removeListener(VoidCallback listener)
class Optional (line 450) | @immutable
method ifPresent (line 488) | void ifPresent(void Function(T value) ifPresent)
method ifAbsent (line 495) | void ifAbsent(void Function() ifAbsent)
method or (line 506) | T or(T defaultValue)
method transform (line 518) | Optional<S> transform<S>(S Function(T value) transformer)
method transformNullable (line 529) | Optional<S> transformNullable<S>(S? Function(T value) transformer)
method toString (line 548) | String toString()
FILE: packages/camera/camera_avfoundation/example/lib/camera_preview.dart
class CameraPreview (line 12) | class CameraPreview extends StatelessWidget {
method build (line 24) | Widget build(BuildContext context)
method _wrapInRotatedBox (line 50) | Widget _wrapInRotatedBox({required Widget child})
method _isLandscape (line 61) | bool _isLandscape()
method _getQuarterTurns (line 68) | int _getQuarterTurns()
method _getApplicableOrientation (line 78) | DeviceOrientation _getApplicableOrientation()
FILE: packages/camera/camera_avfoundation/example/lib/main.dart
class CameraExampleHome (line 19) | class CameraExampleHome extends StatefulWidget {
method createState (line 24) | State<CameraExampleHome> createState()
function getCameraLensIcon (line 30) | IconData getCameraLensIcon(CameraLensDirection direction)
function _logError (line 45) | void _logError(String code, String? message)
class _CameraExampleHomeState (line 50) | class _CameraExampleHomeState extends State<CameraExampleHome>
method initState (line 76) | void initState()
method dispose (line 107) | void dispose()
method didChangeAppLifecycleState (line 115) | void didChangeAppLifecycleState(AppLifecycleState state)
method build (line 131) | Widget build(BuildContext context)
method _cameraPreviewWidget (line 175) | Widget _cameraPreviewWidget()
method _handleScaleStart (line 208) | void _handleScaleStart(ScaleStartDetails details)
method _handleScaleUpdate (line 212) | Future<void> _handleScaleUpdate(ScaleUpdateDetails details)
method _thumbnailWidget (line 226) | Widget _thumbnailWidget()
method _modeControlRowWidget (line 270) | Widget _modeControlRowWidget()
method _flashModeControlRowWidget (line 322) | Widget _flashModeControlRowWidget()
method _exposureModeControlRowWidget (line 371) | Widget _exposureModeControlRowWidget()
method _focusModeControlRowWidget (line 459) | Widget _focusModeControlRowWidget()
method _captureControlRowWidget (line 519) | Widget _captureControlRowWidget()
method _cameraTogglesRowWidget (line 581) | Widget _cameraTogglesRowWidget()
method onChanged (line 584) | void onChanged(CameraDescription? description)
method timestamp (line 619) | String timestamp()
method showInSnackBar (line 621) | void showInSnackBar(String message)
method onViewFinderTap (line 626) | void onViewFinderTap(TapDownDetails details, BoxConstraints constraints)
method onNewCameraSelected (line 641) | Future<void> onNewCameraSelected(CameraDescription cameraDescription)
method onTakePictureButtonPressed (line 730) | void onTakePictureButtonPressed()
method onFlashModeButtonPressed (line 745) | void onFlashModeButtonPressed()
method onExposureModeButtonPressed (line 755) | void onExposureModeButtonPressed()
method onFocusModeButtonPressed (line 765) | void onFocusModeButtonPressed()
method onAudioModeButtonPressed (line 775) | void onAudioModeButtonPressed()
method onCaptureOrientationLockButtonPressed (line 782) | Future<void> onCaptureOrientationLockButtonPressed()
method onSetFlashModeButtonPressed (line 800) | void onSetFlashModeButtonPressed(FlashMode mode)
method onSetExposureModeButtonPressed (line 809) | void onSetExposureModeButtonPressed(ExposureMode mode)
method onSetFocusModeButtonPressed (line 818) | void onSetFocusModeButtonPressed(FocusMode mode)
method onVideoRecordButtonPressed (line 827) | void onVideoRecordButtonPressed()
method onStopButtonPressed (line 835) | void onStopButtonPressed()
method onPausePreviewButtonPressed (line 848) | Future<void> onPausePreviewButtonPressed()
method onPauseButtonPressed (line 867) | void onPauseButtonPressed()
method onResumeButtonPressed (line 876) | void onResumeButtonPressed()
method startVideoRecording (line 885) | Future<void> startVideoRecording()
method stopVideoRecording (line 906) | Future<XFile?> stopVideoRecording()
method pauseVideoRecording (line 921) | Future<void> pauseVideoRecording()
method resumeVideoRecording (line 936) | Future<void> resumeVideoRecording()
method setFlashMode (line 951) | Future<void> setFlashMode(FlashMode mode)
method setExposureMode (line 964) | Future<void> setExposureMode(ExposureMode mode)
method setExposureOffset (line 977) | Future<void> setExposureOffset(double offset)
method setFocusMode (line 993) | Future<void> setFocusMode(FocusMode mode)
method _startVideoPlayer (line 1006) | Future<void> _startVideoPlayer()
method takePicture (line 1037) | Future<XFile?> takePicture()
method _showCameraException (line 1058) | void _showCameraException(CameraException e)
class CameraApp (line 1065) | class CameraApp extends StatelessWidget {
method build (line 1070) | Widget build(BuildContext context)
function main (line 1079) | Future<void> main()
function _ambiguate (line 1094) | T? _ambiguate<T>(T? value)
FILE: packages/camera/camera_avfoundation/example/test_driver/integration_test.dart
function main (line 7) | Future<void> main()
FILE: packages/camera/camera_avfoundation/ios/Classes/CameraProperties.h
type FLTFlashModeOff (line 15) | typedef NS_ENUM(NSInteger, FLTFlashMode) {
type FLTExposureModeAuto (line 39) | typedef NS_ENUM(NSInteger, FLTExposureMode) {
type FLTFocusModeAuto (line 61) | typedef NS_ENUM(NSInteger, FLTFocusMode) {
type FLTResolutionPresetVeryLow (line 95) | typedef NS_ENUM(NSInteger, FLTResolutionPreset) {
FILE: packages/camera/camera_avfoundation/lib/src/avfoundation_camera.dart
class AVFoundationCamera (line 21) | class AVFoundationCamera extends CameraPlatform {
method registerWith (line 23) | void registerWith()
method _createDeviceEventStreamController (line 54) | StreamController<DeviceEvent> _createDeviceEventStreamController()
method _cameraEvents (line 67) | Stream<CameraEvent> _cameraEvents(int cameraId)
method availableCameras (line 72) | Future<List<CameraDescription>> availableCameras()
method createCamera (line 95) | Future<int> createCamera(
method initializeCamera (line 117) | Future<void> initializeCamera(
method dispose (line 162) | Future<void> dispose(int cameraId)
method onCameraInitialized (line 176) | Stream<CameraInitializedEvent> onCameraInitialized(int cameraId)
method onCameraResolutionChanged (line 181) | Stream<CameraResolutionChangedEvent> onCameraResolutionChanged(int cam...
method onCameraClosing (line 186) | Stream<CameraClosingEvent> onCameraClosing(int cameraId)
method onCameraError (line 191) | Stream<CameraErrorEvent> onCameraError(int cameraId)
method onVideoRecordedEvent (line 196) | Stream<VideoRecordedEvent> onVideoRecordedEvent(int cameraId)
method onDeviceOrientationChanged (line 201) | Stream<DeviceOrientationChangedEvent> onDeviceOrientationChanged()
method lockCaptureOrientation (line 207) | Future<void> lockCaptureOrientation(
method unlockCaptureOrientation (line 221) | Future<void> unlockCaptureOrientation(int cameraId)
method takePicture (line 229) | Future<XFile> takePicture(int cameraId)
method prepareForVideoRecording (line 246) | Future<void> prepareForVideoRecording()
method startVideoRecording (line 250) | Future<void> startVideoRecording(int cameraId,
method startVideoCapturing (line 257) | Future<void> startVideoCapturing(VideoCaptureOptions options)
method stopVideoRecording (line 275) | Future<XFile> stopVideoRecording(int cameraId)
method pauseVideoRecording (line 292) | Future<void> pauseVideoRecording(int cameraId)
method resumeVideoRecording (line 298) | Future<void> resumeVideoRecording(int cameraId)
method onStreamedFrameAvailable (line 305) | Stream<CameraImageData> onStreamedFrameAvailable(int cameraId,
method _createStreamController (line 312) | StreamController<CameraImageData> _createStreamController(
method _onFrameStreamListen (line 322) | void _onFrameStreamListen()
method _startPlatformStream (line 326) | Future<void> _startPlatformStream()
method _startStreamListener (line 331) | void _startStreamListener()
method _onFrameStreamCancel (line 346) | FutureOr<void> _onFrameStreamCancel()
method _onFrameStreamPauseResume (line 353) | void _onFrameStreamPauseResume()
method setFlashMode (line 359) | Future<void> setFlashMode(int cameraId, FlashMode mode)
method setExposureMode (line 369) | Future<void> setExposureMode(int cameraId, ExposureMode mode)
method setExposurePoint (line 379) | Future<void> setExposurePoint(int cameraId, Point<double>? point)
method getMinExposureOffset (line 395) | Future<double> getMinExposureOffset(int cameraId)
method getMaxExposureOffset (line 405) | Future<double> getMaxExposureOffset(int cameraId)
method getExposureOffsetStepSize (line 415) | Future<double> getExposureOffsetStepSize(int cameraId)
method setExposureOffset (line 425) | Future<double> setExposureOffset(int cameraId, double offset)
method setFocusMode (line 438) | Future<void> setFocusMode(int cameraId, FocusMode mode)
method setFocusPoint (line 448) | Future<void> setFocusPoint(int cameraId, Point<double>? point)
method getMaxZoomLevel (line 464) | Future<double> getMaxZoomLevel(int cameraId)
method getMinZoomLevel (line 474) | Future<double> getMinZoomLevel(int cameraId)
method setZoomLevel (line 484) | Future<void> setZoomLevel(int cameraId, double zoom)
method pausePreview (line 499) | Future<void> pausePreview(int cameraId)
method resumePreview (line 507) | Future<void> resumePreview(int cameraId)
method buildPreview (line 515) | Widget buildPreview(int cameraId)
method _serializeFlashMode (line 520) | String _serializeFlashMode(FlashMode flashMode)
method _serializeResolutionPreset (line 541) | String _serializeResolutionPreset(ResolutionPreset resolutionPreset)
method _handleDeviceMethodCall (line 566) | Future<dynamic> _handleDeviceMethodCall(MethodCall call)
method handleCameraMethodCall (line 583) | Future<dynamic> handleCameraMethodCall(MethodCall call, int cameraId)
method _getArgumentDictionary (line 636) | Map<String, Object?> _getArgumentDictionary(MethodCall call)
FILE: packages/camera/camera_avfoundation/lib/src/type_conversion.dart
function cameraImageFromPlatformData (line 13) | CameraImageData cameraImageFromPlatformData(Map<dynamic, dynamic> data)
function _cameraImageFormatFromPlatformData (line 27) | CameraImageFormat _cameraImageFormatFromPlatformData(dynamic data)
function _imageFormatGroupFromPlatformData (line 31) | ImageFormatGroup _imageFormatGroupFromPlatformData(dynamic data)
function _cameraImagePlaneFromPlatformData (line 43) | CameraImagePlane _cameraImagePlaneFromPlatformData(Map<dynamic, dynamic>...
FILE: packages/camera/camera_avfoundation/lib/src/utils.dart
function parseCameraLensDirection (line 9) | CameraLensDirection parseCameraLensDirection(String string)
function serializeDeviceOrientation (line 22) | String serializeDeviceOrientation(DeviceOrientation orientation)
function deserializeDeviceOrientation (line 43) | DeviceOrientation deserializeDeviceOrientation(String str)
FILE: packages/camera/camera_avfoundation/test/avfoundation_camera_test.dart
function main (line 20) | void main()
function _ambiguate (line 1132) | T? _ambiguate<T>(T? value)
FILE: packages/camera/camera_avfoundation/test/method_channel_mock.dart
class MethodChannelMock (line 8) | class MethodChannelMock {
method _handler (line 24) | Future<dynamic> _handler(MethodCall methodCall)
function _ambiguate (line 47) | T? _ambiguate<T>(T? value)
FILE: packages/camera/camera_avfoundation/test/type_conversion_test.dart
function main (line 13) | void main()
FILE: packages/camera/camera_avfoundation/test/utils_test.dart
function main (line 10) | void main()
FILE: packages/camera/camera_platform_interface/lib/src/events/camera_event.dart
class CameraEvent (line 25) | @immutable
class CameraInitializedEvent (line 47) | class CameraInitializedEvent extends CameraEvent {
method toJson (line 95) | Map<String, dynamic> toJson()
class CameraResolutionChangedEvent (line 131) | class CameraResolutionChangedEvent extends CameraEvent {
method toJson (line 158) | Map<String, dynamic> toJson()
class CameraClosingEvent (line 178) | class CameraClosingEvent extends CameraEvent {
method toJson (line 190) | Map<String, dynamic> toJson()
class CameraErrorEvent (line 209) | class CameraErrorEvent extends CameraEvent {
method toJson (line 227) | Map<String, dynamic> toJson()
class VideoRecordedEvent (line 245) | class VideoRecordedEvent extends CameraEvent {
method toJson (line 271) | Map<String, dynamic> toJson()
FILE: packages/camera/camera_platform_interface/lib/src/events/device_event.dart
class DeviceEvent (line 23) | @immutable
class DeviceOrientationChangedEvent (line 30) | class DeviceOrientationChangedEvent extends DeviceEvent {
method toJson (line 45) | Map<String, dynamic> toJson()
FILE: packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart
class MethodChannelCamera (line 20) | class MethodChannelCamera extends CameraPlatform {
method _cameraEvents (line 59) | Stream<CameraEvent> _cameraEvents(int cameraId)
method availableCameras (line 64) | Future<List<CameraDescription>> availableCameras()
method createCamera (line 87) | Future<int> createCamera(
method initializeCamera (line 109) | Future<void> initializeCamera(
method dispose (line 154) | Future<void> dispose(int cameraId)
method onCameraInitialized (line 168) | Stream<CameraInitializedEvent> onCameraInitialized(int cameraId)
method onCameraResolutionChanged (line 173) | Stream<CameraResolutionChangedEvent> onCameraResolutionChanged(int cam...
method onCameraClosing (line 178) | Stream<CameraClosingEvent> onCameraClosing(int cameraId)
method onCameraError (line 183) | Stream<CameraErrorEvent> onCameraError(int cameraId)
method onVideoRecordedEvent (line 188) | Stream<VideoRecordedEvent> onVideoRecordedEvent(int cameraId)
method onDeviceOrientationChanged (line 193) | Stream<DeviceOrientationChangedEvent> onDeviceOrientationChanged()
method lockCaptureOrientation (line 199) | Future<void> lockCaptureOrientation(
method unlockCaptureOrientation (line 213) | Future<void> unlockCaptureOrientation(int cameraId)
method takePicture (line 221) | Future<XFile> takePicture(int cameraId)
method prepareForVideoRecording (line 238) | Future<void> prepareForVideoRecording()
method startVideoRecording (line 242) | Future<void> startVideoRecording(int cameraId,
method startVideoCapturing (line 249) | Future<void> startVideoCapturing(VideoCaptureOptions options)
method stopVideoRecording (line 266) | Future<XFile> stopVideoRecording(int cameraId)
method pauseVideoRecording (line 283) | Future<void> pauseVideoRecording(int cameraId)
method resumeVideoRecording (line 289) | Future<void> resumeVideoRecording(int cameraId)
method onStreamedFrameAvailable (line 296) | Stream<CameraImageData> onStreamedFrameAvailable(int cameraId,
method _installStreamController (line 302) | StreamController<CameraImageData> _installStreamController(
method _onFrameStreamListen (line 313) | void _onFrameStreamListen()
method _startPlatformStream (line 317) | Future<void> _startPlatformStream()
method _startStreamListener (line 322) | void _startStreamListener()
method _onFrameStreamCancel (line 339) | FutureOr<void> _onFrameStreamCancel()
method _onFrameStreamPauseResume (line 346) | void _onFrameStreamPauseResume()
method setFlashMode (line 352) | Future<void> setFlashMode(int cameraId, FlashMode mode)
method setExposureMode (line 362) | Future<void> setExposureMode(int cameraId, ExposureMode mode)
method setExposurePoint (line 372) | Future<void> setExposurePoint(int cameraId, Point<double>? point)
method getMinExposureOffset (line 388) | Future<double> getMinExposureOffset(int cameraId)
method getMaxExposureOffset (line 398) | Future<double> getMaxExposureOffset(int cameraId)
method getExposureOffsetStepSize (line 408) | Future<double> getExposureOffsetStepSize(int cameraId)
method setExposureOffset (line 418) | Future<double> setExposureOffset(int cameraId, double offset)
method setFocusMode (line 431) | Future<void> setFocusMode(int cameraId, FocusMode mode)
method setFocusPoint (line 441) | Future<void> setFocusPoint(int cameraId, Point<double>? point)
method getMaxZoomLevel (line 457) | Future<double> getMaxZoomLevel(int cameraId)
method getMinZoomLevel (line 467) | Future<double> getMinZoomLevel(int cameraId)
method setZoomLevel (line 477) | Future<void> setZoomLevel(int cameraId, double zoom)
method pausePreview (line 492) | Future<void> pausePreview(int cameraId)
method resumePreview (line 500) | Future<void> resumePreview(int cameraId)
method setDescriptionWhileRecording (line 508) | Future<void> setDescriptionWhileRecording(
method buildPreview (line 519) | Widget buildPreview(int cameraId)
method _serializeFlashMode (line 524) | String _serializeFlashMode(FlashMode flashMode)
method _serializeResolutionPreset (line 538) | String _serializeResolutionPreset(ResolutionPreset resolutionPreset)
method handleDeviceMethodCall (line 559) | Future<dynamic> handleDeviceMethodCall(MethodCall call)
method handleCameraMethodCall (line 576) | Future<dynamic> handleCameraMethodCall(MethodCall call, int cameraId)
method _getArgumentDictionary (line 629) | Map<String, Object?> _getArgumentDictionary(MethodCall call)
FILE: packages/camera/camera_platform_interface/lib/src/method_channel/type_conversion.dart
function cameraImageFromPlatformData (line 15) | CameraImageData cameraImageFromPlatformData(Map<dynamic, dynamic> data)
function _cameraImageFormatFromPlatformData (line 29) | CameraImageFormat _cameraImageFormatFromPlatformData(dynamic data)
function _imageFormatGroupFromPlatformData (line 33) | ImageFormatGroup _imageFormatGroupFromPlatformData(dynamic data)
function _cameraImagePlaneFromPlatformData (line 56) | CameraImagePlane _cameraImagePlaneFromPlatformData(Map<dynamic, dynamic>...
FILE: packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart
class CameraPlatform (line 22) | abstract class CameraPlatform extends PlatformInterface {
method availableCameras (line 45) | Future<List<CameraDescription>> availableCameras()
method createCamera (line 50) | Future<int> createCamera(
method initializeCamera (line 64) | Future<void> initializeCamera(
method onCameraInitialized (line 72) | Stream<CameraInitializedEvent> onCameraInitialized(int cameraId)
method onCameraResolutionChanged (line 78) | Stream<CameraResolutionChangedEvent> onCameraResolutionChanged(int cam...
method onCameraClosing (line 83) | Stream<CameraClosingEvent> onCameraClosing(int cameraId)
method onCameraError (line 88) | Stream<CameraErrorEvent> onCameraError(int cameraId)
method onVideoRecordedEvent (line 93) | Stream<VideoRecordedEvent> onVideoRecordedEvent(int cameraId)
method onDeviceOrientationChanged (line 101) | Stream<DeviceOrientationChangedEvent> onDeviceOrientationChanged()
method lockCaptureOrientation (line 107) | Future<void> lockCaptureOrientation(
method unlockCaptureOrientation (line 113) | Future<void> unlockCaptureOrientation(int cameraId)
method takePicture (line 118) | Future<XFile> takePicture(int cameraId)
method prepareForVideoRecording (line 123) | Future<void> prepareForVideoRecording()
method startVideoRecording (line 136) | Future<void> startVideoRecording(int cameraId, {Duration? maxVideoDura...
method startVideoCapturing (line 144) | Future<void> startVideoCapturing(VideoCaptureOptions options)
method stopVideoRecording (line 150) | Future<XFile> stopVideoRecording(int cameraId)
method pauseVideoRecording (line 155) | Future<void> pauseVideoRecording(int cameraId)
method resumeVideoRecording (line 160) | Future<void> resumeVideoRecording(int cameraId)
method onStreamedFrameAvailable (line 174) | Stream<CameraImageData> onStreamedFrameAvailable(int cameraId,
method setFlashMode (line 181) | Future<void> setFlashMode(int cameraId, FlashMode mode)
method setExposureMode (line 186) | Future<void> setExposureMode(int cameraId, ExposureMode mode)
method setExposurePoint (line 194) | Future<void> setExposurePoint(int cameraId, Point<double>? point)
method getMinExposureOffset (line 199) | Future<double> getMinExposureOffset(int cameraId)
method getMaxExposureOffset (line 204) | Future<double> getMaxExposureOffset(int cameraId)
method getExposureOffsetStepSize (line 211) | Future<double> getExposureOffsetStepSize(int cameraId)
method setExposureOffset (line 226) | Future<double> setExposureOffset(int cameraId, double offset)
method setFocusMode (line 231) | Future<void> setFocusMode(int cameraId, FocusMode mode)
method setFocusPoint (line 239) | Future<void> setFocusPoint(int cameraId, Point<double>? point)
method getMaxZoomLevel (line 244) | Future<double> getMaxZoomLevel(int cameraId)
method getMinZoomLevel (line 249) | Future<double> getMinZoomLevel(int cameraId)
method setZoomLevel (line 258) | Future<void> setZoomLevel(int cameraId, double zoom)
method pausePreview (line 263) | Future<void> pausePreview(int cameraId)
method resumePreview (line 268) | Future<void> resumePreview(int cameraId)
method setDescriptionWhileRecording (line 273) | Future<void> setDescriptionWhileRecording(CameraDescription description)
method buildPreview (line 279) | Widget buildPreview(int cameraId)
method dispose (line 284) | Future<void> dispose(int cameraId)
FILE: packages/camera/camera_platform_interface/lib/src/types/camera_description.dart
type CameraLensDirection (line 8) | enum CameraLensDirection {
class CameraDescription (line 20) | @immutable
method toString (line 56) | String toString()
FILE: packages/camera/camera_platform_interface/lib/src/types/camera_exception.dart
class CameraException (line 6) | class CameraException implements Exception {
method toString (line 19) | String toString()
FILE: packages/camera/camera_platform_interface/lib/src/types/camera_image_data.dart
class CameraImageStreamOptions (line 17) | @immutable
class CameraImagePlane (line 24) | @immutable
class CameraImageFormat (line 52) | @immutable
class CameraImageData (line 82) | @immutable
FILE: packages/camera/camera_platform_interface/lib/src/types/exposure_mode.dart
type ExposureMode (line 6) | enum ExposureMode {
function serializeExposureMode (line 15) | String serializeExposureMode(ExposureMode exposureMode)
function deserializeExposureMode (line 25) | ExposureMode deserializeExposureMode(String str)
FILE: packages/camera/camera_platform_interface/lib/src/types/flash_mode.dart
type FlashMode (line 6) | enum FlashMode {
FILE: packages/camera/camera_platform_interface/lib/src/types/focus_mode.dart
type FocusMode (line 6) | enum FocusMode {
function serializeFocusMode (line 15) | String serializeFocusMode(FocusMode focusMode)
function deserializeFocusMode (line 25) | FocusMode deserializeFocusMode(String str)
FILE: packages/camera/camera_platform_interface/lib/src/types/image_format_group.dart
type ImageFormatGroup (line 6) | enum ImageFormatGroup {
function name (line 41) | String name()
FILE: packages/camera/camera_platform_interface/lib/src/types/resolution_preset.dart
type ResolutionPreset (line 8) | enum ResolutionPreset {
FILE: packages/camera/camera_platform_interface/lib/src/types/video_capture_options.dart
class VideoCaptureOptions (line 10) | @immutable
FILE: packages/camera/camera_platform_interface/lib/src/utils/utils.dart
function parseCameraLensDirection (line 10) | CameraLensDirection parseCameraLensDirection(String string)
function serializeDeviceOrientation (line 23) | String serializeDeviceOrientation(DeviceOrientation orientation)
function deserializeDeviceOrientation (line 37) | DeviceOrientation deserializeDeviceOrientation(String str)
FILE: packages/camera/camera_platform_interface/test/camera_platform_interface_test.dart
function main (line 10) | void main()
class ImplementsCameraPlatform (line 493) | class ImplementsCameraPlatform implements CameraPlatform {
method noSuchMethod (line 495) | dynamic noSuchMethod(Invocation invocation)
class ExtendsCameraPlatform (line 498) | class ExtendsCameraPlatform extends CameraPlatform {}
FILE: packages/camera/camera_platform_interface/test/events/camera_event_test.dart
function main (line 8) | void main()
FILE: packages/camera/camera_platform_interface/test/events/device_event_test.dart
function main (line 9) | void main()
FILE: packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart
function main (line 18) | void main()
FILE: packages/camera/camera_platform_interface/test/method_channel/type_conversion_test.dart
function main (line 14) | void main()
FILE: packages/camera/camera_platform_interface/test/types/camera_description_test.dart
function main (line 8) | void main()
FILE: packages/camera/camera_platform_interface/test/types/camera_exception_test.dart
function main (line 8) | void main()
FILE: packages/camera/camera_platform_interface/test/types/camera_image_data_test.dart
function main (line 13) | void main()
FILE: packages/camera/camera_platform_interface/test/types/exposure_mode_test.dart
function main (line 9) | void main()
FILE: packages/camera/camera_platform_interface/test/types/flash_mode_test.dart
function main (line 8) | void main()
FILE: packages/camera/camera_platform_interface/test/types/focus_mode_test.dart
function main (line 8
Copy disabled (too large)
Download .json
Condensed preview — 3782 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (14,384K chars).
[
{
"path": ".ci/Dockerfile",
"chars": 2110,
"preview": "# The Flutter version is not important here, since the CI scripts update Flutter\n# before running. What matters is that "
},
{
"path": ".ci/flutter_master.version",
"chars": 41,
"preview": "33e4d21f7c13e02a7c92c7272309afbff792a864\n"
},
{
"path": ".ci/flutter_stable.version",
"chars": 41,
"preview": "7048ed95a5ad3e43d697e0c397464193991fc230\n"
},
{
"path": ".ci/scripts/build_all_plugins.sh",
"chars": 275,
"preview": "#!/bin/bash\n# Copyright 2013 The Flutter Authors. All rights reserved.\n# Use of this source code is governed by a BSD-st"
},
{
"path": ".ci/scripts/build_examples_win32.sh",
"chars": 280,
"preview": "#!/bin/bash\n# Copyright 2013 The Flutter Authors. All rights reserved.\n# Use of this source code is governed by a BSD-st"
},
{
"path": ".ci/scripts/create_all_plugins_app.sh",
"chars": 315,
"preview": "#!/bin/bash\n# Copyright 2013 The Flutter Authors. All rights reserved.\n# Use of this source code is governed by a BSD-st"
},
{
"path": ".ci/scripts/create_simulator.sh",
"chars": 372,
"preview": "#!/bin/bash\n# Copyright 2013 The Flutter Authors. All rights reserved.\n# Use of this source code is governed by a BSD-st"
},
{
"path": ".ci/scripts/drive_examples_win32.sh",
"chars": 336,
"preview": "#!/bin/bash\n# Copyright 2013 The Flutter Authors. All rights reserved.\n# Use of this source code is governed by a BSD-st"
},
{
"path": ".ci/scripts/native_test_win32.sh",
"chars": 294,
"preview": "#!/bin/bash\n# Copyright 2013 The Flutter Authors. All rights reserved.\n# Use of this source code is governed by a BSD-st"
},
{
"path": ".ci/scripts/prepare_tool.sh",
"chars": 422,
"preview": "#!/bin/bash\n# Copyright 2013 The Flutter Authors. All rights reserved.\n# Use of this source code is governed by a BSD-st"
},
{
"path": ".ci/targets/ios_build_all_plugins.yaml",
"chars": 419,
"preview": "tasks:\n - name: prepare tool\n script: .ci/scripts/prepare_tool.sh\n - name: create all_plugins app\n script: .ci/s"
},
{
"path": ".ci/targets/ios_platform_tests.yaml",
"chars": 1083,
"preview": "tasks:\n - name: prepare tool\n script: .ci/scripts/prepare_tool.sh\n - name: create simulator\n script: .ci/scripts"
},
{
"path": ".ci/targets/macos_build_all_plugins.yaml",
"chars": 393,
"preview": "tasks:\n - name: prepare tool\n script: .ci/scripts/prepare_tool.sh\n - name: create all_plugins app\n script: .ci/s"
},
{
"path": ".ci/targets/macos_lint_podspecs.yaml",
"chars": 174,
"preview": "tasks:\n - name: prepare tool\n script: .ci/scripts/prepare_tool.sh\n - name: validate iOS and macOS podspecs\n scri"
},
{
"path": ".ci/targets/macos_platform_tests.yaml",
"chars": 716,
"preview": "tasks:\n - name: prepare tool\n script: .ci/scripts/prepare_tool.sh\n - name: build examples\n script: script/tool_r"
},
{
"path": ".ci/targets/windows_build_all_plugins.yaml",
"chars": 401,
"preview": "tasks:\n - name: prepare tool\n script: .ci/scripts/prepare_tool.sh\n - name: create all_plugins app\n script: .ci/s"
},
{
"path": ".ci/targets/windows_build_and_platform_tests.yaml",
"chars": 313,
"preview": "tasks:\n - name: prepare tool\n script: .ci/scripts/prepare_tool.sh\n - name: build examples (Win32)\n script: .ci/s"
},
{
"path": ".ci.yaml",
"chars": 8544,
"preview": "# Describes the targets run in continuous integration environment.\n#\n# Flutter infra uses this file to generate a checkl"
},
{
"path": ".cirrus.yml",
"chars": 13070,
"preview": "gcp_credentials: ENCRYPTED[!3a93d98d7c95a41f5033834ef30e50928fc5d81239dc632b153c2628200a8187f3811cb01ce338b1ab3b6505a7a6"
},
{
"path": ".clang-format",
"chars": 165,
"preview": "BasedOnStyle: Google\n---\nLanguage: Cpp\nDerivePointerAlignment: false\nPointerAlignment: Left\n---\nLanguage: ObjC\nDerivePoi"
},
{
"path": ".gitattributes",
"chars": 516,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Always perform LF normalization on these fil"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 2524,
"preview": "*Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/aft"
},
{
"path": ".github/dependabot.yml",
"chars": 23169,
"preview": "version: 2\nupdates:\n - package-ecosystem: \"gradle\"\n directory: \"/packages/camera/camera_android/android\"\n commit-"
},
{
"path": ".github/labeler.yml",
"chars": 1477,
"preview": "'p: camera':\n - packages/camera/**/*\n\n'p: espresso':\n - packages/espresso/**/*\n\n'p: file_selector':\n - packages/file_"
},
{
"path": ".github/post_merge_labeler.yml",
"chars": 49,
"preview": "'needs-publishing':\n - packages/**/pubspec.yaml\n"
},
{
"path": ".github/workflows/pull_request_label.yml",
"chars": 702,
"preview": "# This workflow applies labels to pull requests based on the\n# paths that are modified in the pull request.\n#\n# Edit `.g"
},
{
"path": ".github/workflows/release.yml",
"chars": 1999,
"preview": "name: release\non:\n push:\n branches:\n - main\n\n# Declare default permissions as read only.\npermissions: read-all\n"
},
{
"path": ".github/workflows/scorecards-analysis.yml",
"chars": 1888,
"preview": "name: Scorecards supply-chain security\non:\n # Only the default branch is supported.\n branch_protection_rule:\n push:\n "
},
{
"path": ".gitignore",
"chars": 848,
"preview": ".DS_Store\n.atom/\n.idea/\n.vscode/\n\n.packages\n.pub/\n.dart_tool/\npubspec.lock\nflutter_export_environment.sh\n\nexamples/all_p"
},
{
"path": ".gitmodules",
"chars": 94,
"preview": "[submodule \"site-shared\"]\n\tpath = site-shared\n\turl = https://github.com/dart-lang/site-shared\n"
},
{
"path": ".opensource/project.json",
"chars": 169,
"preview": "{\n \"name\": \"FlutterFire - MOVED\",\n \"platforms\": [\n \"Android\",\n \"iOS\"\n ],\n \"content\": \"FlutterFire.md\",\n \"rela"
},
{
"path": "AUTHORS",
"chars": 2663,
"preview": "# Below is a list of people and organizations that have contributed\n# to the Flutter project. Names should be added to t"
},
{
"path": "CODEOWNERS",
"chars": 4241,
"preview": "# Below is a list of Flutter team members who are suggested reviewers\n# for contributions to plugins in this repository."
},
{
"path": "CONTRIBUTING.md",
"chars": 2526,
"preview": "# Contributing to Flutter Plugins\n\n| **ARCHIVED** |\n|--------------|\n| This repository is no longer in use; all source h"
},
{
"path": "FlutterFire.md",
"chars": 296,
"preview": "# FlutterFire - MOVED\n\nThe FlutterFire family of plugins has moved to the Firebase organization on GitHub. This makes it"
},
{
"path": "LICENSE",
"chars": 1519,
"preview": "Copyright 2013 The Flutter Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or wit"
},
{
"path": "README.md",
"chars": 16925,
"preview": "# Flutter plugins\n\n| **ARCHIVED** |\n|--------------|\n| This repository is no longer in use; all source has moved to [flu"
},
{
"path": "analysis_options.yaml",
"chars": 10830,
"preview": "# Specify analysis options.\n#\n# This file is a copy of analysis_options.yaml from flutter repo\n# as of 2022-07-27, but w"
},
{
"path": "packages/camera/camera/AUTHORS",
"chars": 2447,
"preview": "# Below is a list of people and organizations that have contributed\n# to the Flutter project. Names should be added to t"
},
{
"path": "packages/camera/camera/CHANGELOG.md",
"chars": 19374,
"preview": "## 0.10.3\n\n* Adds back use of Optional type.\n\n## 0.10.2+1\n\n* Updates code for stricter lint checks.\n\n## 0.10.2\n\n* Implem"
},
{
"path": "packages/camera/camera/LICENSE",
"chars": 1519,
"preview": "Copyright 2013 The Flutter Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or wit"
},
{
"path": "packages/camera/camera/README.md",
"chars": 6184,
"preview": "# Camera Plugin\n\n<?code-excerpt path-base=\"excerpts/packages/camera_example\"?>\n\n[\ndef localPropertiesFile = rootProject.file('local.properties')\nif (localPropertie"
},
{
"path": "packages/camera/camera/example/android/app/gradle/wrapper/gradle-wrapper.properties",
"chars": 202,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "packages/camera/camera/example/android/app/src/androidTest/java/io/flutter/plugins/DartIntegrationTest.java",
"chars": 459,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/example/android/app/src/androidTest/java/io/flutter/plugins/cameraexample/FlutterActivityTest.java",
"chars": 669,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/example/android/app/src/main/AndroidManifest.xml",
"chars": 1061,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"io.flutter.plugins.cameraexample\">\n\n <a"
},
{
"path": "packages/camera/camera/example/android/app/src/main/res/drawable/launch_background.xml",
"chars": 434,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmln"
},
{
"path": "packages/camera/camera/example/android/app/src/main/res/values/styles.xml",
"chars": 361,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <style name=\"LaunchTheme\" parent=\"@android:style/Theme.Black.NoTi"
},
{
"path": "packages/camera/camera/example/android/build.gradle",
"chars": 480,
"preview": "buildscript {\n repositories {\n google()\n mavenCentral()\n }\n\n dependencies {\n classpath 'co"
},
{
"path": "packages/camera/camera/example/android/gradle/wrapper/gradle-wrapper.properties",
"chars": 202,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dist"
},
{
"path": "packages/camera/camera/example/android/gradle.properties",
"chars": 102,
"preview": "org.gradle.jvmargs=-Xmx4G\nandroid.useAndroidX=true\nandroid.enableJetifier=false\nandroid.enableR8=true\n"
},
{
"path": "packages/camera/camera/example/android/settings.gradle",
"chars": 480,
"preview": "include ':app'\n\ndef flutterProjectRoot = rootProject.projectDir.parentFile.toPath()\n\ndef plugins = new Properties()\ndef "
},
{
"path": "packages/camera/camera/example/build.excerpt.yaml",
"chars": 352,
"preview": "targets:\n $default:\n sources:\n include:\n - lib/**\n # Some default includes that aren't really use"
},
{
"path": "packages/camera/camera/example/integration_test/camera_test.dart",
"chars": 10319,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/example/ios/Flutter/AppFrameworkInfo.plist",
"chars": 863,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "packages/camera/camera/example/ios/Flutter/Debug.xcconfig",
"chars": 183,
"preview": "#include? \"Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig\"\n#include \"Pods/Target Support Files/Pods-Ru"
},
{
"path": "packages/camera/camera/example/ios/Flutter/Release.xcconfig",
"chars": 187,
"preview": "#include? \"Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig\"\n#include \"Pods/Target Support Files/Pods-"
},
{
"path": "packages/camera/camera/example/ios/Podfile",
"chars": 1312,
"preview": "# Uncomment this line to define a global platform for your project\n# platform :ios, '9.0'\n\n# CocoaPods analytics sends n"
},
{
"path": "packages/camera/camera/example/ios/Runner/AppDelegate.h",
"chars": 268,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/example/ios/Runner/AppDelegate.m",
"chars": 589,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 2470,
"preview": "{\n \"images\" : [\n {\n \"size\" : \"20x20\",\n \"idiom\" : \"iphone\",\n \"filename\" : \"Icon-App-20x20@2x.png\",\n "
},
{
"path": "packages/camera/camera/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
"chars": 391,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"LaunchImage.png\",\n \"scale\" : \"1x\"\n },\n "
},
{
"path": "packages/camera/camera/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
"chars": 336,
"preview": "# Launch Screen Assets\n\nYou can customize the launch screen with your own desired assets by replacing the image files in"
},
{
"path": "packages/camera/camera/example/ios/Runner/Base.lproj/LaunchScreen.storyboard",
"chars": 2377,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "packages/camera/camera/example/ios/Runner/Base.lproj/Main.storyboard",
"chars": 1605,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "packages/camera/camera/example/ios/Runner/Info.plist",
"chars": 1883,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "packages/camera/camera/example/ios/Runner/main.m",
"chars": 883,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/example/ios/Runner.xcodeproj/project.pbxproj",
"chars": 19831,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "packages/camera/camera/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
"chars": 135,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"self:\">\n </FileRef"
},
{
"path": "packages/camera/camera/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme",
"chars": 3814,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1300\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "packages/camera/camera/example/ios/Runner.xcworkspace/contents.xcworkspacedata",
"chars": 224,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"group:Runner.xcodepr"
},
{
"path": "packages/camera/camera/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "packages/camera/camera/example/lib/main.dart",
"chars": 34007,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/example/lib/readme_full_example.dart",
"chars": 1619,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/example/pubspec.yaml",
"chars": 769,
"preview": "name: camera_example\ndescription: Demonstrates how to use the camera plugin.\npublish_to: none\n\nenvironment:\n sdk: \">=2."
},
{
"path": "packages/camera/camera/example/test/main_test.dart",
"chars": 561,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/example/test_driver/integration_test.dart",
"chars": 1716,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/example/web/index.html",
"chars": 1312,
"preview": "<!DOCTYPE html>\n<!-- Copyright 2013 The Flutter Authors. All rights reserved.\nUse of this source code is governed by a B"
},
{
"path": "packages/camera/camera/example/web/manifest.json",
"chars": 590,
"preview": "{\n \"name\": \"camera example\",\n \"short_name\": \"camera\",\n \"start_url\": \".\",\n \"display\": \"standalone\",\n \"back"
},
{
"path": "packages/camera/camera/lib/camera.dart",
"chars": 560,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/lib/src/camera_controller.dart",
"chars": 32623,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/lib/src/camera_image.dart",
"chars": 6422,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/lib/src/camera_preview.dart",
"chars": 2610,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/pubspec.yaml",
"chars": 1012,
"preview": "name: camera\ndescription: A Flutter plugin for controlling the camera. Supports previewing\n the camera feed, capturing "
},
{
"path": "packages/camera/camera/test/camera_image_stream_test.dart",
"chars": 7964,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/test/camera_image_test.dart",
"chars": 6132,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/test/camera_preview_test.dart",
"chars": 7026,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/test/camera_test.dart",
"chars": 54117,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera/test/camera_value_test.dart",
"chars": 6827,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/AUTHORS",
"chars": 2447,
"preview": "# Below is a list of people and organizations that have contributed\n# to the Flutter project. Names should be added to t"
},
{
"path": "packages/camera/camera_android/CHANGELOG.md",
"chars": 1955,
"preview": "## 0.10.4\n\n* Temporarily fixes issue with requested video profiles being null by falling back to deprecated behavior in "
},
{
"path": "packages/camera/camera_android/LICENSE",
"chars": 1519,
"preview": "Copyright 2013 The Flutter Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or wit"
},
{
"path": "packages/camera/camera_android/README.md",
"chars": 372,
"preview": "# camera\\_android\n\nThe Android implementation of [`camera`][1].\n\n## Usage\n\nThis package is [endorsed][2], which means yo"
},
{
"path": "packages/camera/camera_android/android/build.gradle",
"chars": 1613,
"preview": "group 'io.flutter.plugins.camera'\nversion '1.0-SNAPSHOT'\ndef args = [\"-Xlint:deprecation\",\"-Xlint:unchecked\"]\n\nbuildscri"
},
{
"path": "packages/camera/camera_android/android/lint-baseline.xml",
"chars": 4501,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<issues format=\"5\" by=\"lint 3.5.0\" client=\"gradle\" variant=\"debug\" version=\"3.5.0"
},
{
"path": "packages/camera/camera_android/android/settings.gradle",
"chars": 36,
"preview": "rootProject.name = 'camera_android'\n"
},
{
"path": "packages/camera/camera_android/android/src/main/AndroidManifest.xml",
"chars": 254,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"io.flutter.plugins.camera\">\n <uses-pe"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java",
"chars": 45142,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraCaptureCallback.java",
"chars": 6618,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraPermissions.java",
"chars": 4738,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraPlugin.java",
"chars": 3829,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraProperties.java",
"chars": 13707,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraRegionUtils.java",
"chars": 7168,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraState.java",
"chars": 866,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/CameraUtils.java",
"chars": 4886,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java",
"chars": 7042,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/ImageSaver.java",
"chars": 3214,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/MethodCallHandlerImpl.java",
"chars": 12801,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeature.java",
"chars": 2015,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeatureFactory.java",
"chars": 6508,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeatureFactoryImpl.java",
"chars": 3871,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/CameraFeatures.java",
"chars": 9586,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/Point.java",
"chars": 399,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/autofocus/AutoFocusFeature.java",
"chars": 2993,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/autofocus/FocusMode.java",
"chars": 679,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurelock/ExposureLockFeature.java",
"chars": 1477,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurelock/ExposureMode.java",
"chars": 1079,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposureoffset/ExposureOffsetFeature.java",
"chars": 2972,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeature.java",
"chars": 3535,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/flash/FlashFeature.java",
"chars": 2323,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/flash/FlashMode.java",
"chars": 1058,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/focuspoint/FocusPointFeature.java",
"chars": 3446,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/fpsrange/FpsRangeFeature.java",
"chars": 2587,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/noisereduction/NoiseReductionFeature.java",
"chars": 3461,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/noisereduction/NoiseReductionMode.java",
"chars": 1202,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/resolution/ResolutionFeature.java",
"chars": 10491,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/resolution/ResolutionPreset.java",
"chars": 334,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/sensororientation/DeviceOrientationManager.java",
"chars": 11616,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/sensororientation/SensorOrientationFeature.java",
"chars": 3595,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/zoomlevel/ZoomLevelFeature.java",
"chars": 3530,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/features/zoomlevel/ZoomUtils.java",
"chars": 1897,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/media/MediaRecorderBuilder.java",
"chars": 4464,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/CameraCaptureProperties.java",
"chars": 1956,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/CaptureTimeoutsWrapper.java",
"chars": 1655,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/ExposureMode.java",
"chars": 663,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/FlashMode.java",
"chars": 680,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/FocusMode.java",
"chars": 648,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/ResolutionPreset.java",
"chars": 320,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/types/Timeout.java",
"chars": 1617,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraCaptureCallbackStatesTest.java",
"chars": 15401,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraCaptureCallbackTest.java",
"chars": 3069,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraPermissionsTest.java",
"chars": 3387,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraPropertiesImplTest.java",
"chars": 11423,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraRegionUtils_convertPointToMeteringRectangleTest.java",
"chars": 9245,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraRegionUtils_getCameraBoundariesTest.java",
"chars": 10257,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraTest.java",
"chars": 41197,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraTest_getRecordingProfileTest.java",
"chars": 8123,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraUtilsTest.java",
"chars": 4235,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/DartMessengerTest.java",
"chars": 5097,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/ImageSaverTests.java",
"chars": 3550,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/MethodCallHandlerImplTest.java",
"chars": 2608,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/autofocus/AutoFocusFeatureTest.java",
"chars": 7461,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/autofocus/FocusModeTest.java",
"chars": 1088,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurelock/ExposureLockFeatureTest.java",
"chars": 3018,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurelock/ExposureModeTest.java",
"chars": 1152,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposureoffset/ExposureOffsetFeatureTest.java",
"chars": 3192,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/exposurepoint/ExposurePointFeatureTest.java",
"chars": 13539,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/flash/FlashFeatureTest.java",
"chars": 6083,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/focuspoint/FocusPointFeatureTest.java",
"chars": 13351,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/fpsrange/FpsRangeFeaturePixel4aTest.java",
"chars": 1091,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/fpsrange/FpsRangeFeatureTest.java",
"chars": 3679,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/noisereduction/NoiseReductionFeatureTest.java",
"chars": 5892,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/resolution/ResolutionFeatureTest.java",
"chars": 16826,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/sensororientation/DeviceOrientationManagerTest.java",
"chars": 13888,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/sensororientation/SensorOrientationFeatureTest.java",
"chars": 4680,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/zoomlevel/ZoomLevelFeatureTest.java",
"chars": 8384,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/features/zoomlevel/ZoomUtilsTest.java",
"chars": 2907,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/media/MediaRecorderBuilderTest.java",
"chars": 10290,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/types/ExposureModeTest.java",
"chars": 1136,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/types/FlashModeTest.java",
"chars": 1505,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/types/FocusModeTest.java",
"chars": 1075,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/utils/TestUtils.java",
"chars": 1540,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/android/src/test/resources/robolectric.properties",
"chars": 6,
"preview": "sdk=30"
},
{
"path": "packages/camera/camera_android/example/android/app/build.gradle",
"chars": 1871,
"preview": "def localProperties = new Properties()\ndef localPropertiesFile = rootProject.file('local.properties')\nif (localPropertie"
},
{
"path": "packages/camera/camera_android/example/android/app/gradle/wrapper/gradle-wrapper.properties",
"chars": 202,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "packages/camera/camera_android/example/android/app/src/androidTest/java/io/flutter/plugins/DartIntegrationTest.java",
"chars": 459,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/example/android/app/src/androidTest/java/io/flutter/plugins/cameraexample/FlutterActivityTest.java",
"chars": 669,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/example/android/app/src/main/AndroidManifest.xml",
"chars": 1061,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"io.flutter.plugins.cameraexample\">\n\n <a"
},
{
"path": "packages/camera/camera_android/example/android/app/src/main/res/drawable/launch_background.xml",
"chars": 434,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmln"
},
{
"path": "packages/camera/camera_android/example/android/app/src/main/res/values/styles.xml",
"chars": 361,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <style name=\"LaunchTheme\" parent=\"@android:style/Theme.Black.NoTi"
},
{
"path": "packages/camera/camera_android/example/android/build.gradle",
"chars": 480,
"preview": "buildscript {\n repositories {\n google()\n mavenCentral()\n }\n\n dependencies {\n classpath 'co"
},
{
"path": "packages/camera/camera_android/example/android/gradle/wrapper/gradle-wrapper.properties",
"chars": 202,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dist"
},
{
"path": "packages/camera/camera_android/example/android/gradle.properties",
"chars": 102,
"preview": "org.gradle.jvmargs=-Xmx4G\nandroid.useAndroidX=true\nandroid.enableJetifier=false\nandroid.enableR8=true\n"
},
{
"path": "packages/camera/camera_android/example/android/settings.gradle",
"chars": 480,
"preview": "include ':app'\n\ndef flutterProjectRoot = rootProject.projectDir.parentFile.toPath()\n\ndef plugins = new Properties()\ndef "
},
{
"path": "packages/camera/camera_android/example/integration_test/camera_test.dart",
"chars": 9975,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/example/lib/camera_controller.dart",
"chars": 18746,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/example/lib/camera_preview.dart",
"chars": 2759,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/example/lib/main.dart",
"chars": 34848,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/example/pubspec.yaml",
"chars": 838,
"preview": "name: camera_example\ndescription: Demonstrates how to use the camera plugin.\npublish_to: none\n\nenvironment:\n sdk: \">=2."
},
{
"path": "packages/camera/camera_android/example/test_driver/integration_test.dart",
"chars": 1716,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/lib/camera_android.dart",
"chars": 199,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/lib/src/android_camera.dart",
"chars": 19846,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/lib/src/type_conversion.dart",
"chars": 1960,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/lib/src/utils.dart",
"chars": 1991,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/pubspec.yaml",
"chars": 790,
"preview": "name: camera_android\ndescription: Android implementation of the camera plugin.\nrepository: https://github.com/flutter/pl"
},
{
"path": "packages/camera/camera_android/test/android_camera_test.dart",
"chars": 34718,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/test/method_channel_mock.dart",
"chars": 1501,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/test/type_conversion_test.dart",
"chars": 1868,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "packages/camera/camera_android/test/utils_test.dart",
"chars": 2104,
"preview": "// Copyright 2013 The Flutter Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
}
]
// ... and 3582 more files (download for full content)
About this extraction
This page contains the full source code of the flutter/plugins GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3782 files (12.8 MB), approximately 3.6M tokens, and a symbol index with 12496 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.