From 298fb23e2d33ad260a3741d05f6113f955b45ce0 Mon Sep 17 00:00:00 2001 From: Francesco Iapicca Date: Fri, 11 Dec 2020 22:26:08 +0200 Subject: [PATCH 01/24] [documentation] [url_launcher] fix for readme code sample (#3308) * code sample fixed * updated CHANGELOG.md and pubspec.yaml --- .../url_launcher/url_launcher/CHANGELOG.md | 4 +++ packages/url_launcher/url_launcher/README.md | 33 +++++++++---------- .../url_launcher/url_launcher/pubspec.yaml | 2 +- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md index 72a0cc92e37a..c92c4f5784aa 100644 --- a/packages/url_launcher/url_launcher/CHANGELOG.md +++ b/packages/url_launcher/url_launcher/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.7.12 + +* Updated code sample in `README.md` + ## 5.7.11 * Update integration test examples to use `testWidgets` instead of `test`. diff --git a/packages/url_launcher/url_launcher/README.md b/packages/url_launcher/url_launcher/README.md index 811dcd5b4ea1..f29b5327a611 100644 --- a/packages/url_launcher/url_launcher/README.md +++ b/packages/url_launcher/url_launcher/README.md @@ -14,26 +14,23 @@ To use this plugin, add `url_launcher` as a [dependency in your pubspec.yaml fil import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; -void main() { - runApp(Scaffold( - body: Center( - child: RaisedButton( - onPressed: _launchURL, - child: Text('Show Flutter homepage'), +const _url = 'https://flutter.dev'; + +void main() => runApp( + const MaterialApp( + home: Material( + child: Center( + child: RaisedButton( + onPressed: _launchURL, + child: Text('Show Flutter homepage'), + ), + ), + ), ), - ), - )); -} - -_launchURL() async { - const url = 'https://flutter.dev'; - if (await canLaunch(url)) { - await launch(url); - } else { - throw 'Could not launch $url'; - } -} + ); +void _launchURL() async => + await canLaunch(_url) ? await launch(_url) : throw 'Could not launch $_url'; ``` ## Supported URL schemes diff --git a/packages/url_launcher/url_launcher/pubspec.yaml b/packages/url_launcher/url_launcher/pubspec.yaml index 4d5e3a7cb0bd..e4fc0f1d654c 100644 --- a/packages/url_launcher/url_launcher/pubspec.yaml +++ b/packages/url_launcher/url_launcher/pubspec.yaml @@ -2,7 +2,7 @@ name: url_launcher description: Flutter plugin for launching a URL on Android and iOS. Supports web, phone, SMS, and email schemes. homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher -version: 5.7.11 +version: 5.7.12 flutter: plugin: From 6870b08bd56a94bd52ca95b62cdbf39253dd0698 Mon Sep 17 00:00:00 2001 From: Emmanuel Garcia Date: Fri, 11 Dec 2020 14:26:17 -0800 Subject: [PATCH 02/24] Exclude null-safe plugins from testing on stable (#3318) --- script/build_all_plugins_app.sh | 12 +++++++++++- script/incremental_build.sh | 15 ++++++++++++--- script/nnbd_plugins.sh | 11 +++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 script/nnbd_plugins.sh diff --git a/script/build_all_plugins_app.sh b/script/build_all_plugins_app.sh index f1f68ddbe985..f2897f8aa9a2 100755 --- a/script/build_all_plugins_app.sh +++ b/script/build_all_plugins_app.sh @@ -8,6 +8,8 @@ readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null && pwd)" readonly REPO_DIR="$(dirname "$SCRIPT_DIR")" source "$SCRIPT_DIR/common.sh" +source "$SCRIPT_DIR/nnbd_plugins.sh" + check_changed_packages > /dev/null readonly EXCLUDED_PLUGINS_LIST=( @@ -42,7 +44,15 @@ readonly EXCLUDED_PLUGINS_LIST=( # Comma-separated string of the list above readonly EXCLUDED=$(IFS=, ; echo "${EXCLUDED_PLUGINS_LIST[*]}") -(cd "$REPO_DIR" && pub global run flutter_plugin_tools all-plugins-app --exclude $EXCLUDED) +ALL_EXCLUDED=($EXCLUDED) +# Exclude nnbd plugins from stable. +if [[ "$CHANNEL" -eq "stable" ]]; then + ALL_EXCLUDED=("$EXCLUDED,$EXCLUDED_PLUGINS_FROM_STABLE") +fi + +echo "Excluding the following plugins: $ALL_EXCLUDED" + +(cd "$REPO_DIR" && pub global run flutter_plugin_tools all-plugins-app --exclude $ALL_EXCLUDED) function error() { echo "$@" 1>&2 diff --git a/script/incremental_build.sh b/script/incremental_build.sh index f89bc1d0e5c9..671ce66a086f 100755 --- a/script/incremental_build.sh +++ b/script/incremental_build.sh @@ -5,6 +5,7 @@ readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" readonly REPO_DIR="$(dirname "$SCRIPT_DIR")" source "$SCRIPT_DIR/common.sh" +source "$SCRIPT_DIR/nnbd_plugins.sh" if [ "$(expr substr $(uname -s) 1 5)" == "MINGW" ]; then PUB=pub.bat @@ -12,6 +13,14 @@ else PUB=pub fi +# Plugins that are excluded from this task. +ALL_EXCLUDED=("") +# Exclude nnbd plugins from stable. +if [[ "$CHANNEL" -eq "stable" ]]; then + ALL_EXCLUDED=($EXCLUDED_PLUGINS_FROM_STABLE) + echo "Excluding the following plugins: $ALL_EXCLUDED" +fi + # Plugins that deliberately use their own analysis_options.yaml. # # This list should only be deleted from, never added to. This only exists @@ -39,7 +48,7 @@ PLUGIN_SHARDING=($PLUGIN_SHARDING) if [[ "${BRANCH_NAME}" == "master" ]]; then echo "Running for all packages" - (cd "$REPO_DIR" && $PUB global run flutter_plugin_tools "${ACTIONS[@]}" ${PLUGIN_SHARDING[@]}) + (cd "$REPO_DIR" && $PUB global run flutter_plugin_tools "${ACTIONS[@]}" --exclude="$ALL_EXCLUDED" ${PLUGIN_SHARDING[@]}) else # Sets CHANGED_PACKAGES check_changed_packages @@ -47,10 +56,10 @@ else if [[ "$CHANGED_PACKAGES" == "" ]]; then echo "No changes detected in packages." echo "Running for all packages" - (cd "$REPO_DIR" && $PUB global run flutter_plugin_tools "${ACTIONS[@]}" ${PLUGIN_SHARDING[@]}) + (cd "$REPO_DIR" && $PUB global run flutter_plugin_tools "${ACTIONS[@]}" --exclude="$ALL_EXCLUDED" ${PLUGIN_SHARDING[@]}) else echo running "${ACTIONS[@]}" - (cd "$REPO_DIR" && $PUB global run flutter_plugin_tools "${ACTIONS[@]}" --plugins="$CHANGED_PACKAGES" ${PLUGIN_SHARDING[@]}) + (cd "$REPO_DIR" && $PUB global run flutter_plugin_tools "${ACTIONS[@]}" --plugins="$CHANGED_PACKAGES" --exclude="$ALL_EXCLUDED" ${PLUGIN_SHARDING[@]}) echo "Running version check for changed packages" (cd "$REPO_DIR" && $PUB global run flutter_plugin_tools version-check --base_sha="$(get_branch_base_sha)") fi diff --git a/script/nnbd_plugins.sh b/script/nnbd_plugins.sh new file mode 100644 index 000000000000..5d167d7b5da6 --- /dev/null +++ b/script/nnbd_plugins.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# This script contains the list of plugins migrated to nnbd +# that should be excluded from testing on Flutter stable until +# null-safe is available on stable. + +readonly NNBD_PLUGINS_LIST=( + "flutter_webview" +) + +export EXCLUDED_PLUGINS_FROM_STABLE=$(IFS=, ; echo "${NNBD_PLUGINS_LIST[*]}") From 163e7c2a1e8b2f63518e8a3eadb748ffc167d586 Mon Sep 17 00:00:00 2001 From: Nate Bosch Date: Fri, 11 Dec 2020 15:44:46 -0800 Subject: [PATCH 03/24] [image_picker_platform_interface] Pass Uri to package:http APIs (#3309) This is in preparation for https://github.com/dart-lang/http/issues/375 --- .../image_picker/image_picker_platform_interface/CHANGELOG.md | 4 ++++ .../lib/src/types/picked_file/html.dart | 2 +- .../image_picker/image_picker_platform_interface/pubspec.yaml | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md index 1ed45028f513..a7da543bd7f9 100644 --- a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md +++ b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.4 + +* Pass `Uri`s to `package:http` methods, instead of strings, in preparation for a major version update in `http`. + ## 1.1.3 * Update documentation of `pickImage()` regarding HEIC images. diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/html.dart b/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/html.dart index 0faf531f3f75..ee5145009dc7 100644 --- a/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/html.dart +++ b/packages/image_picker/image_picker_platform_interface/lib/src/types/picked_file/html.dart @@ -24,7 +24,7 @@ class PickedFile extends PickedFileBase { if (_initBytes != null) { return Future.value(UnmodifiableUint8ListView(_initBytes)); } - return http.readBytes(path); + return http.readBytes(Uri.parse(path)); } @override diff --git a/packages/image_picker/image_picker_platform_interface/pubspec.yaml b/packages/image_picker/image_picker_platform_interface/pubspec.yaml index 39a65284e247..2ada3b66d700 100644 --- a/packages/image_picker/image_picker_platform_interface/pubspec.yaml +++ b/packages/image_picker/image_picker_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the image_picker plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker/image_picker_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.1.3 +version: 1.1.4 dependencies: flutter: From 6473b5c0ee0a597ae470e32f53f043e805d7d218 Mon Sep 17 00:00:00 2001 From: Michael Thomsen Date: Sat, 12 Dec 2020 00:45:41 +0100 Subject: [PATCH 04/24] [a-c] Update Flutter SDK constraint (#3320) Update Flutter SDK constraint to match templates. --- packages/android_alarm_manager/CHANGELOG.md | 4 ++++ packages/android_alarm_manager/pubspec.yaml | 4 ++-- packages/android_intent/CHANGELOG.md | 4 ++++ packages/android_intent/pubspec.yaml | 4 ++-- packages/battery/battery/CHANGELOG.md | 4 ++++ packages/battery/battery/pubspec.yaml | 4 ++-- packages/battery/battery_platform_interface/CHANGELOG.md | 4 ++++ packages/battery/battery_platform_interface/pubspec.yaml | 4 ++-- packages/camera/camera/CHANGELOG.md | 4 ++++ packages/camera/camera/pubspec.yaml | 4 ++-- packages/camera/camera_platform_interface/CHANGELOG.md | 4 ++++ packages/camera/camera_platform_interface/pubspec.yaml | 4 ++-- packages/connectivity/connectivity/CHANGELOG.md | 4 ++++ packages/connectivity/connectivity/pubspec.yaml | 4 ++-- packages/connectivity/connectivity_macos/CHANGELOG.md | 4 ++++ packages/connectivity/connectivity_macos/pubspec.yaml | 4 ++-- .../connectivity_platform_interface/CHANGELOG.md | 4 ++++ .../connectivity_platform_interface/pubspec.yaml | 4 ++-- packages/cross_file/CHANGELOG.md | 4 ++++ packages/cross_file/pubspec.yaml | 5 ++--- 20 files changed, 60 insertions(+), 21 deletions(-) diff --git a/packages/android_alarm_manager/CHANGELOG.md b/packages/android_alarm_manager/CHANGELOG.md index 023a140fbcc9..e0c436d79eea 100644 --- a/packages/android_alarm_manager/CHANGELOG.md +++ b/packages/android_alarm_manager/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.5+18 + +* Update Flutter SDK constraint. + ## 0.4.5+17 * Update Dart SDK constraint in example. diff --git a/packages/android_alarm_manager/pubspec.yaml b/packages/android_alarm_manager/pubspec.yaml index 9de2d8308419..5b6780b4b14a 100644 --- a/packages/android_alarm_manager/pubspec.yaml +++ b/packages/android_alarm_manager/pubspec.yaml @@ -4,7 +4,7 @@ description: Flutter plugin for accessing the Android AlarmManager service, and # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.4.5+17 +version: 0.4.5+18 homepage: https://github.com/flutter/plugins/tree/master/packages/android_alarm_manager dependencies: @@ -25,4 +25,4 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/android_intent/CHANGELOG.md b/packages/android_intent/CHANGELOG.md index 5a3ba03b33eb..f3534982a971 100644 --- a/packages/android_intent/CHANGELOG.md +++ b/packages/android_intent/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.7+8 + +* Update Flutter SDK constraint. + ## 0.3.7+7 * Update Dart SDK constraint in example. diff --git a/packages/android_intent/pubspec.yaml b/packages/android_intent/pubspec.yaml index 8d41d5165c68..1b63371e488c 100644 --- a/packages/android_intent/pubspec.yaml +++ b/packages/android_intent/pubspec.yaml @@ -4,7 +4,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/android_intent # 0.3.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.3.7+7 +version: 0.3.7+8 flutter: plugin: @@ -27,4 +27,4 @@ dev_dependencies: environment: sdk: ">=2.3.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/battery/battery/CHANGELOG.md b/packages/battery/battery/CHANGELOG.md index 260f3efeb8ad..c9bf41a81baf 100644 --- a/packages/battery/battery/CHANGELOG.md +++ b/packages/battery/battery/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.9 + +* Update Flutter SDK constraint. + ## 1.0.8 * Update Dart SDK constraint in example. diff --git a/packages/battery/battery/pubspec.yaml b/packages/battery/battery/pubspec.yaml index ec747190ac69..c7d4f0a9f5c2 100644 --- a/packages/battery/battery/pubspec.yaml +++ b/packages/battery/battery/pubspec.yaml @@ -2,7 +2,7 @@ name: battery description: Flutter plugin for accessing information about the battery state (full, charging, discharging) on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/battery/battery -version: 1.0.8 +version: 1.0.9 flutter: plugin: @@ -32,4 +32,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/battery/battery_platform_interface/CHANGELOG.md b/packages/battery/battery_platform_interface/CHANGELOG.md index 6fadda91b380..09ac38cc5b4b 100644 --- a/packages/battery/battery_platform_interface/CHANGELOG.md +++ b/packages/battery/battery_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.1 + +- Update Flutter SDK constraint. + ## 1.0.0 - Initial open-source release. diff --git a/packages/battery/battery_platform_interface/pubspec.yaml b/packages/battery/battery_platform_interface/pubspec.yaml index 6c571debc7b0..e88ef378be6e 100644 --- a/packages/battery/battery_platform_interface/pubspec.yaml +++ b/packages/battery/battery_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the battery plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/battery # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.0 +version: 1.0.1 dependencies: flutter: @@ -19,4 +19,4 @@ dev_dependencies: environment: sdk: ">=2.7.0 <3.0.0" - flutter: ">=1.9.1+hotfix.4 <2.0.0" + flutter: ">=1.9.1+hotfix.4" diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index 0a6c050844fa..d1d11c4d8877 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.8+19 + +* Update Flutter SDK constraint. + ## 0.5.8+18 * Suppress unchecked warning in Android tests which prevented the tests to compile. diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index af8979d0df03..146219d8366f 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -2,7 +2,7 @@ name: camera description: A Flutter plugin for getting information about and controlling the camera on Android and iOS. Supports previewing the camera feed, capturing images, capturing video, and streaming image buffers to dart. -version: 0.5.8+18 +version: 0.5.8+19 homepage: https://github.com/flutter/plugins/tree/master/packages/camera/camera dependencies: @@ -29,4 +29,4 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/camera/camera_platform_interface/CHANGELOG.md b/packages/camera/camera_platform_interface/CHANGELOG.md index ac0dce2cb4ea..500e8d67a6e4 100644 --- a/packages/camera/camera_platform_interface/CHANGELOG.md +++ b/packages/camera/camera_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.3 + +- Update Flutter SDK constraint. + ## 1.0.2 - Added interface methods to support zoom features. diff --git a/packages/camera/camera_platform_interface/pubspec.yaml b/packages/camera/camera_platform_interface/pubspec.yaml index 1d1a7ec4565b..9349c5536ff2 100644 --- a/packages/camera/camera_platform_interface/pubspec.yaml +++ b/packages/camera/camera_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the camera plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/camera/camera_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.2 +version: 1.0.3 dependencies: flutter: @@ -22,4 +22,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.22.0 <2.0.0" + flutter: ">=1.22.0" diff --git a/packages/connectivity/connectivity/CHANGELOG.md b/packages/connectivity/connectivity/CHANGELOG.md index 72b6d9b6513a..b993bf15dc8b 100644 --- a/packages/connectivity/connectivity/CHANGELOG.md +++ b/packages/connectivity/connectivity/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.3 + +* Update Flutter SDK constraint. + ## 2.0.2 * Android: Fix IllegalArgumentException. diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml index 91d06373ab83..1a53f42fa3cb 100644 --- a/packages/connectivity/connectivity/pubspec.yaml +++ b/packages/connectivity/connectivity/pubspec.yaml @@ -2,7 +2,7 @@ name: connectivity description: Flutter plugin for discovering the state of the network (WiFi & mobile/cellular) connectivity on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity -version: 2.0.2 +version: 2.0.3 flutter: plugin: @@ -38,4 +38,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/connectivity/connectivity_macos/CHANGELOG.md b/packages/connectivity/connectivity_macos/CHANGELOG.md index 87910374bb8b..f7c893e6fdb4 100644 --- a/packages/connectivity/connectivity_macos/CHANGELOG.md +++ b/packages/connectivity/connectivity_macos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.0+8 + +* Update Flutter SDK constraint. + ## 0.1.0+7 * Remove unused `test` dependency. diff --git a/packages/connectivity/connectivity_macos/pubspec.yaml b/packages/connectivity/connectivity_macos/pubspec.yaml index 2ab493072f8c..acd608fa2505 100644 --- a/packages/connectivity/connectivity_macos/pubspec.yaml +++ b/packages/connectivity/connectivity_macos/pubspec.yaml @@ -3,7 +3,7 @@ description: macOS implementation of the connectivity plugin. # 0.1.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.1.0+7 +version: 0.1.0+8 homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity_macos flutter: @@ -14,7 +14,7 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" dependencies: flutter: diff --git a/packages/connectivity/connectivity_platform_interface/CHANGELOG.md b/packages/connectivity/connectivity_platform_interface/CHANGELOG.md index e45f8f7e4d99..2a16860c3cc4 100644 --- a/packages/connectivity/connectivity_platform_interface/CHANGELOG.md +++ b/packages/connectivity/connectivity_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.7 + +* Update Flutter SDK constraint. + ## 1.0.6 * Update lower bound of dart dependency to 2.1.0. diff --git a/packages/connectivity/connectivity_platform_interface/pubspec.yaml b/packages/connectivity/connectivity_platform_interface/pubspec.yaml index 5bafcf9b806b..7aa415c9d36f 100644 --- a/packages/connectivity/connectivity_platform_interface/pubspec.yaml +++ b/packages/connectivity/connectivity_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the connectivity plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.6 +version: 1.0.7 dependencies: flutter: @@ -18,4 +18,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/cross_file/CHANGELOG.md b/packages/cross_file/CHANGELOG.md index 3b5ae7756a98..b5d8a5695c5e 100644 --- a/packages/cross_file/CHANGELOG.md +++ b/packages/cross_file/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.0+1 + +- Update Flutter SDK constraint. + ## 0.1.0 - Initial open-source release \ No newline at end of file diff --git a/packages/cross_file/pubspec.yaml b/packages/cross_file/pubspec.yaml index 40084d3d1ea0..495a0ced5eee 100644 --- a/packages/cross_file/pubspec.yaml +++ b/packages/cross_file/pubspec.yaml @@ -1,8 +1,7 @@ - name: cross_file description: An abstraction to allow working with files across multiple platforms. homepage: https://github.com/flutter/plugins/tree/master/packages/cross_file -version: 0.1.0 +version: 0.1.0+1 dependencies: flutter: @@ -17,4 +16,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.22.0 <2.0.0" \ No newline at end of file + flutter: ">=1.22.0" From af9d38b1830d2d5326bee52da4803cad70159173 Mon Sep 17 00:00:00 2001 From: Michael Thomsen Date: Sat, 12 Dec 2020 00:46:35 +0100 Subject: [PATCH 05/24] [d-g] Update Flutter SDK constraint (#3321) Update Flutter SDK constraint to match templates. --- packages/device_info/device_info/CHANGELOG.md | 4 ++++ packages/device_info/device_info/pubspec.yaml | 4 ++-- .../device_info/device_info_platform_interface/CHANGELOG.md | 4 ++++ .../device_info/device_info_platform_interface/pubspec.yaml | 4 ++-- packages/espresso/CHANGELOG.md | 4 ++++ packages/espresso/pubspec.yaml | 4 ++-- packages/file_selector/file_selector/CHANGELOG.md | 4 ++++ packages/file_selector/file_selector/pubspec.yaml | 4 ++-- .../file_selector_platform_interface/CHANGELOG.md | 4 ++++ .../file_selector_platform_interface/pubspec.yaml | 4 ++-- packages/flutter_plugin_android_lifecycle/CHANGELOG.md | 4 ++++ packages/flutter_plugin_android_lifecycle/pubspec.yaml | 4 ++-- packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md | 4 ++++ packages/google_maps_flutter/google_maps_flutter/pubspec.yaml | 4 ++-- .../google_maps_flutter_platform_interface/CHANGELOG.md | 4 ++++ .../google_maps_flutter_platform_interface/pubspec.yaml | 4 ++-- .../google_maps_flutter/google_maps_flutter_web/CHANGELOG.md | 4 ++++ .../google_maps_flutter/google_maps_flutter_web/pubspec.yaml | 4 ++-- .../extension_google_sign_in_as_googleapis_auth/CHANGELOG.md | 4 ++++ .../extension_google_sign_in_as_googleapis_auth/pubspec.yaml | 4 ++-- packages/google_sign_in/google_sign_in/CHANGELOG.md | 4 ++++ packages/google_sign_in/google_sign_in/pubspec.yaml | 4 ++-- .../google_sign_in_platform_interface/CHANGELOG.md | 4 ++++ .../google_sign_in_platform_interface/pubspec.yaml | 4 ++-- packages/google_sign_in/google_sign_in_web/CHANGELOG.md | 4 ++++ packages/google_sign_in/google_sign_in_web/pubspec.yaml | 4 ++-- 26 files changed, 78 insertions(+), 26 deletions(-) diff --git a/packages/device_info/device_info/CHANGELOG.md b/packages/device_info/device_info/CHANGELOG.md index 06b327f4a198..29382c1ccb61 100644 --- a/packages/device_info/device_info/CHANGELOG.md +++ b/packages/device_info/device_info/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.1 + +* Update Flutter SDK constraint. + ## 1.0.0 * Announce 1.0.0. diff --git a/packages/device_info/device_info/pubspec.yaml b/packages/device_info/device_info/pubspec.yaml index 5b00750fcbbc..0f31234414f5 100644 --- a/packages/device_info/device_info/pubspec.yaml +++ b/packages/device_info/device_info/pubspec.yaml @@ -2,7 +2,7 @@ name: device_info description: Flutter plugin providing detailed information about the device (make, model, etc.), and Android or iOS version the app is running on. homepage: https://github.com/flutter/plugins/tree/master/packages/device_info -version: 1.0.0 +version: 1.0.1 flutter: plugin: @@ -26,4 +26,4 @@ dev_dependencies: environment: sdk: ">=2.1.0<3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/device_info/device_info_platform_interface/CHANGELOG.md b/packages/device_info/device_info_platform_interface/CHANGELOG.md index 8a7eb6c46be3..e513c662bef7 100644 --- a/packages/device_info/device_info_platform_interface/CHANGELOG.md +++ b/packages/device_info/device_info_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.2 + +- Update Flutter SDK constraint. + ## 1.0.1 - Documentation typo fixed. diff --git a/packages/device_info/device_info_platform_interface/pubspec.yaml b/packages/device_info/device_info_platform_interface/pubspec.yaml index 656e5b24c373..fedaba6c6522 100644 --- a/packages/device_info/device_info_platform_interface/pubspec.yaml +++ b/packages/device_info/device_info_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the device_info plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/device_info # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.1 +version: 1.0.2 dependencies: flutter: @@ -19,4 +19,4 @@ dev_dependencies: environment: sdk: ">=2.7.0 <3.0.0" - flutter: ">=1.9.1+hotfix.4 <2.0.0" + flutter: ">=1.9.1+hotfix.4" diff --git a/packages/espresso/CHANGELOG.md b/packages/espresso/CHANGELOG.md index 0ab068056df9..fe43202b7654 100644 --- a/packages/espresso/CHANGELOG.md +++ b/packages/espresso/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.1+9 + +* Update Flutter SDK constraint. + ## 0.0.1+8 * Android: Handle deprecation & unchecked warning as error. diff --git a/packages/espresso/pubspec.yaml b/packages/espresso/pubspec.yaml index 39b88cb98940..e7e1f6691ed3 100644 --- a/packages/espresso/pubspec.yaml +++ b/packages/espresso/pubspec.yaml @@ -1,11 +1,11 @@ name: espresso description: Java classes for testing Flutter apps using Espresso. -version: 0.0.1+8 +version: 0.0.1+9 homepage: https://github.com/flutter/plugins/espresso environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" dependencies: flutter: diff --git a/packages/file_selector/file_selector/CHANGELOG.md b/packages/file_selector/file_selector/CHANGELOG.md index 8dab88a33cef..92136485a447 100644 --- a/packages/file_selector/file_selector/CHANGELOG.md +++ b/packages/file_selector/file_selector/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.7.0+1 + +* Update Flutter SDK constraint. + ## 0.7.0 * Initial Open Source release. diff --git a/packages/file_selector/file_selector/pubspec.yaml b/packages/file_selector/file_selector/pubspec.yaml index 5a90f048c314..f095ba1f6a36 100644 --- a/packages/file_selector/file_selector/pubspec.yaml +++ b/packages/file_selector/file_selector/pubspec.yaml @@ -1,7 +1,7 @@ name: file_selector description: Flutter plugin for opening and saving files. homepage: https://github.com/flutter/plugins/tree/master/packages/file_selector/file_selector -version: 0.7.0 +version: 0.7.0+1 dependencies: flutter: @@ -18,4 +18,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/file_selector/file_selector_platform_interface/CHANGELOG.md b/packages/file_selector/file_selector_platform_interface/CHANGELOG.md index 7f1d5732ec9b..0d6d6d08c298 100644 --- a/packages/file_selector/file_selector_platform_interface/CHANGELOG.md +++ b/packages/file_selector/file_selector_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.3 + +* Update Flutter SDK constraint. + ## 1.0.2 * Replace locally defined `XFile` types with the versions from the [cross_file](https://pub.dev/packages/cross_file) package. diff --git a/packages/file_selector/file_selector_platform_interface/pubspec.yaml b/packages/file_selector/file_selector_platform_interface/pubspec.yaml index a0a3d28922fe..2d0b7c954ece 100644 --- a/packages/file_selector/file_selector_platform_interface/pubspec.yaml +++ b/packages/file_selector/file_selector_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the file_selector plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/file_selector/file_selector_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.2 +version: 1.0.3 dependencies: flutter: @@ -22,4 +22,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.9.1+hotfix.4 <2.0.0" + flutter: ">=1.9.1+hotfix.4" diff --git a/packages/flutter_plugin_android_lifecycle/CHANGELOG.md b/packages/flutter_plugin_android_lifecycle/CHANGELOG.md index 401be5f5278a..43797321f614 100644 --- a/packages/flutter_plugin_android_lifecycle/CHANGELOG.md +++ b/packages/flutter_plugin_android_lifecycle/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.12 + +* Update Flutter SDK constraint. + ## 1.0.11 * Keep handling deprecated Android v1 classes for backward compatibility. diff --git a/packages/flutter_plugin_android_lifecycle/pubspec.yaml b/packages/flutter_plugin_android_lifecycle/pubspec.yaml index a671381b3f47..57441d08de7a 100644 --- a/packages/flutter_plugin_android_lifecycle/pubspec.yaml +++ b/packages/flutter_plugin_android_lifecycle/pubspec.yaml @@ -1,11 +1,11 @@ name: flutter_plugin_android_lifecycle description: Flutter plugin for accessing an Android Lifecycle within other plugins. -version: 1.0.11 +version: 1.0.12 homepage: https://github.com/flutter/plugins/tree/master/packages/flutter_plugin_android_lifecycle environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13 <2.0.0" + flutter: ">=1.12.13" dependencies: flutter: diff --git a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md index 12e9ab4b55f7..75788a5d97fe 100644 --- a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.8 + +* Update Flutter SDK constraint. + ## 1.0.7 * Android: Handle deprecation & unchecked warning as error. diff --git a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml index 06d5fb2f4257..b2f23805d863 100644 --- a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml +++ b/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml @@ -1,7 +1,7 @@ name: google_maps_flutter description: A Flutter plugin for integrating Google Maps in iOS and Android applications. homepage: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter/google_maps_flutter -version: 1.0.7 +version: 1.0.8 dependencies: flutter: @@ -33,4 +33,4 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.22.0 <2.0.0" + flutter: ">=1.22.0" diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md index 0586ac414d97..b40fc9d40e5b 100644 --- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +* Update Flutter SDK constraint. + ## 1.0.5 * Temporarily add a `fromJson` constructor to `BitmapDescriptor` so serialized descriptors can be synchronously re-hydrated. This will be removed when a fix for [this issue](https://github.com/flutter/flutter/issues/70330) lands. diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml index a2b5ff56fee1..633478c5d636 100644 --- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml +++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the google_maps_flutter plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter/google_maps_flutter_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.5 +version: 1.0.6 dependencies: flutter: @@ -20,4 +20,4 @@ dev_dependencies: environment: sdk: ">=2.3.0 <3.0.0" - flutter: ">=1.9.1+hotfix.4 <2.0.0" + flutter: ">=1.9.1+hotfix.4" diff --git a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md index dcafa12a2c13..2d03ab254bc0 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.0+9 + +* Update Flutter SDK constraint. + ## 0.1.0+8 * Update `package:google_maps_flutter_platform_interface` to `^1.0.5`. diff --git a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml index 237415318aac..b41e24c25357 100644 --- a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml +++ b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml @@ -1,7 +1,7 @@ name: google_maps_flutter_web description: Web platform implementation of google_maps_flutter homepage: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter -version: 0.1.0+8 +version: 0.1.0+9 flutter: plugin: @@ -33,4 +33,4 @@ dev_dependencies: environment: sdk: ">=2.3.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" diff --git a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/CHANGELOG.md b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/CHANGELOG.md index 3425ff6c34b0..b2e5e7920db3 100644 --- a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/CHANGELOG.md +++ b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.2 + +* Update Flutter SDK constraint. + ## 1.0.1 * Update android compileSdkVersion to 29. diff --git a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/pubspec.yaml b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/pubspec.yaml index c978ce446714..39243e719b8a 100644 --- a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/pubspec.yaml +++ b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/pubspec.yaml @@ -6,7 +6,7 @@ name: extension_google_sign_in_as_googleapis_auth description: A bridge package between google_sign_in and googleapis_auth, to create Authenticated Clients from google_sign_in user credentials. -version: 1.0.1 +version: 1.0.2 homepage: https://github.com/flutter/plugins/google_sign_in/extension_google_sign_in_as_googleapis_auth dependencies: @@ -25,4 +25,4 @@ dev_dependencies: environment: sdk: ">=2.7.0 <3.0.0" - flutter: ">=1.12.13+hotfix.4 <2.0.0" + flutter: ">=1.12.13+hotfix.4" diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md index 7f4bfddfa45a..3c9605eb9752 100644 --- a/packages/google_sign_in/google_sign_in/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.5.7 + +* Update Flutter SDK constraint. + ## 4.5.6 * Fix deprecated member warning in tests. diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml index a63091b945b2..ea1218543d83 100644 --- a/packages/google_sign_in/google_sign_in/pubspec.yaml +++ b/packages/google_sign_in/google_sign_in/pubspec.yaml @@ -2,7 +2,7 @@ name: google_sign_in description: Flutter plugin for Google Sign-In, a secure authentication system for signing in with a Google account on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in -version: 4.5.6 +version: 4.5.7 flutter: plugin: @@ -39,4 +39,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.4 <2.0.0" + flutter: ">=1.12.13+hotfix.4" diff --git a/packages/google_sign_in/google_sign_in_platform_interface/CHANGELOG.md b/packages/google_sign_in/google_sign_in_platform_interface/CHANGELOG.md index aa8ad2cff80f..e69e912195bf 100644 --- a/packages/google_sign_in/google_sign_in_platform_interface/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.3 + +* Update Flutter SDK constraint. + ## 1.1.2 * Update lower bound of dart dependency to 2.1.0. diff --git a/packages/google_sign_in/google_sign_in_platform_interface/pubspec.yaml b/packages/google_sign_in/google_sign_in_platform_interface/pubspec.yaml index 7bc63d84110c..8edeba0072a8 100644 --- a/packages/google_sign_in/google_sign_in_platform_interface/pubspec.yaml +++ b/packages/google_sign_in/google_sign_in_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the google_sign_in plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.1.2 +version: 1.1.3 dependencies: flutter: @@ -19,4 +19,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" diff --git a/packages/google_sign_in/google_sign_in_web/CHANGELOG.md b/packages/google_sign_in/google_sign_in_web/CHANGELOG.md index d71badc53bfc..d1353f723fd5 100644 --- a/packages/google_sign_in/google_sign_in_web/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.2+1 + +* Update Flutter SDK constraint. + ## 0.9.2 * Throw PlatformExceptions from where the GMaps SDK may throw exceptions: `init()` and `signIn()`. diff --git a/packages/google_sign_in/google_sign_in_web/pubspec.yaml b/packages/google_sign_in/google_sign_in_web/pubspec.yaml index 70758ac6830d..ac9d36bd15be 100644 --- a/packages/google_sign_in/google_sign_in_web/pubspec.yaml +++ b/packages/google_sign_in/google_sign_in_web/pubspec.yaml @@ -2,7 +2,7 @@ name: google_sign_in_web description: Flutter plugin for Google Sign-In, a secure authentication system for signing in with a Google account on Android, iOS and Web. homepage: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in_web -version: 0.9.2 +version: 0.9.2+1 flutter: plugin: @@ -31,4 +31,4 @@ dev_dependencies: environment: sdk: ">=2.6.0 <3.0.0" - flutter: ">=1.12.13+hotfix.4 <2.0.0" + flutter: ">=1.12.13+hotfix.4" From 2cca4fed7696b729afe659b574684627063e0266 Mon Sep 17 00:00:00 2001 From: Michael Thomsen Date: Sat, 12 Dec 2020 00:54:58 +0100 Subject: [PATCH 06/24] [i-p] Update Flutter SDK constraint (#3322) Update Flutter SDK constraint to match templates. --- packages/image_picker/image_picker/CHANGELOG.md | 4 ++++ packages/image_picker/image_picker/pubspec.yaml | 4 ++-- packages/image_picker/image_picker_for_web/CHANGELOG.md | 4 ++++ packages/image_picker/image_picker_for_web/pubspec.yaml | 4 ++-- .../image_picker_platform_interface/CHANGELOG.md | 4 ++++ .../image_picker_platform_interface/pubspec.yaml | 4 ++-- packages/in_app_purchase/CHANGELOG.md | 4 ++++ packages/in_app_purchase/pubspec.yaml | 4 ++-- packages/integration_test/CHANGELOG.md | 4 ++++ packages/integration_test/pubspec.yaml | 4 ++-- packages/ios_platform_images/CHANGELOG.md | 4 ++++ packages/ios_platform_images/pubspec.yaml | 6 ++---- packages/local_auth/CHANGELOG.md | 4 ++++ packages/local_auth/pubspec.yaml | 4 ++-- packages/package_info/CHANGELOG.md | 4 ++++ packages/package_info/pubspec.yaml | 4 ++-- packages/path_provider/path_provider/CHANGELOG.md | 4 ++++ packages/path_provider/path_provider/pubspec.yaml | 4 ++-- packages/path_provider/path_provider_linux/CHANGELOG.md | 4 ++++ packages/path_provider/path_provider_linux/pubspec.yaml | 4 ++-- packages/path_provider/path_provider_macos/CHANGELOG.md | 4 ++++ packages/path_provider/path_provider_macos/pubspec.yaml | 4 ++-- .../path_provider_platform_interface/CHANGELOG.md | 4 ++++ .../path_provider_platform_interface/pubspec.yaml | 4 ++-- packages/path_provider/path_provider_windows/CHANGELOG.md | 4 ++++ packages/path_provider/path_provider_windows/pubspec.yaml | 4 ++-- 26 files changed, 78 insertions(+), 28 deletions(-) diff --git a/packages/image_picker/image_picker/CHANGELOG.md b/packages/image_picker/image_picker/CHANGELOG.md index 970ddf1ed7ed..70a1cb21b354 100644 --- a/packages/image_picker/image_picker/CHANGELOG.md +++ b/packages/image_picker/image_picker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.7+16 + +* Update Flutter SDK constraint. + ## 0.6.7+15 * Fix element type in XCUITests to look for staticText type when searching for texts. diff --git a/packages/image_picker/image_picker/pubspec.yaml b/packages/image_picker/image_picker/pubspec.yaml index 226602a99403..4eb16beec641 100755 --- a/packages/image_picker/image_picker/pubspec.yaml +++ b/packages/image_picker/image_picker/pubspec.yaml @@ -2,7 +2,7 @@ name: image_picker description: Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker/image_picker -version: 0.6.7+15 +version: 0.6.7+16 flutter: plugin: @@ -29,4 +29,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" diff --git a/packages/image_picker/image_picker_for_web/CHANGELOG.md b/packages/image_picker/image_picker_for_web/CHANGELOG.md index 604314240a1e..4c452ee78de9 100644 --- a/packages/image_picker/image_picker_for_web/CHANGELOG.md +++ b/packages/image_picker/image_picker_for_web/CHANGELOG.md @@ -1,3 +1,7 @@ +# 0.1.0+3 + +* Update Flutter SDK constraint. + # 0.1.0+2 * Adds Video MIME Types for the safari browser for acception diff --git a/packages/image_picker/image_picker_for_web/pubspec.yaml b/packages/image_picker/image_picker_for_web/pubspec.yaml index 32e89437415e..b7e079b39ce0 100644 --- a/packages/image_picker/image_picker_for_web/pubspec.yaml +++ b/packages/image_picker/image_picker_for_web/pubspec.yaml @@ -4,7 +4,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker/i # 0.1.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.1.0+2 +version: 0.1.0+3 flutter: plugin: @@ -29,4 +29,4 @@ dev_dependencies: environment: sdk: ">=2.5.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" diff --git a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md index a7da543bd7f9..efcef0146cdc 100644 --- a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md +++ b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.5 + +* Update Flutter SDK constraint. + ## 1.1.4 * Pass `Uri`s to `package:http` methods, instead of strings, in preparation for a major version update in `http`. diff --git a/packages/image_picker/image_picker_platform_interface/pubspec.yaml b/packages/image_picker/image_picker_platform_interface/pubspec.yaml index 2ada3b66d700..7943a2a3eccd 100644 --- a/packages/image_picker/image_picker_platform_interface/pubspec.yaml +++ b/packages/image_picker/image_picker_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the image_picker plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker/image_picker_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.1.4 +version: 1.1.5 dependencies: flutter: @@ -20,4 +20,4 @@ dev_dependencies: environment: sdk: ">=2.5.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" diff --git a/packages/in_app_purchase/CHANGELOG.md b/packages/in_app_purchase/CHANGELOG.md index 6207da9b403c..7b3301cf41cf 100644 --- a/packages/in_app_purchase/CHANGELOG.md +++ b/packages/in_app_purchase/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.4+17 + +* Update Flutter SDK constraint. + ## 0.3.4+16 * Add Dartdocs to all public APIs. diff --git a/packages/in_app_purchase/pubspec.yaml b/packages/in_app_purchase/pubspec.yaml index eda865e487f7..4b009b1383fd 100644 --- a/packages/in_app_purchase/pubspec.yaml +++ b/packages/in_app_purchase/pubspec.yaml @@ -1,7 +1,7 @@ name: in_app_purchase description: A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play. homepage: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase -version: 0.3.4+16 +version: 0.3.4+17 dependencies: async: ^2.0.8 @@ -37,4 +37,4 @@ flutter: environment: sdk: ">=2.3.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/integration_test/CHANGELOG.md b/packages/integration_test/CHANGELOG.md index 912e7404e906..4bbfe591d6cc 100644 --- a/packages/integration_test/CHANGELOG.md +++ b/packages/integration_test/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.2 + +* Update Flutter SDK constraint. + ## 1.0.1 * Remove usages of deprecated `List` constructor. diff --git a/packages/integration_test/pubspec.yaml b/packages/integration_test/pubspec.yaml index bef1ceb0a2e6..997faa79e1ca 100644 --- a/packages/integration_test/pubspec.yaml +++ b/packages/integration_test/pubspec.yaml @@ -1,11 +1,11 @@ name: integration_test description: Runs tests that use the flutter_test API as integration tests. -version: 1.0.1 +version: 1.0.2 homepage: https://github.com/flutter/plugins/tree/master/packages/integration_test environment: sdk: ">=2.2.2 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" dependencies: flutter: diff --git a/packages/ios_platform_images/CHANGELOG.md b/packages/ios_platform_images/CHANGELOG.md index a83f22ec7571..4b11b40f5510 100644 --- a/packages/ios_platform_images/CHANGELOG.md +++ b/packages/ios_platform_images/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.2+4 + +* Update Flutter SDK constraint. + ## 0.1.2+3 * Remove no-op android folder in the example app. diff --git a/packages/ios_platform_images/pubspec.yaml b/packages/ios_platform_images/pubspec.yaml index 482097a515b8..7049b62cf00a 100644 --- a/packages/ios_platform_images/pubspec.yaml +++ b/packages/ios_platform_images/pubspec.yaml @@ -1,11 +1,11 @@ name: ios_platform_images description: A plugin to share images between Flutter and iOS in add-to-app setups. -version: 0.1.2+3 +version: 0.1.2+4 homepage: https://github.com/flutter/plugins/tree/master/packages/ios_platform_images/ios_platform_images environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" dependencies: flutter: @@ -29,7 +29,6 @@ flutter: platforms: ios: pluginClass: IosPlatformImagesPlugin - # To add assets to your plugin package, add an assets section, like this: # assets: # - images/a_dot_burr.jpeg @@ -40,7 +39,6 @@ flutter: # # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. - # To add custom fonts to your plugin package, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a diff --git a/packages/local_auth/CHANGELOG.md b/packages/local_auth/CHANGELOG.md index 96388a76ab4f..0ea59f37bf45 100644 --- a/packages/local_auth/CHANGELOG.md +++ b/packages/local_auth/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.3+5 + +* Update Flutter SDK constraint. + ## 0.6.3+4 * Update Dart SDK constraint in example. diff --git a/packages/local_auth/pubspec.yaml b/packages/local_auth/pubspec.yaml index 6ba77aca6679..834980b7131d 100644 --- a/packages/local_auth/pubspec.yaml +++ b/packages/local_auth/pubspec.yaml @@ -2,7 +2,7 @@ name: local_auth description: Flutter plugin for Android and iOS device authentication sensors such as Fingerprint Reader and Touch ID. homepage: https://github.com/flutter/plugins/tree/master/packages/local_auth -version: 0.6.3+4 +version: 0.6.3+5 flutter: plugin: @@ -32,4 +32,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/package_info/CHANGELOG.md b/packages/package_info/CHANGELOG.md index 21319fe4fbf1..ebb95c1da17e 100644 --- a/packages/package_info/CHANGELOG.md +++ b/packages/package_info/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.3+3 + +* Update Flutter SDK constraint. + ## 0.4.3+2 * Remove unused `test` dependency. diff --git a/packages/package_info/pubspec.yaml b/packages/package_info/pubspec.yaml index cb46ca66b9a4..884a71659a48 100644 --- a/packages/package_info/pubspec.yaml +++ b/packages/package_info/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/package_info # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.4.3+2 +version: 0.4.3+3 flutter: plugin: @@ -33,4 +33,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/path_provider/path_provider/CHANGELOG.md b/packages/path_provider/path_provider/CHANGELOG.md index 646a2e36bc9e..551e040f0488 100644 --- a/packages/path_provider/path_provider/CHANGELOG.md +++ b/packages/path_provider/path_provider/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.6.25 + +* Update Flutter SDK constraint. + ## 1.6.24 * Remove unused `test` dependency. diff --git a/packages/path_provider/path_provider/pubspec.yaml b/packages/path_provider/path_provider/pubspec.yaml index b3960941acff..4be15fad09ff 100644 --- a/packages/path_provider/path_provider/pubspec.yaml +++ b/packages/path_provider/path_provider/pubspec.yaml @@ -1,7 +1,7 @@ name: path_provider description: Flutter plugin for getting commonly used locations on host platform file systems, such as the temp and app data directories. homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider -version: 1.6.24 +version: 1.6.25 flutter: plugin: @@ -40,4 +40,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/path_provider/path_provider_linux/CHANGELOG.md b/packages/path_provider/path_provider_linux/CHANGELOG.md index bf043c6e6954..ee382b04710b 100644 --- a/packages/path_provider/path_provider_linux/CHANGELOG.md +++ b/packages/path_provider/path_provider_linux/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.1+3 + +* Update Flutter SDK constraint. + ## 0.1.1+2 * Log errors in the example when calls to the `path_provider` fail. diff --git a/packages/path_provider/path_provider_linux/pubspec.yaml b/packages/path_provider/path_provider_linux/pubspec.yaml index fac82d24829f..adabbdd45246 100644 --- a/packages/path_provider/path_provider_linux/pubspec.yaml +++ b/packages/path_provider/path_provider_linux/pubspec.yaml @@ -1,6 +1,6 @@ name: path_provider_linux description: linux implementation of the path_provider plugin -version: 0.1.1+2 +version: 0.1.1+3 homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider_linux flutter: @@ -12,7 +12,7 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" dependencies: path: ^1.6.4 diff --git a/packages/path_provider/path_provider_macos/CHANGELOG.md b/packages/path_provider/path_provider_macos/CHANGELOG.md index ba2a38e563d6..d9be6859e125 100644 --- a/packages/path_provider/path_provider_macos/CHANGELOG.md +++ b/packages/path_provider/path_provider_macos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.4+7 + +* Update Flutter SDK constraint. + ## 0.0.4+6 * Remove unused `test` dependency. diff --git a/packages/path_provider/path_provider_macos/pubspec.yaml b/packages/path_provider/path_provider_macos/pubspec.yaml index 69241491d29d..05f03a7930ba 100644 --- a/packages/path_provider/path_provider_macos/pubspec.yaml +++ b/packages/path_provider/path_provider_macos/pubspec.yaml @@ -3,7 +3,7 @@ description: macOS implementation of the path_provider plugin # 0.0.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.0.4+6 +version: 0.0.4+7 homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider_macos flutter: @@ -14,7 +14,7 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" dependencies: flutter: diff --git a/packages/path_provider/path_provider_platform_interface/CHANGELOG.md b/packages/path_provider/path_provider_platform_interface/CHANGELOG.md index 744764c3215a..47e4fee3f13b 100644 --- a/packages/path_provider/path_provider_platform_interface/CHANGELOG.md +++ b/packages/path_provider/path_provider_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.5 + +* Update Flutter SDK constraint. + ## 1.0.4 * Remove unused `test` dependency. diff --git a/packages/path_provider/path_provider_platform_interface/pubspec.yaml b/packages/path_provider/path_provider_platform_interface/pubspec.yaml index 36b539ba1077..fc3d4696b51c 100644 --- a/packages/path_provider/path_provider_platform_interface/pubspec.yaml +++ b/packages/path_provider/path_provider_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the path_provider plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.4 +version: 1.0.5 dependencies: flutter: @@ -19,4 +19,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" diff --git a/packages/path_provider/path_provider_windows/CHANGELOG.md b/packages/path_provider/path_provider_windows/CHANGELOG.md index bdb0ae5b2d9f..ef1f5043a2b7 100644 --- a/packages/path_provider/path_provider_windows/CHANGELOG.md +++ b/packages/path_provider/path_provider_windows/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.4+4 + +* Update Flutter SDK constraint. + ## 0.0.4+3 * Remove unused `test` dependency. diff --git a/packages/path_provider/path_provider_windows/pubspec.yaml b/packages/path_provider/path_provider_windows/pubspec.yaml index 342774680dc4..62185f42e765 100644 --- a/packages/path_provider/path_provider_windows/pubspec.yaml +++ b/packages/path_provider/path_provider_windows/pubspec.yaml @@ -1,7 +1,7 @@ name: path_provider_windows description: Windows implementation of the path_provider plugin homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider_windows -version: 0.0.4+3 +version: 0.0.4+4 flutter: plugin: @@ -26,4 +26,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.4 <2.0.0" + flutter: ">=1.12.13+hotfix.4" From 0251017cc973924ee40aebf5c2e338c82299f536 Mon Sep 17 00:00:00 2001 From: Michael Thomsen Date: Sat, 12 Dec 2020 00:55:37 +0100 Subject: [PATCH 07/24] [q-w] Update Flutter SDK constraint (#3323) Update Flutter SDK constraint to match templates. --- packages/quick_actions/CHANGELOG.md | 4 ++++ packages/quick_actions/pubspec.yaml | 4 ++-- packages/sensors/CHANGELOG.md | 4 ++++ packages/sensors/pubspec.yaml | 4 ++-- packages/share/CHANGELOG.md | 4 ++++ packages/share/pubspec.yaml | 4 ++-- packages/shared_preferences/shared_preferences/CHANGELOG.md | 4 ++++ packages/shared_preferences/shared_preferences/pubspec.yaml | 4 ++-- .../shared_preferences_linux/CHANGELOG.md | 4 ++++ .../shared_preferences_linux/pubspec.yaml | 4 ++-- .../shared_preferences_macos/CHANGELOG.md | 4 ++++ .../shared_preferences_macos/pubspec.yaml | 4 ++-- .../shared_preferences_platform_interface/CHANGELOG.md | 4 ++++ .../shared_preferences_platform_interface/pubspec.yaml | 4 ++-- .../shared_preferences/shared_preferences_web/CHANGELOG.md | 4 ++++ .../shared_preferences/shared_preferences_web/pubspec.yaml | 4 ++-- .../shared_preferences_windows/CHANGELOG.md | 4 ++++ .../shared_preferences_windows/pubspec.yaml | 4 ++-- packages/url_launcher/url_launcher/CHANGELOG.md | 4 ++++ packages/url_launcher/url_launcher/pubspec.yaml | 4 ++-- packages/url_launcher/url_launcher_linux/CHANGELOG.md | 4 ++++ packages/url_launcher/url_launcher_linux/pubspec.yaml | 4 ++-- packages/url_launcher/url_launcher_macos/CHANGELOG.md | 4 ++++ packages/url_launcher/url_launcher_macos/pubspec.yaml | 4 ++-- .../url_launcher_platform_interface/CHANGELOG.md | 4 ++++ .../url_launcher_platform_interface/pubspec.yaml | 4 ++-- packages/url_launcher/url_launcher_web/CHANGELOG.md | 4 ++++ packages/url_launcher/url_launcher_web/pubspec.yaml | 4 ++-- packages/url_launcher/url_launcher_windows/CHANGELOG.md | 4 ++++ packages/url_launcher/url_launcher_windows/pubspec.yaml | 4 ++-- packages/video_player/video_player/CHANGELOG.md | 4 ++++ packages/video_player/video_player/pubspec.yaml | 6 +++--- .../video_player_platform_interface/CHANGELOG.md | 4 ++++ .../video_player_platform_interface/pubspec.yaml | 4 ++-- packages/video_player/video_player_web/CHANGELOG.md | 4 ++++ packages/video_player/video_player_web/pubspec.yaml | 4 ++-- packages/webview_flutter/CHANGELOG.md | 4 ++++ packages/webview_flutter/pubspec.yaml | 4 ++-- packages/wifi_info_flutter/wifi_info_flutter/CHANGELOG.md | 4 ++++ packages/wifi_info_flutter/wifi_info_flutter/pubspec.yaml | 4 ++-- .../wifi_info_flutter_platform_interface/CHANGELOG.md | 4 ++++ .../wifi_info_flutter_platform_interface/pubspec.yaml | 4 ++-- 42 files changed, 127 insertions(+), 43 deletions(-) diff --git a/packages/quick_actions/CHANGELOG.md b/packages/quick_actions/CHANGELOG.md index 0742d73f500a..8126f08ae3a8 100644 --- a/packages/quick_actions/CHANGELOG.md +++ b/packages/quick_actions/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.0+11 + +* Update Flutter SDK constraint. + ## 0.4.0+10 * Update android compileSdkVersion to 29. diff --git a/packages/quick_actions/pubspec.yaml b/packages/quick_actions/pubspec.yaml index 187c5707ddea..ea363e842f08 100644 --- a/packages/quick_actions/pubspec.yaml +++ b/packages/quick_actions/pubspec.yaml @@ -2,7 +2,7 @@ name: quick_actions description: Flutter plugin for creating shortcuts on home screen, also known as Quick Actions on iOS and App Shortcuts on Android. homepage: https://github.com/flutter/plugins/tree/master/packages/quick_actions -version: 0.4.0+10 +version: 0.4.0+11 flutter: plugin: @@ -29,4 +29,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/sensors/CHANGELOG.md b/packages/sensors/CHANGELOG.md index a2693dd7ed0b..82500ae4edda 100644 --- a/packages/sensors/CHANGELOG.md +++ b/packages/sensors/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.2+7 + +* Update Flutter SDK constraint. + ## 0.4.2+6 * Update android compileSdkVersion to 29. diff --git a/packages/sensors/pubspec.yaml b/packages/sensors/pubspec.yaml index 4e830d9d0480..e1abc05a8496 100644 --- a/packages/sensors/pubspec.yaml +++ b/packages/sensors/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/sensors # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.4.2+6 +version: 0.4.2+7 flutter: plugin: @@ -31,4 +31,4 @@ dev_dependencies: environment: sdk: ">=2.1.0<3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/share/CHANGELOG.md b/packages/share/CHANGELOG.md index 883cd340ecfb..8a3806209c1c 100644 --- a/packages/share/CHANGELOG.md +++ b/packages/share/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.5+5 + +* Update Flutter SDK constraint. + ## 0.6.5+4 * Fix iPad share window not showing when `origin` is null. diff --git a/packages/share/pubspec.yaml b/packages/share/pubspec.yaml index 5bd79effe4a7..23644d290473 100644 --- a/packages/share/pubspec.yaml +++ b/packages/share/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/share # 0.6.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.6.5+4 +version: 0.6.5+5 flutter: plugin: @@ -33,4 +33,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/shared_preferences/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md index d86588b33098..407cf0ccdda4 100644 --- a/packages/shared_preferences/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.13+1 + +* Update Flutter SDK constraint. + ## 0.5.13 * Update integration test examples to use `testWidgets` instead of `test`. diff --git a/packages/shared_preferences/shared_preferences/pubspec.yaml b/packages/shared_preferences/shared_preferences/pubspec.yaml index 8897ee7c78fe..492027ac0e42 100644 --- a/packages/shared_preferences/shared_preferences/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/shared_prefere # 0.5.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.5.13 +version: 0.5.13+1 flutter: plugin: @@ -48,4 +48,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/shared_preferences/shared_preferences_linux/CHANGELOG.md b/packages/shared_preferences/shared_preferences_linux/CHANGELOG.md index 6a0a0414086b..9821b79c5cc2 100644 --- a/packages/shared_preferences/shared_preferences_linux/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences_linux/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.3+1 + +* Update Flutter SDK constraint. + ## 0.0.3 * Update integration test examples to use `testWidgets` instead of `test`. diff --git a/packages/shared_preferences/shared_preferences_linux/pubspec.yaml b/packages/shared_preferences/shared_preferences_linux/pubspec.yaml index 2548ca1f7965..50709aac5f8a 100644 --- a/packages/shared_preferences/shared_preferences_linux/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_linux/pubspec.yaml @@ -1,6 +1,6 @@ name: shared_preferences_linux description: Linux implementation of the shared_preferences plugin -version: 0.0.3 +version: 0.0.3+1 homepage: https://github.com/flutter/plugins/tree/master/packages/shared_preferences/shared_preferences_linux flutter: @@ -12,7 +12,7 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.8 <2.0.0" + flutter: ">=1.12.8" dependencies: file: ">=5.1.0 <7.0.0" diff --git a/packages/shared_preferences/shared_preferences_macos/CHANGELOG.md b/packages/shared_preferences/shared_preferences_macos/CHANGELOG.md index 177f1f2e02e2..3eff6db6949e 100644 --- a/packages/shared_preferences/shared_preferences_macos/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences_macos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.1+12 + +* Update Flutter SDK constraint. + ## 0.0.1+11 * Remove unused `test` dependency. diff --git a/packages/shared_preferences/shared_preferences_macos/pubspec.yaml b/packages/shared_preferences/shared_preferences_macos/pubspec.yaml index b161327e3f3d..afc5b9ec0b4e 100644 --- a/packages/shared_preferences/shared_preferences_macos/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_macos/pubspec.yaml @@ -3,7 +3,7 @@ description: macOS implementation of the shared_preferences plugin. # 0.0.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.0.1+11 +version: 0.0.1+12 homepage: https://github.com/flutter/plugins/tree/master/packages/shared_preferences/shared_preferences_macos flutter: @@ -14,7 +14,7 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.8 <2.0.0" + flutter: ">=1.12.8" dependencies: shared_preferences_platform_interface: ^1.0.0 diff --git a/packages/shared_preferences/shared_preferences_platform_interface/CHANGELOG.md b/packages/shared_preferences/shared_preferences_platform_interface/CHANGELOG.md index 5fe7b18160ba..88d3a9ac5f00 100644 --- a/packages/shared_preferences/shared_preferences_platform_interface/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.5 + +* Update Flutter SDK constraint. + ## 1.0.4 * Update lower bound of dart dependency to 2.1.0. diff --git a/packages/shared_preferences/shared_preferences_platform_interface/pubspec.yaml b/packages/shared_preferences/shared_preferences_platform_interface/pubspec.yaml index 3b8f2bfcada4..da31497df1c6 100644 --- a/packages/shared_preferences/shared_preferences_platform_interface/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_platform_interface/pubspec.yaml @@ -1,7 +1,7 @@ name: shared_preferences_platform_interface description: A common platform interface for the shared_preferences plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/shared_preferences/shared_preferences_platform_interface -version: 1.0.4 +version: 1.0.5 dependencies: meta: ^1.0.4 @@ -15,4 +15,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.8 <2.0.0" + flutter: ">=1.12.8" diff --git a/packages/shared_preferences/shared_preferences_web/CHANGELOG.md b/packages/shared_preferences/shared_preferences_web/CHANGELOG.md index b2076dd8c17e..2ba877856da6 100644 --- a/packages/shared_preferences/shared_preferences_web/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.2+8 + +* Update Flutter SDK constraint. + ## 0.1.2+7 * Removed Android folder from `shared_preferences_web`. diff --git a/packages/shared_preferences/shared_preferences_web/pubspec.yaml b/packages/shared_preferences/shared_preferences_web/pubspec.yaml index a153135b6da7..d657b2300727 100644 --- a/packages/shared_preferences/shared_preferences_web/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_web/pubspec.yaml @@ -4,7 +4,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/shared_prefere # 0.1.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.1.2+7 +version: 0.1.2+8 flutter: plugin: @@ -28,4 +28,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.4 <2.0.0" + flutter: ">=1.12.13+hotfix.4" diff --git a/packages/shared_preferences/shared_preferences_windows/CHANGELOG.md b/packages/shared_preferences/shared_preferences_windows/CHANGELOG.md index ee7b36884237..ecc790ef9bab 100644 --- a/packages/shared_preferences/shared_preferences_windows/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences_windows/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.2+1 + +* Update Flutter SDK constraint. + ## 0.0.2 * Update integration test examples to use `testWidgets` instead of `test`. diff --git a/packages/shared_preferences/shared_preferences_windows/pubspec.yaml b/packages/shared_preferences/shared_preferences_windows/pubspec.yaml index 32d4cb5c242c..ce559d5ea3fb 100644 --- a/packages/shared_preferences/shared_preferences_windows/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_windows/pubspec.yaml @@ -1,7 +1,7 @@ name: shared_preferences_windows description: Windows implementation of shared_preferences homepage: https://github.com/flutter/plugins/tree/master/packages/shared_preferences/shared_preferences_windows -version: 0.0.2 +version: 0.0.2+1 flutter: plugin: @@ -12,7 +12,7 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.8 <2.0.0" + flutter: ">=1.12.8" dependencies: shared_preferences_platform_interface: ^1.0.0 diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md index c92c4f5784aa..9c2d8ce19672 100644 --- a/packages/url_launcher/url_launcher/CHANGELOG.md +++ b/packages/url_launcher/url_launcher/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.7.13 + +* Update Flutter SDK constraint. + ## 5.7.12 * Updated code sample in `README.md` diff --git a/packages/url_launcher/url_launcher/pubspec.yaml b/packages/url_launcher/url_launcher/pubspec.yaml index e4fc0f1d654c..8b731faa1a96 100644 --- a/packages/url_launcher/url_launcher/pubspec.yaml +++ b/packages/url_launcher/url_launcher/pubspec.yaml @@ -2,7 +2,7 @@ name: url_launcher description: Flutter plugin for launching a URL on Android and iOS. Supports web, phone, SMS, and email schemes. homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher -version: 5.7.12 +version: 5.7.13 flutter: plugin: @@ -45,4 +45,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/url_launcher/url_launcher_linux/CHANGELOG.md b/packages/url_launcher/url_launcher_linux/CHANGELOG.md index 1b4041fe4c73..57da89f50785 100644 --- a/packages/url_launcher/url_launcher_linux/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_linux/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.2+1 + +* Update Flutter SDK constraint. + ## 0.0.2 * Update integration test examples to use `testWidgets` instead of `test`. diff --git a/packages/url_launcher/url_launcher_linux/pubspec.yaml b/packages/url_launcher/url_launcher_linux/pubspec.yaml index d231bf98476f..65e10e05e166 100644 --- a/packages/url_launcher/url_launcher_linux/pubspec.yaml +++ b/packages/url_launcher/url_launcher_linux/pubspec.yaml @@ -1,6 +1,6 @@ name: url_launcher_linux description: Linux implementation of the url_launcher plugin. -version: 0.0.2 +version: 0.0.2+1 homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_linux flutter: @@ -11,7 +11,7 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.8 <2.0.0" + flutter: ">=1.12.8" dependencies: flutter: diff --git a/packages/url_launcher/url_launcher_macos/CHANGELOG.md b/packages/url_launcher/url_launcher_macos/CHANGELOG.md index 9462960ad45e..ab132757bbf2 100644 --- a/packages/url_launcher/url_launcher_macos/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_macos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.2+1 + +* Update Flutter SDK constraint. + ## 0.0.2 * Update integration test examples to use `testWidgets` instead of `test`. diff --git a/packages/url_launcher/url_launcher_macos/pubspec.yaml b/packages/url_launcher/url_launcher_macos/pubspec.yaml index 1a14e6bc9bb9..12ce6a0b0907 100644 --- a/packages/url_launcher/url_launcher_macos/pubspec.yaml +++ b/packages/url_launcher/url_launcher_macos/pubspec.yaml @@ -3,7 +3,7 @@ description: macOS implementation of the url_launcher plugin. # 0.0.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.0.2 +version: 0.0.2+1 homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_macos flutter: @@ -15,7 +15,7 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.8 <2.0.0" + flutter: ">=1.12.8" dependencies: flutter: diff --git a/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md b/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md index 10057e147adf..26047c748ae6 100644 --- a/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.10 + +* Update Flutter SDK constraint. + ## 1.0.9 * Laid the groundwork for introducing a Link widget. diff --git a/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml b/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml index ce0fdd936c9a..b8b05b8ec837 100644 --- a/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml +++ b/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the url_launcher plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.9 +version: 1.0.10 dependencies: flutter: @@ -19,4 +19,4 @@ dev_dependencies: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.22.0 <2.0.0" + flutter: ">=1.22.0" diff --git a/packages/url_launcher/url_launcher_web/CHANGELOG.md b/packages/url_launcher/url_launcher_web/CHANGELOG.md index 093029104f8f..e8db0e49aeb7 100644 --- a/packages/url_launcher/url_launcher_web/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_web/CHANGELOG.md @@ -1,3 +1,7 @@ +# 0.1.5+2 + +- Update Flutter SDK constraint. + # 0.1.5+1 - Substitute `undefined_prefixed_name: ignore` analyzer setting by a `dart:ui` shim with conditional exports. [Issue](https://github.com/flutter/flutter/issues/69309). diff --git a/packages/url_launcher/url_launcher_web/pubspec.yaml b/packages/url_launcher/url_launcher_web/pubspec.yaml index b40a8ea236cc..049c4bb44544 100644 --- a/packages/url_launcher/url_launcher_web/pubspec.yaml +++ b/packages/url_launcher/url_launcher_web/pubspec.yaml @@ -4,7 +4,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/u # 0.1.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.1.5+1 +version: 0.1.5+2 flutter: plugin: @@ -32,4 +32,4 @@ dev_dependencies: environment: sdk: ">=2.2.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" diff --git a/packages/url_launcher/url_launcher_windows/CHANGELOG.md b/packages/url_launcher/url_launcher_windows/CHANGELOG.md index ca4718813608..fb1a83f0190d 100644 --- a/packages/url_launcher/url_launcher_windows/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_windows/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.2+1 + +* Update Flutter SDK constraint. + ## 0.0.2 * Update integration test examples to use `testWidgets` instead of `test`. diff --git a/packages/url_launcher/url_launcher_windows/pubspec.yaml b/packages/url_launcher/url_launcher_windows/pubspec.yaml index f543e7aea2fd..8db8d94fc411 100644 --- a/packages/url_launcher/url_launcher_windows/pubspec.yaml +++ b/packages/url_launcher/url_launcher_windows/pubspec.yaml @@ -3,7 +3,7 @@ description: Windows implementation of the url_launcher plugin. # 0.0.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.0.2 +version: 0.0.2+1 homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_windows flutter: @@ -14,7 +14,7 @@ flutter: environment: sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.8 <2.0.0" + flutter: ">=1.12.8" dependencies: flutter: diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md index 90082d8358e3..32614b43d261 100644 --- a/packages/video_player/video_player/CHANGELOG.md +++ b/packages/video_player/video_player/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.2 + +* Update Flutter SDK constraint. + ## 1.0.1 * Android: Dispose video players when app is closed. diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index 69be8b24100b..fa55ba43b945 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -1,7 +1,7 @@ name: video_player description: Flutter plugin for displaying inline video with other Flutter widgets on Android, iOS, and web. -version: 1.0.1 +version: 1.0.2 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player flutter: @@ -24,7 +24,7 @@ dependencies: # validation, so we set a ^ constraint. # TODO(amirh): Revisit this (either update this part in the design or the pub tool). # https://github.com/flutter/flutter/issues/46264 - video_player_web: '>=0.1.4 <2.0.0' + video_player_web: ">=0.1.4 <2.0.0" flutter: sdk: flutter @@ -37,4 +37,4 @@ dev_dependencies: environment: sdk: ">=2.8.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + flutter: ">=1.12.13+hotfix.5" diff --git a/packages/video_player/video_player_platform_interface/CHANGELOG.md b/packages/video_player/video_player_platform_interface/CHANGELOG.md index 8af22f783675..fea2357a7ea2 100644 --- a/packages/video_player/video_player_platform_interface/CHANGELOG.md +++ b/packages/video_player/video_player_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.2.1 + +* Update Flutter SDK constraint. + ## 2.2.0 * Added option to set the video playback speed on the video controller. diff --git a/packages/video_player/video_player_platform_interface/pubspec.yaml b/packages/video_player/video_player_platform_interface/pubspec.yaml index cc3cd79f1f33..0c1dcad32648 100644 --- a/packages/video_player/video_player_platform_interface/pubspec.yaml +++ b/packages/video_player/video_player_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the video_player plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 2.2.0 +version: 2.2.1 dependencies: flutter: @@ -18,4 +18,4 @@ dev_dependencies: environment: sdk: ">=2.8.0 <3.0.0" - flutter: ">=1.10.0 <2.0.0" + flutter: ">=1.10.0" diff --git a/packages/video_player/video_player_web/CHANGELOG.md b/packages/video_player/video_player_web/CHANGELOG.md index d8bebd3ae4b6..cbb07e8b9295 100644 --- a/packages/video_player/video_player_web/CHANGELOG.md +++ b/packages/video_player/video_player_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.4+2 + +* Update Flutter SDK constraint. + ## 0.1.4+1 * Substitute `undefined_prefixed_name: ignore` analyzer setting by a `dart:ui` shim with conditional exports. [Issue](https://github.com/flutter/flutter/issues/69309). diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml index ae05bfbcf910..37cadbd3a1b3 100644 --- a/packages/video_player/video_player_web/pubspec.yaml +++ b/packages/video_player/video_player_web/pubspec.yaml @@ -4,7 +4,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/v # 0.1.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.1.4+1 +version: 0.1.4+2 flutter: plugin: @@ -30,4 +30,4 @@ dev_dependencies: environment: sdk: ">=2.8.0 <3.0.0" - flutter: ">=1.12.8 <2.0.0" + flutter: ">=1.12.8" diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md index 8f1e238f6919..447e263e54ff 100644 --- a/packages/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.8 + +* Update Flutter SDK constraint. + ## 1.0.7 * Minor documentation update to indicate known issue on iOS 13.4 and 13.5. diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml index e4627a4f9f65..de99c4b7cdb8 100644 --- a/packages/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/pubspec.yaml @@ -1,11 +1,11 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. -version: 1.0.7 +version: 1.0.8 homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter environment: sdk: ">=2.7.0 <3.0.0" - flutter: ">=1.22.0 <2.0.0" + flutter: ">=1.22.0" dependencies: flutter: diff --git a/packages/wifi_info_flutter/wifi_info_flutter/CHANGELOG.md b/packages/wifi_info_flutter/wifi_info_flutter/CHANGELOG.md index 37711dcac49c..9073486aa601 100644 --- a/packages/wifi_info_flutter/wifi_info_flutter/CHANGELOG.md +++ b/packages/wifi_info_flutter/wifi_info_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.2 + +* Update Flutter SDK constraint. + ## 1.0.1 * Fixed method channel name in android implementation. [Issue](https://github.com/flutter/flutter/issues/69073). diff --git a/packages/wifi_info_flutter/wifi_info_flutter/pubspec.yaml b/packages/wifi_info_flutter/wifi_info_flutter/pubspec.yaml index 74ee9f074cb5..09dff3a48104 100644 --- a/packages/wifi_info_flutter/wifi_info_flutter/pubspec.yaml +++ b/packages/wifi_info_flutter/wifi_info_flutter/pubspec.yaml @@ -1,11 +1,11 @@ name: wifi_info_flutter description: A new flutter plugin project. -version: 1.0.1 +version: 1.0.2 homepage: https://github.com/flutter/plugins/tree/master/packages/wifi_info_flutter/wifi_info_flutter environment: sdk: ">=2.7.0 <3.0.0" - flutter: ">=1.20.0 <2.0.0" + flutter: ">=1.20.0" dependencies: flutter: diff --git a/packages/wifi_info_flutter/wifi_info_flutter_platform_interface/CHANGELOG.md b/packages/wifi_info_flutter/wifi_info_flutter_platform_interface/CHANGELOG.md index a845f1956ab4..951f8f5f5ae0 100644 --- a/packages/wifi_info_flutter/wifi_info_flutter_platform_interface/CHANGELOG.md +++ b/packages/wifi_info_flutter/wifi_info_flutter_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.1 + +* Update Flutter SDK constraint. + ## 1.0.0 * Initial release of package. Includes support for retrieving wifi name, wifi BSSID, wifi ip address diff --git a/packages/wifi_info_flutter/wifi_info_flutter_platform_interface/pubspec.yaml b/packages/wifi_info_flutter/wifi_info_flutter_platform_interface/pubspec.yaml index 68d516d515a8..62bffd0eeeb3 100644 --- a/packages/wifi_info_flutter/wifi_info_flutter_platform_interface/pubspec.yaml +++ b/packages/wifi_info_flutter/wifi_info_flutter_platform_interface/pubspec.yaml @@ -1,13 +1,13 @@ name: wifi_info_flutter_platform_interface description: A common platform interface for the wifi_info_flutter plugin. -version: 1.0.0 +version: 1.0.1 # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes homepage: https://github.com/flutter/plugins/tree/master/packages/wifi_info_flutter/wifi_info_flutter_platform_interface environment: sdk: ">=2.7.0 <3.0.0" - flutter: ">=1.17.0 <2.0.0" + flutter: ">=1.17.0" dependencies: plugin_platform_interface: ^1.0.3 From 0b158bd73e9924a4c57c9b3cea0e450ba5533ce0 Mon Sep 17 00:00:00 2001 From: Bodhi Mulders Date: Sat, 12 Dec 2020 18:15:59 +0100 Subject: [PATCH 08/24] [camera] Add implementations for `camera_platform_interface` package. (#3302) * First suggestion for camera platform interface * Remove test coverage folder * Renamed onLatestImageAvailableHandler definition * Split CameraEvents into separate streams * Implemented & tested first parts of method channel implementation * Remove unused EventChannelMock class * Add missing unit tests * Added placeholders in default method channel implementation * Updated platform interface * Update packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart Co-authored-by: Maurits van Beusekom * Add unit test for availableCameras * Expand availableCameras unit test. Added unit test for takePicture. * Add unit test for startVideoRecording * Add unit test for prepareForVideoRecording * Add unit test for stopVideoRecording * Add unit test for pauseVideoRecording * Add unit test for buildView * WIP: Dart and Android implementation * Fix formatting * Have resolution stream replay last value on subscription. Replace stream_transform with rxdart. * Added reverse method channel to replace event channel. Updated initialise and takePicture implementations for android. WIP implementation for startVideoRecording * Fixed example app for Android. Removed isRecordingVideo and isStreamingImages from buildView method. * Added some first tests for camera/camera * More tests and some feedback * iOS implementation: Removed standard event channel. Added reverse method channel. Updated initialize method. Added resolution changed event. Updated error reporting to use new method channel. * Started splitting initialize method * Finish splitting up initialize for iOS * Update unit tests * Fix takePicture method on iOS * Split initialize method on Android * Fix video recording on iOS. Updated platform interface. * Update unit tests * Update error handling of video methods in iOS code. Make iOS code more consistent. * Updated startVideoRecording documentation * Make sure file is returned by stopVideoRecording * Use correct event-type after initializing * Fix DartMessenger unit-tests * Change cast * Fix formatting * Fixed tests, formatting and analysis warnings * Added missing license to Dart files * Updated CHANGELOG and version * Added additional unit-tests to platform_interface * Added more tests * Formatted code * Re-added the CameraPreview widget * Use import/export instead of part implementation * fixed formatting * Resolved additional feedback * Update dependency to git repo * Depend on pub.dev for camera_platform_interface * Fix JAVA formatting * Fix changelog * Make sure camera package can be published * Assert when stream methods are called from wrong platform * Add dev_dependency on plugin_platform_interface package, required by tests. * Remove pedantic requirement from initialize() method. Remove unnecessary completers. * Remove dependency on dart:io * Restrict exposed types from platform interface * Moved test for image stream in separate file * Fixed formatting issue * Fix deprecation warning * Apply feedback from bparrishMines * Fix formatting issues * Removed redundant podspec files * Removed redundant ios files * Handle SecurityException Co-authored-by: Maurits van Beusekom Co-authored-by: Maurits van Beusekom Co-authored-by: daniel Co-authored-by: David Iglesias Teixeira --- packages/camera/camera/CHANGELOG.md | 10 + .../io/flutter/plugins/camera/Camera.java | 59 +- .../flutter/plugins/camera/DartMessenger.java | 61 +- .../plugins/camera/MethodCallHandlerImpl.java | 31 +- .../plugins/camera/DartMessengerTest.java | 63 +- .../example/integration_test/camera_test.dart | 25 +- .../ios/Runner.xcodeproj/project.pbxproj | 22 +- packages/camera/camera/example/lib/main.dart | 75 +- .../camera/camera/ios/Classes/CameraPlugin.m | 212 +++--- packages/camera/camera/lib/camera.dart | 651 +----------------- .../camera/lib/src/camera_controller.dart | 484 +++++++++++++ .../camera/lib/{ => src}/camera_image.dart | 8 +- .../camera/camera/lib/src/camera_preview.dart | 23 + packages/camera/camera/pubspec.yaml | 5 +- .../camera/test/camera_image_stream_test.dart | 187 +++++ .../camera/camera/test/camera_image_test.dart | 113 +++ packages/camera/camera/test/camera_test.dart | 317 +++++++++ .../camera/camera/test/camera_value_test.dart | 102 +++ .../test/utils/method_channel_mock.dart | 38 + .../ios/Runner.xcodeproj/project.pbxproj | 22 +- 20 files changed, 1580 insertions(+), 928 deletions(-) create mode 100644 packages/camera/camera/lib/src/camera_controller.dart rename packages/camera/camera/lib/{ => src}/camera_image.dart (96%) create mode 100644 packages/camera/camera/lib/src/camera_preview.dart create mode 100644 packages/camera/camera/test/camera_image_stream_test.dart create mode 100644 packages/camera/camera/test/camera_image_test.dart create mode 100644 packages/camera/camera/test/camera_value_test.dart create mode 100644 packages/camera/camera/test/utils/method_channel_mock.dart diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index d1d11c4d8877..cb8dfedd1d9a 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,3 +1,13 @@ +## 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. diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java index 9cf111b9ee69..306dd447cfb9 100644 --- a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java +++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java @@ -65,8 +65,10 @@ public class Camera { private CaptureRequest.Builder captureRequestBuilder; private MediaRecorder mediaRecorder; private boolean recordingVideo; + private File videoRecordingFile; private CamcorderProfile recordingProfile; private int currentOrientation = ORIENTATION_UNKNOWN; + private Context applicationContext; // Mirrors camera.dart public enum ResolutionPreset { @@ -94,6 +96,7 @@ public Camera( this.flutterTexture = flutterTexture; this.dartMessenger = dartMessenger; this.cameraManager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE); + this.applicationContext = activity.getApplicationContext(); orientationEventListener = new OrientationEventListener(activity.getApplicationContext()) { @Override @@ -135,7 +138,7 @@ private void prepareMediaRecorder(String outputFilePath) throws IOException { } @SuppressLint("MissingPermission") - public void open(@NonNull final Result result) throws CameraAccessException { + public void open() throws CameraAccessException { pictureImageReader = ImageReader.newInstance( captureSize.getWidth(), captureSize.getHeight(), ImageFormat.JPEG, 2); @@ -154,15 +157,13 @@ public void onOpened(@NonNull CameraDevice device) { try { startPreview(); } catch (CameraAccessException e) { - result.error("CameraAccess", e.getMessage(), null); + dartMessenger.sendCameraErrorEvent(e.getMessage()); close(); return; } - Map reply = new HashMap<>(); - reply.put("textureId", flutterTexture.id()); - reply.put("previewWidth", previewSize.getWidth()); - reply.put("previewHeight", previewSize.getHeight()); - result.success(reply); + + dartMessenger.sendCameraInitializedEvent( + previewSize.getWidth(), previewSize.getHeight()); } @Override @@ -174,7 +175,7 @@ public void onClosed(@NonNull CameraDevice camera) { @Override public void onDisconnected(@NonNull CameraDevice cameraDevice) { close(); - dartMessenger.send(DartMessenger.EventType.ERROR, "The camera was disconnected."); + dartMessenger.sendCameraErrorEvent("The camera was disconnected."); } @Override @@ -200,7 +201,7 @@ public void onError(@NonNull CameraDevice cameraDevice, int errorCode) { default: errorDescription = "Unknown camera error"; } - dartMessenger.send(DartMessenger.EventType.ERROR, errorDescription); + dartMessenger.sendCameraErrorEvent(errorDescription); } }, null); @@ -218,12 +219,13 @@ SurfaceTextureEntry getFlutterTexture() { return flutterTexture; } - public void takePicture(String filePath, @NonNull final Result result) { - final File file = new File(filePath); - - if (file.exists()) { - result.error( - "fileExists", "File at path '" + filePath + "' already exists. Cannot overwrite.", null); + public void takePicture(@NonNull final Result result) { + final File outputDir = applicationContext.getCacheDir(); + final File file; + try { + file = File.createTempFile("CAP", ".jpg", outputDir); + } catch (IOException | SecurityException e) { + result.error("cannotCreateFile", e.getMessage(), null); return; } @@ -232,7 +234,7 @@ public void takePicture(String filePath, @NonNull final Result result) { try (Image image = reader.acquireLatestImage()) { ByteBuffer buffer = image.getPlanes()[0].getBuffer(); writeToFile(buffer, file); - result.success(null); + result.success(file.getAbsolutePath()); } catch (IOException e) { result.error("IOError", "Failed saving image", null); } @@ -308,8 +310,7 @@ private void createCaptureSession( public void onConfigured(@NonNull CameraCaptureSession session) { try { if (cameraDevice == null) { - dartMessenger.send( - DartMessenger.EventType.ERROR, "The camera was closed during configuration."); + dartMessenger.sendCameraErrorEvent("The camera was closed during configuration."); return; } cameraCaptureSession = session; @@ -320,14 +321,13 @@ public void onConfigured(@NonNull CameraCaptureSession session) { onSuccessCallback.run(); } } catch (CameraAccessException | IllegalStateException | IllegalArgumentException e) { - dartMessenger.send(DartMessenger.EventType.ERROR, e.getMessage()); + dartMessenger.sendCameraErrorEvent(e.getMessage()); } } @Override public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) { - dartMessenger.send( - DartMessenger.EventType.ERROR, "Failed to configure camera session."); + dartMessenger.sendCameraErrorEvent("Failed to configure camera session."); } }; @@ -369,18 +369,24 @@ private void createCaptureSession( cameraDevice.createCaptureSession(surfaces, callback, null); } - public void startVideoRecording(String filePath, Result result) { - if (new File(filePath).exists()) { - result.error("fileExists", "File at path '" + filePath + "' already exists.", null); + public void startVideoRecording(Result result) { + final File outputDir = applicationContext.getCacheDir(); + try { + videoRecordingFile = File.createTempFile("REC", ".mp4", outputDir); + } catch (IOException | SecurityException e) { + result.error("cannotCreateFile", e.getMessage(), null); return; } + try { - prepareMediaRecorder(filePath); + prepareMediaRecorder(videoRecordingFile.getAbsolutePath()); recordingVideo = true; createCaptureSession( CameraDevice.TEMPLATE_RECORD, () -> mediaRecorder.start(), mediaRecorder.getSurface()); result.success(null); } catch (CameraAccessException | IOException e) { + recordingVideo = false; + videoRecordingFile = null; result.error("videoRecordingFailed", e.getMessage(), null); } } @@ -396,7 +402,8 @@ public void stopVideoRecording(@NonNull final Result result) { mediaRecorder.stop(); mediaRecorder.reset(); startPreview(); - result.success(null); + result.success(videoRecordingFile.getAbsolutePath()); + videoRecordingFile = null; } catch (CameraAccessException | IllegalStateException e) { result.error("videoRecordingFailed", e.getMessage(), null); } diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java index fe385bef7818..49f9d9a76de0 100644 --- a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java +++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java @@ -3,49 +3,56 @@ import android.text.TextUtils; import androidx.annotation.Nullable; import io.flutter.plugin.common.BinaryMessenger; -import io.flutter.plugin.common.EventChannel; +import io.flutter.plugin.common.MethodChannel; import java.util.HashMap; import java.util.Map; class DartMessenger { - @Nullable private EventChannel.EventSink eventSink; + @Nullable private MethodChannel channel; enum EventType { ERROR, CAMERA_CLOSING, + INITIALIZED, } - DartMessenger(BinaryMessenger messenger, long eventChannelId) { - new EventChannel(messenger, "flutter.io/cameraPlugin/cameraEvents" + eventChannelId) - .setStreamHandler( - new EventChannel.StreamHandler() { - @Override - public void onListen(Object arguments, EventChannel.EventSink sink) { - eventSink = sink; - } - - @Override - public void onCancel(Object arguments) { - eventSink = null; - } - }); + DartMessenger(BinaryMessenger messenger, long cameraId) { + channel = new MethodChannel(messenger, "flutter.io/cameraPlugin/camera" + cameraId); + } + + void sendCameraInitializedEvent(Integer previewWidth, Integer previewHeight) { + this.send( + EventType.INITIALIZED, + new HashMap() { + { + if (previewWidth != null) put("previewWidth", previewWidth.doubleValue()); + if (previewHeight != null) put("previewHeight", previewHeight.doubleValue()); + } + }); } void sendCameraClosingEvent() { - send(EventType.CAMERA_CLOSING, null); + send(EventType.CAMERA_CLOSING); } - void send(EventType eventType, @Nullable String description) { - if (eventSink == null) { - return; - } + void sendCameraErrorEvent(@Nullable String description) { + this.send( + EventType.ERROR, + new HashMap() { + { + if (!TextUtils.isEmpty(description)) put("description", description); + } + }); + } + + void send(EventType eventType) { + send(eventType, new HashMap<>()); + } - Map event = new HashMap<>(); - event.put("eventType", eventType.toString().toLowerCase()); - // Only errors have a description. - if (eventType == EventType.ERROR && !TextUtils.isEmpty(description)) { - event.put("errorDescription", description); + void send(EventType eventType, Map args) { + if (channel == null) { + return; } - eventSink.success(event); + channel.invokeMethod(eventType.toString().toLowerCase(), args); } } diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/MethodCallHandlerImpl.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/MethodCallHandlerImpl.java index 132075555f26..6c2e65e76f9e 100644 --- a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/MethodCallHandlerImpl.java +++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/MethodCallHandlerImpl.java @@ -11,6 +11,8 @@ import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.plugins.camera.CameraPermissions.PermissionsRegistry; import io.flutter.view.TextureRegistry; +import java.util.HashMap; +import java.util.Map; final class MethodCallHandlerImpl implements MethodChannel.MethodCallHandler { private final Activity activity; @@ -49,11 +51,12 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull final Result result) handleException(e, result); } break; - case "initialize": + case "create": { if (camera != null) { camera.close(); } + cameraPermissions.requestPermissions( activity, permissionsRegistry, @@ -69,12 +72,28 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull final Result result) result.error(errCode, errDesc, null); } }); - + break; + } + case "initialize": + { + if (camera != null) { + try { + camera.open(); + result.success(null); + } catch (Exception e) { + handleException(e, result); + } + } else { + result.error( + "cameraNotFound", + "Camera not found. Please call the 'create' method before calling 'initialize'.", + null); + } break; } case "takePicture": { - camera.takePicture(call.argument("path"), result); + camera.takePicture(result); break; } case "prepareForVideoRecording": @@ -85,7 +104,7 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull final Result result) } case "startVideoRecording": { - camera.startVideoRecording(call.argument("filePath"), result); + camera.startVideoRecording(result); break; } case "stopVideoRecording": @@ -157,7 +176,9 @@ private void instantiateCamera(MethodCall call, Result result) throws CameraAcce resolutionPreset, enableAudio); - camera.open(result); + Map reply = new HashMap<>(); + reply.put("cameraId", flutterSurfaceTexture.id()); + result.success(reply); } // We move catching CameraAccessException out of onMethodCall because it causes a crash diff --git a/packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/DartMessengerTest.java b/packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/DartMessengerTest.java index 5a5358229c15..a689f2b6128f 100644 --- a/packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/DartMessengerTest.java +++ b/packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/DartMessengerTest.java @@ -2,42 +2,34 @@ import static junit.framework.TestCase.assertNull; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import androidx.annotation.NonNull; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.StandardMethodCodec; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; -import java.util.Map; import org.junit.Before; import org.junit.Test; public class DartMessengerTest { /** A {@link BinaryMessenger} implementation that does nothing but save its messages. */ private static class FakeBinaryMessenger implements BinaryMessenger { - private BinaryMessageHandler handler; private final List sentMessages = new ArrayList<>(); @Override - public void send(String channel, ByteBuffer message) { + public void send(@NonNull String channel, ByteBuffer message) { sentMessages.add(message); } @Override - public void send(String channel, ByteBuffer message, BinaryReply callback) { + public void send(@NonNull String channel, ByteBuffer message, BinaryReply callback) { send(channel, message); } @Override - public void setMessageHandler(String channel, BinaryMessageHandler handler) { - this.handler = handler; - } - - BinaryMessageHandler getMessageHandler() { - return handler; - } + public void setMessageHandler(@NonNull String channel, BinaryMessageHandler handler) {} List getMessages() { return new ArrayList<>(sentMessages); @@ -54,55 +46,42 @@ public void setUp() { } @Test - public void setsStreamHandler() { - assertNotNull(fakeBinaryMessenger.getMessageHandler()); - } - - @Test - public void send_handlesNullEventSinks() { - dartMessenger.send(DartMessenger.EventType.ERROR, "error description"); + public void sendCameraErrorEvent_includesErrorDescriptions() { + dartMessenger.sendCameraErrorEvent("error description"); List sentMessages = fakeBinaryMessenger.getMessages(); - assertEquals(0, sentMessages.size()); + assertEquals(1, sentMessages.size()); + MethodCall call = decodeSentMessage(sentMessages.get(0)); + assertEquals("error", call.method); + assertEquals("error description", call.argument("description")); } @Test - public void send_includesErrorDescriptions() { - initializeEventSink(); - - dartMessenger.send(DartMessenger.EventType.ERROR, "error description"); + public void sendCameraInitializedEvent_includesPreviewSize() { + dartMessenger.sendCameraInitializedEvent(0, 0); List sentMessages = fakeBinaryMessenger.getMessages(); assertEquals(1, sentMessages.size()); - Map event = decodeSentMessage(sentMessages.get(0)); - assertEquals(DartMessenger.EventType.ERROR.toString().toLowerCase(), event.get("eventType")); - assertEquals("error description", event.get("errorDescription")); + MethodCall call = decodeSentMessage(sentMessages.get(0)); + assertEquals("initialized", call.method); + assertEquals(0, (double) call.argument("previewWidth"), 0); + assertEquals(0, (double) call.argument("previewHeight"), 0); } @Test public void sendCameraClosingEvent() { - initializeEventSink(); - dartMessenger.sendCameraClosingEvent(); List sentMessages = fakeBinaryMessenger.getMessages(); assertEquals(1, sentMessages.size()); - Map event = decodeSentMessage(sentMessages.get(0)); - assertEquals( - DartMessenger.EventType.CAMERA_CLOSING.toString().toLowerCase(), event.get("eventType")); - assertNull(event.get("errorDescription")); + MethodCall call = decodeSentMessage(sentMessages.get(0)); + assertEquals("camera_closing", call.method); + assertNull(call.argument("description")); } - @SuppressWarnings("unchecked") - private Map decodeSentMessage(ByteBuffer sentMessage) { + private MethodCall decodeSentMessage(ByteBuffer sentMessage) { sentMessage.position(0); - return (Map) StandardMethodCodec.INSTANCE.decodeEnvelope(sentMessage); - } - private void initializeEventSink() { - MethodCall call = new MethodCall("listen", null); - ByteBuffer encodedCall = StandardMethodCodec.INSTANCE.encodeMethodCall(call); - encodedCall.position(0); - fakeBinaryMessenger.getMessageHandler().onMessage(encodedCall, reply -> {}); + return StandardMethodCodec.INSTANCE.decodeMethodCall(sentMessage); } } diff --git a/packages/camera/camera/example/integration_test/camera_test.dart b/packages/camera/camera/example/integration_test/camera_test.dart index ef4646f5ced9..c2e73e0f1563 100644 --- a/packages/camera/camera/example/integration_test/camera_test.dart +++ b/packages/camera/camera/example/integration_test/camera_test.dart @@ -2,9 +2,9 @@ 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:camera/camera.dart'; import 'package:path_provider/path_provider.dart'; import 'package:video_player/video_player.dart'; import 'package:integration_test/integration_test.dart'; @@ -55,12 +55,10 @@ void main() { 'Capturing photo at $preset (${expectedSize.width}x${expectedSize.height}) using camera ${controller.description.name}'); // Take Picture - final String filePath = - '${testDir.path}/${DateTime.now().millisecondsSinceEpoch}.jpg'; - await controller.takePicture(filePath); + final file = await controller.takePicture(); // Load picture - final File fileImage = File(filePath); + final File fileImage = File(file.path); final Image image = await decodeImageFromList(fileImage.readAsBytesSync()); // Verify image dimensions are as expected @@ -102,14 +100,12 @@ void main() { 'Capturing video at $preset (${expectedSize.width}x${expectedSize.height}) using camera ${controller.description.name}'); // Take Video - final String filePath = - '${testDir.path}/${DateTime.now().millisecondsSinceEpoch}.mp4'; - await controller.startVideoRecording(filePath); + await controller.startVideoRecording(); sleep(const Duration(milliseconds: 300)); - await controller.stopVideoRecording(); + final file = await controller.stopVideoRecording(); // Load video metadata - final File videoFile = File(filePath); + final File videoFile = File(file.path); final VideoPlayerController videoController = VideoPlayerController.file(videoFile); await videoController.initialize(); @@ -160,13 +156,10 @@ void main() { await controller.initialize(); await controller.prepareForVideoRecording(); - final String filePath = - '${testDir.path}/${DateTime.now().millisecondsSinceEpoch}.mp4'; - int startPause; int timePaused = 0; - await controller.startVideoRecording(filePath); + await controller.startVideoRecording(); final int recordingStart = DateTime.now().millisecondsSinceEpoch; sleep(const Duration(milliseconds: 500)); @@ -186,11 +179,11 @@ void main() { sleep(const Duration(milliseconds: 500)); - await controller.stopVideoRecording(); + final file = await controller.stopVideoRecording(); final int recordingTime = DateTime.now().millisecondsSinceEpoch - recordingStart; - final File videoFile = File(filePath); + final File videoFile = File(file.path); final VideoPlayerController videoController = VideoPlayerController.file( videoFile, ); diff --git a/packages/camera/camera/example/ios/Runner.xcodeproj/project.pbxproj b/packages/camera/camera/example/ios/Runner.xcodeproj/project.pbxproj index 862ee64fb666..d51240a02c14 100644 --- a/packages/camera/camera/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/camera/camera/example/ios/Runner.xcodeproj/project.pbxproj @@ -9,11 +9,7 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; - 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 75201D617916C49BDEDF852A /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 620DDA07C00B5FF2F937CB5B /* libPods-Runner.a */; }; - 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; - 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 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 */; }; @@ -28,8 +24,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, - 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -40,7 +34,6 @@ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 483D985F075B951ADBAD218E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 620DDA07C00B5FF2F937CB5B /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -48,7 +41,6 @@ 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 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 = ""; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; @@ -63,8 +55,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, - 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, 75201D617916C49BDEDF852A /* libPods-Runner.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -83,9 +73,7 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( - 3B80C3931E831B6300D905FE /* App.framework */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEBA1CF902C7004384FC /* Flutter.framework */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 9740EEB31CF90195004384FC /* Generated.xcconfig */, @@ -181,6 +169,7 @@ TargetAttributes = { 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; + DevelopmentTeam = 7624MWN53C; }; }; }; @@ -229,7 +218,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 3E30118C54AB12C3EB9EDF27 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; @@ -269,9 +258,12 @@ files = ( ); inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", + "${PODS_ROOT}/../Flutter/Flutter.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -315,7 +307,6 @@ /* Begin XCBuildConfiguration section */ 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -372,7 +363,6 @@ }; 97C147041CF9000F007C117D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -426,6 +416,7 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = 7624MWN53C; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -447,6 +438,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = 7624MWN53C; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", diff --git a/packages/camera/camera/example/lib/main.dart b/packages/camera/camera/example/lib/main.dart index 3ec6604ad788..e1edc1b06386 100644 --- a/packages/camera/camera/example/lib/main.dart +++ b/packages/camera/camera/example/lib/main.dart @@ -9,7 +9,6 @@ import 'dart:io'; import 'package:camera/camera.dart'; import 'package:flutter/material.dart'; -import 'package:path_provider/path_provider.dart'; import 'package:video_player/video_player.dart'; class CameraExampleHome extends StatefulWidget { @@ -38,8 +37,8 @@ void logError(String code, String message) => class _CameraExampleHomeState extends State with WidgetsBindingObserver { CameraController controller; - String imagePath; - String videoPath; + XFile imageFile; + XFile videoFile; VideoPlayerController videoController; VoidCallback videoPlayerListener; bool enableAudio = true; @@ -166,11 +165,11 @@ class _CameraExampleHomeState extends State child: Row( mainAxisSize: MainAxisSize.min, children: [ - videoController == null && imagePath == null + videoController == null && imageFile == null ? Container() : SizedBox( child: (videoController == null) - ? Image.file(File(imagePath)) + ? Image.file(File(imageFile.path)) : Container( child: Center( child: AspectRatio( @@ -306,29 +305,32 @@ class _CameraExampleHomeState extends State } void onTakePictureButtonPressed() { - takePicture().then((String filePath) { + takePicture().then((XFile file) { if (mounted) { setState(() { - imagePath = filePath; + imageFile = file; videoController?.dispose(); videoController = null; }); - if (filePath != null) showInSnackBar('Picture saved to $filePath'); + if (file != null) showInSnackBar('Picture saved to ${file.path}'); } }); } void onVideoRecordButtonPressed() { - startVideoRecording().then((String filePath) { + startVideoRecording().then((_) { if (mounted) setState(() {}); - if (filePath != null) showInSnackBar('Saving video to $filePath'); }); } void onStopButtonPressed() { - stopVideoRecording().then((_) { + stopVideoRecording().then((file) { if (mounted) setState(() {}); - showInSnackBar('Video recorded to: $videoPath'); + if (file != null) { + showInSnackBar('Video recorded to ${file.path}'); + videoFile = file; + _startVideoPlayer(); + } }); } @@ -346,45 +348,36 @@ class _CameraExampleHomeState extends State }); } - Future startVideoRecording() async { + Future startVideoRecording() async { if (!controller.value.isInitialized) { showInSnackBar('Error: select a camera first.'); - return null; + return; } - final Directory extDir = await getApplicationDocumentsDirectory(); - final String dirPath = '${extDir.path}/Movies/flutter_test'; - await Directory(dirPath).create(recursive: true); - final String filePath = '$dirPath/${timestamp()}.mp4'; - if (controller.value.isRecordingVideo) { // A recording is already started, do nothing. - return null; + return; } try { - videoPath = filePath; - await controller.startVideoRecording(filePath); + await controller.startVideoRecording(); } on CameraException catch (e) { _showCameraException(e); - return null; + return; } - return filePath; } - Future stopVideoRecording() async { + Future stopVideoRecording() async { if (!controller.value.isRecordingVideo) { return null; } try { - await controller.stopVideoRecording(); + return controller.stopVideoRecording(); } on CameraException catch (e) { _showCameraException(e); return null; } - - await _startVideoPlayer(); } Future pauseVideoRecording() async { @@ -414,8 +407,8 @@ class _CameraExampleHomeState extends State } Future _startVideoPlayer() async { - final VideoPlayerController vcontroller = - VideoPlayerController.file(File(videoPath)); + final VideoPlayerController vController = + VideoPlayerController.file(File(videoFile.path)); videoPlayerListener = () { if (videoController != null && videoController.value.size != null) { // Refreshing the state to update video player with the correct ratio. @@ -423,28 +416,24 @@ class _CameraExampleHomeState extends State videoController.removeListener(videoPlayerListener); } }; - vcontroller.addListener(videoPlayerListener); - await vcontroller.setLooping(true); - await vcontroller.initialize(); + vController.addListener(videoPlayerListener); + await vController.setLooping(true); + await vController.initialize(); await videoController?.dispose(); if (mounted) { setState(() { - imagePath = null; - videoController = vcontroller; + imageFile = null; + videoController = vController; }); } - await vcontroller.play(); + await vController.play(); } - Future takePicture() async { + Future takePicture() async { if (!controller.value.isInitialized) { showInSnackBar('Error: select a camera first.'); return null; } - final Directory extDir = await getApplicationDocumentsDirectory(); - final String dirPath = '${extDir.path}/Pictures/flutter_test'; - await Directory(dirPath).create(recursive: true); - final String filePath = '$dirPath/${timestamp()}.jpg'; if (controller.value.isTakingPicture) { // A capture is already pending, do nothing. @@ -452,12 +441,12 @@ class _CameraExampleHomeState extends State } try { - await controller.takePicture(filePath); + XFile file = await controller.takePicture(); + return file; } on CameraException catch (e) { _showCameraException(e); return null; } - return filePath; } void _showCameraException(CameraException e) { diff --git a/packages/camera/camera/ios/Classes/CameraPlugin.m b/packages/camera/camera/ios/Classes/CameraPlugin.m index 525c1286717a..9455375b8524 100644 --- a/packages/camera/camera/ios/Classes/CameraPlugin.m +++ b/packages/camera/camera/ios/Classes/CameraPlugin.m @@ -7,6 +7,7 @@ #import #import #import +#import static FlutterError *getFlutterError(NSError *error) { return [FlutterError errorWithCode:[NSString stringWithFormat:@"Error %d", (int)error.code] @@ -51,10 +52,10 @@ @implementation FLTSavePhotoDelegate { self = [super init]; NSAssert(self, @"super init cannot be nil"); _path = path; - _result = result; _motionManager = motionManager; _cameraPosition = cameraPosition; selfReference = self; + _result = result; return self; } @@ -81,7 +82,7 @@ - (void)captureOutput:(AVCapturePhotoOutput *)output _result([FlutterError errorWithCode:@"IOError" message:@"Unable to write file" details:nil]); return; } - _result(nil); + _result(_path); } - (UIImageOrientation)getImageRotation { @@ -152,14 +153,12 @@ static ResolutionPreset getResolutionPresetForString(NSString *preset) { @interface FLTCam : NSObject + AVCaptureAudioDataOutputSampleBufferDelegate> @property(readonly, nonatomic) int64_t textureId; @property(nonatomic, copy) void (^onFrameAvailable)(void); @property BOOL enableAudio; -@property(nonatomic) FlutterEventChannel *eventChannel; @property(nonatomic) FLTImageStreamHandler *imageStreamHandler; -@property(nonatomic) FlutterEventSink eventSink; +@property(nonatomic) FlutterMethodChannel *methodChannel; @property(readonly, nonatomic) AVCaptureSession *captureSession; @property(readonly, nonatomic) AVCaptureDevice *captureDevice; @property(readonly, nonatomic) AVCapturePhotoOutput *capturePhotoOutput API_AVAILABLE(ios(10)); @@ -174,6 +173,7 @@ @interface FLTCam : NSObject _videoWriter.status == AVAssetWriterStatusCompleted) { - result(nil); + result(self->_videoRecordingPath); + self->_videoRecordingPath = nil; } else { - self->_eventSink(@{ - @"event" : @"error", - @"errorDescription" : @"AVAssetWriter could not finish writing!" - }); + result([FlutterError errorWithCode:@"IOError" + message:@"AVAssetWriter could not finish writing!" + details:nil]); } }]; } @@ -620,14 +640,16 @@ - (void)stopVideoRecordingWithResult:(FlutterResult)result { } } -- (void)pauseVideoRecording { +- (void)pauseVideoRecordingWithResult:(FlutterResult)result { _isRecordingPaused = YES; _videoIsDisconnected = YES; _audioIsDisconnected = YES; + result(nil); } -- (void)resumeVideoRecording { +- (void)resumeVideoRecordingWithResult:(FlutterResult)result { _isRecordingPaused = NO; + result(nil); } - (void)startImageStreamWithMessenger:(NSObject *)messenger { @@ -641,8 +663,8 @@ - (void)startImageStreamWithMessenger:(NSObject *)messen _isStreamingImages = YES; } else { - _eventSink( - @{@"event" : @"error", @"errorDescription" : @"Images from camera are already streaming!"}); + [_methodChannel invokeMethod:errorMethod + arguments:@"Images from camera are already streaming!"]; } } @@ -651,8 +673,7 @@ - (void)stopImageStream { _isStreamingImages = NO; _imageStreamHandler = nil; } else { - _eventSink( - @{@"event" : @"error", @"errorDescription" : @"Images from camera are not streaming!"}); + [_methodChannel invokeMethod:errorMethod arguments:@"Images from camera are not streaming!"]; } } @@ -672,7 +693,7 @@ - (BOOL)setupWriterForPath:(NSString *)path { error:&error]; NSParameterAssert(_videoWriter); if (error) { - _eventSink(@{@"event" : @"error", @"errorDescription" : error.description}); + [_methodChannel invokeMethod:errorMethod arguments:error.description]; return NO; } NSDictionary *videoSettings = [NSDictionary @@ -726,7 +747,7 @@ - (void)setUpCaptureSessionForAudio { AVCaptureDeviceInput *audioInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:&error]; if (error) { - _eventSink(@{@"event" : @"error", @"errorDescription" : error.description}); + [_methodChannel invokeMethod:errorMethod arguments:error.description]; } // Setup the audio output. _audioOutput = [[AVCaptureAudioDataOutput alloc] init]; @@ -738,10 +759,8 @@ - (void)setUpCaptureSessionForAudio { [_captureSession addOutput:_audioOutput]; _isAudioSetup = YES; } else { - _eventSink(@{ - @"event" : @"error", - @"errorDescription" : @"Unable to add Audio input/output to session capture" - }); + [_methodChannel invokeMethod:errorMethod + arguments:@"Unable to add Audio input/output to session capture"]; _isAudioSetup = NO; } } @@ -819,7 +838,7 @@ - (void)handleMethodCallAsync:(FlutterMethodCall *)call result:(FlutterResult)re } else { result(FlutterMethodNotImplemented); } - } else if ([@"initialize" isEqualToString:call.method]) { + } else if ([@"create" isEqualToString:call.method]) { NSString *cameraName = call.arguments[@"cameraName"]; NSString *resolutionPreset = call.arguments[@"resolutionPreset"]; NSNumber *enableAudio = call.arguments[@"enableAudio"]; @@ -829,6 +848,7 @@ - (void)handleMethodCallAsync:(FlutterMethodCall *)call result:(FlutterResult)re enableAudio:[enableAudio boolValue] dispatchQueue:_dispatchQueue error:&error]; + if (error) { result(getFlutterError(error)); } else { @@ -837,25 +857,10 @@ - (void)handleMethodCallAsync:(FlutterMethodCall *)call result:(FlutterResult)re } int64_t textureId = [_registry registerTexture:cam]; _camera = cam; - __weak CameraPlugin *weakSelf = self; - cam.onFrameAvailable = ^{ - [weakSelf.registry textureFrameAvailable:textureId]; - }; - FlutterEventChannel *eventChannel = [FlutterEventChannel - eventChannelWithName:[NSString - stringWithFormat:@"flutter.io/cameraPlugin/cameraEvents%lld", - textureId] - binaryMessenger:_messenger]; - [eventChannel setStreamHandler:cam]; - cam.eventChannel = eventChannel; + result(@{ - @"textureId" : @(textureId), - @"previewWidth" : @(cam.previewSize.width), - @"previewHeight" : @(cam.previewSize.height), - @"captureWidth" : @(cam.captureSize.width), - @"captureHeight" : @(cam.captureSize.height), + @"cameraId" : @(textureId), }); - [cam start]; } } else if ([@"startImageStream" isEqualToString:call.method]) { [_camera startImageStreamWithMessenger:_messenger]; @@ -863,23 +868,34 @@ - (void)handleMethodCallAsync:(FlutterMethodCall *)call result:(FlutterResult)re } else if ([@"stopImageStream" isEqualToString:call.method]) { [_camera stopImageStream]; result(nil); - } else if ([@"pauseVideoRecording" isEqualToString:call.method]) { - [_camera pauseVideoRecording]; - result(nil); - } else if ([@"resumeVideoRecording" isEqualToString:call.method]) { - [_camera resumeVideoRecording]; - result(nil); } else { NSDictionary *argsMap = call.arguments; - NSUInteger textureId = ((NSNumber *)argsMap[@"textureId"]).unsignedIntegerValue; - if ([@"takePicture" isEqualToString:call.method]) { + NSUInteger cameraId = ((NSNumber *)argsMap[@"cameraId"]).unsignedIntegerValue; + if ([@"initialize" isEqualToString:call.method]) { + __weak CameraPlugin *weakSelf = self; + _camera.onFrameAvailable = ^{ + [weakSelf.registry textureFrameAvailable:cameraId]; + }; + FlutterMethodChannel *methodChannel = [FlutterMethodChannel + methodChannelWithName:[NSString stringWithFormat:@"flutter.io/cameraPlugin/camera%lu", + (unsigned long)cameraId] + binaryMessenger:_messenger]; + _camera.methodChannel = methodChannel; + [methodChannel invokeMethod:@"initialized" + arguments:@{ + @"previewWidth" : @(_camera.previewSize.width), + @"previewHeight" : @(_camera.previewSize.height) + }]; + [_camera start]; + result(nil); + } else if ([@"takePicture" isEqualToString:call.method]) { if (@available(iOS 10.0, *)) { - [_camera captureToFile:call.arguments[@"path"] result:result]; + [_camera captureToFile:result]; } else { result(FlutterMethodNotImplemented); } } else if ([@"dispose" isEqualToString:call.method]) { - [_registry unregisterTexture:textureId]; + [_registry unregisterTexture:cameraId]; [_camera close]; _dispatchQueue = nil; result(nil); @@ -887,9 +903,13 @@ - (void)handleMethodCallAsync:(FlutterMethodCall *)call result:(FlutterResult)re [_camera setUpCaptureSessionForAudio]; result(nil); } else if ([@"startVideoRecording" isEqualToString:call.method]) { - [_camera startVideoRecordingAtPath:call.arguments[@"filePath"] result:result]; + [_camera startVideoRecordingWithResult:result]; } else if ([@"stopVideoRecording" isEqualToString:call.method]) { [_camera stopVideoRecordingWithResult:result]; + } else if ([@"pauseVideoRecording" isEqualToString:call.method]) { + [_camera pauseVideoRecordingWithResult:result]; + } else if ([@"resumeVideoRecording" isEqualToString:call.method]) { + [_camera resumeVideoRecordingWithResult:result]; } else { result(FlutterMethodNotImplemented); } diff --git a/packages/camera/camera/lib/camera.dart b/packages/camera/camera/lib/camera.dart index 3b2cd77c5757..6c6d90b9bcee 100644 --- a/packages/camera/camera/lib/camera.dart +++ b/packages/camera/camera/lib/camera.dart @@ -2,643 +2,14 @@ // 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:typed_data'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/services.dart'; -import 'package:flutter/widgets.dart'; - -part 'camera_image.dart'; - -final MethodChannel _channel = const MethodChannel('plugins.flutter.io/camera'); - -/// The direction the camera is facing. -enum CameraLensDirection { - /// Front facing camera (a user looking at the screen is seen by the camera). - front, - - /// Back facing camera (a user looking at the screen is not seen by the camera). - back, - - /// External camera which may not be mounted to the device. - external, -} - -/// Affect the quality of video recording and image capture: -/// -/// If a preset is not available on the camera being used a preset of lower quality will be selected automatically. -enum ResolutionPreset { - /// 352x288 on iOS, 240p (320x240) on Android - low, - - /// 480p (640x480 on iOS, 720x480 on Android) - medium, - - /// 720p (1280x720) - high, - - /// 1080p (1920x1080) - veryHigh, - - /// 2160p (3840x2160) - ultraHigh, - - /// The highest resolution available. - max, -} - -/// Signature for a callback receiving the a camera image. -/// -/// This is used by [CameraController.startImageStream]. -// ignore: inference_failure_on_function_return_type -typedef onLatestImageAvailable = Function(CameraImage image); - -/// Returns the resolution preset as a String. -String serializeResolutionPreset(ResolutionPreset resolutionPreset) { - switch (resolutionPreset) { - case ResolutionPreset.max: - return 'max'; - case ResolutionPreset.ultraHigh: - return 'ultraHigh'; - case ResolutionPreset.veryHigh: - return 'veryHigh'; - case ResolutionPreset.high: - return 'high'; - case ResolutionPreset.medium: - return 'medium'; - case ResolutionPreset.low: - return 'low'; - } - throw ArgumentError('Unknown ResolutionPreset value'); -} - -CameraLensDirection _parseCameraLensDirection(String string) { - switch (string) { - case 'front': - return CameraLensDirection.front; - case 'back': - return CameraLensDirection.back; - case 'external': - return CameraLensDirection.external; - } - throw ArgumentError('Unknown CameraLensDirection value'); -} - -/// Completes with a list of available cameras. -/// -/// May throw a [CameraException]. -Future> availableCameras() async { - try { - final List> cameras = await _channel - .invokeListMethod>('availableCameras'); - return cameras.map((Map camera) { - return CameraDescription( - name: camera['name'], - lensDirection: _parseCameraLensDirection(camera['lensFacing']), - sensorOrientation: camera['sensorOrientation'], - ); - }).toList(); - } on PlatformException catch (e) { - throw CameraException(e.code, e.message); - } -} - -/// Properties of a camera device. -class CameraDescription { - /// Creates a new camera description with the given properties. - CameraDescription({this.name, this.lensDirection, this.sensorOrientation}); - - /// The name of the camera device. - final String name; - - /// The direction the camera is facing. - final CameraLensDirection lensDirection; - - /// Clockwise angle through which the output image needs to be rotated to be upright on the device screen in its native orientation. - /// - /// **Range of valid values:** - /// 0, 90, 180, 270 - /// - /// On Android, also defines the direction of rolling shutter readout, which - /// is from top to bottom in the sensor's coordinate system. - final int sensorOrientation; - - @override - bool operator ==(Object o) { - return o is CameraDescription && - o.name == name && - o.lensDirection == lensDirection; - } - - @override - int get hashCode { - return hashValues(name, lensDirection); - } - - @override - String toString() { - return '$runtimeType($name, $lensDirection, $sensorOrientation)'; - } -} - -/// This is thrown when the plugin reports an error. -class CameraException implements Exception { - /// Creates a new camera exception with the given error code and description. - CameraException(this.code, this.description); - - /// Error code. - // TODO(bparrishMines): Document possible error codes. - // https://github.com/flutter/flutter/issues/69298 - String code; - - /// Textual description of the error. - String description; - - @override - String toString() => '$runtimeType($code, $description)'; -} - -/// A widget showing a live camera preview. -class CameraPreview extends StatelessWidget { - /// Creates a preview widget for the given camera controller. - const CameraPreview(this.controller); - - /// The controller for the camera that the preview is shown for. - final CameraController controller; - - @override - Widget build(BuildContext context) { - return controller.value.isInitialized - ? Texture(textureId: controller._textureId) - : Container(); - } -} - -/// The state of a [CameraController]. -class CameraValue { - /// Creates a new camera controller state. - const CameraValue({ - this.isInitialized, - this.errorDescription, - this.previewSize, - this.isRecordingVideo, - this.isTakingPicture, - this.isStreamingImages, - bool isRecordingPaused, - }) : _isRecordingPaused = isRecordingPaused; - - /// Creates a new camera controller state for an uninitialzed controller. - const CameraValue.uninitialized() - : this( - isInitialized: false, - isRecordingVideo: false, - isTakingPicture: false, - isStreamingImages: false, - isRecordingPaused: false, - ); - - /// True after [CameraController.initialize] has completed successfully. - final bool isInitialized; - - /// True when a picture capture request has been sent but as not yet returned. - final bool isTakingPicture; - - /// True when the camera is recording (not the same as previewing). - final bool isRecordingVideo; - - /// True when images from the camera are being streamed. - final bool isStreamingImages; - - final bool _isRecordingPaused; - - /// True when camera [isRecordingVideo] and recording is paused. - bool get isRecordingPaused => isRecordingVideo && _isRecordingPaused; - - /// Description of an error state. - /// - /// This is null while the controller is not in an error state. - /// When [hasError] is true this contains the error description. - final String errorDescription; - - /// The size of the preview in pixels. - /// - /// Is `null` until [isInitialized] is `true`. - final Size previewSize; - - /// Convenience getter for `previewSize.height / previewSize.width`. - /// - /// Can only be called when [initialize] is done. - double get aspectRatio => previewSize.height / previewSize.width; - - /// Whether the controller is in an error state. - /// - /// When true [errorDescription] describes the error. - bool get hasError => errorDescription != null; - - /// Creates a modified copy of the object. - /// - /// Explicitly specified fields get the specified value, all other fields get - /// the same value of the current object. - CameraValue copyWith({ - bool isInitialized, - bool isRecordingVideo, - bool isTakingPicture, - bool isStreamingImages, - String errorDescription, - Size previewSize, - bool isRecordingPaused, - }) { - return CameraValue( - isInitialized: isInitialized ?? this.isInitialized, - errorDescription: errorDescription, - previewSize: previewSize ?? this.previewSize, - isRecordingVideo: isRecordingVideo ?? this.isRecordingVideo, - isTakingPicture: isTakingPicture ?? this.isTakingPicture, - isStreamingImages: isStreamingImages ?? this.isStreamingImages, - isRecordingPaused: isRecordingPaused ?? _isRecordingPaused, - ); - } - - @override - String toString() { - return '$runtimeType(' - 'isRecordingVideo: $isRecordingVideo, ' - 'isRecordingVideo: $isRecordingVideo, ' - 'isInitialized: $isInitialized, ' - 'errorDescription: $errorDescription, ' - 'previewSize: $previewSize, ' - 'isStreamingImages: $isStreamingImages)'; - } -} - -/// Controls a device camera. -/// -/// Use [availableCameras] to get a list of available cameras. -/// -/// Before using a [CameraController] a call to [initialize] must complete. -/// -/// To show the camera preview on the screen use a [CameraPreview] widget. -class CameraController extends ValueNotifier { - /// Creates a new camera controller in an uninitialized state. - CameraController( - this.description, - this.resolutionPreset, { - this.enableAudio = true, - }) : super(const CameraValue.uninitialized()); - - /// The properties of the camera device controlled by this controller. - final CameraDescription description; - - /// The resolution this controller is targeting. - /// - /// This resolution preset is not guaranteed to be available on the device, - /// if unavailable a lower resolution will be used. - /// - /// See also: [ResolutionPreset]. - final ResolutionPreset resolutionPreset; - - /// Whether to include audio when recording a video. - final bool enableAudio; - - int _textureId; - bool _isDisposed = false; - StreamSubscription _eventSubscription; - StreamSubscription _imageStreamSubscription; - Completer _creatingCompleter; - - /// Checks whether [CameraController.dispose] has completed successfully. - /// - /// This is a no-op when asserts are disabled. - void debugCheckIsDisposed() { - assert(_isDisposed); - } - - /// Initializes the camera on the device. - /// - /// Throws a [CameraException] if the initialization fails. - Future initialize() async { - if (_isDisposed) { - return Future.value(); - } - try { - _creatingCompleter = Completer(); - final Map reply = - await _channel.invokeMapMethod( - 'initialize', - { - 'cameraName': description.name, - 'resolutionPreset': serializeResolutionPreset(resolutionPreset), - 'enableAudio': enableAudio, - }, - ); - _textureId = reply['textureId']; - value = value.copyWith( - isInitialized: true, - previewSize: Size( - reply['previewWidth'].toDouble(), - reply['previewHeight'].toDouble(), - ), - ); - } on PlatformException catch (e) { - throw CameraException(e.code, e.message); - } - _eventSubscription = - EventChannel('flutter.io/cameraPlugin/cameraEvents$_textureId') - .receiveBroadcastStream() - .listen(_listener); - _creatingCompleter.complete(); - return _creatingCompleter.future; - } - - /// Prepare the capture session for video recording. - /// - /// Use of this method is optional, but it may be called for performance - /// reasons on iOS. - /// - /// Preparing audio can cause a minor delay in the CameraPreview view on iOS. - /// If video recording is intended, calling this early eliminates this delay - /// that would otherwise be experienced when video recording is started. - /// This operation is a no-op on Android. - /// - /// Throws a [CameraException] if the prepare fails. - Future prepareForVideoRecording() async { - await _channel.invokeMethod('prepareForVideoRecording'); - } - - /// Listen to events from the native plugins. - /// - /// A "cameraClosing" event is sent when the camera is closed automatically by the system (for example when the app go to background). The plugin will try to reopen the camera automatically but any ongoing recording will end. - void _listener(dynamic event) { - final Map map = event; - if (_isDisposed) { - return; - } - - switch (map['eventType']) { - case 'error': - value = value.copyWith(errorDescription: event['errorDescription']); - break; - case 'cameraClosing': - value = value.copyWith(isRecordingVideo: false); - break; - } - } - - /// Captures an image and saves it to [path]. - /// - /// A path can for example be obtained using - /// [path_provider](https://pub.dartlang.org/packages/path_provider). - /// - /// If a file already exists at the provided path an error will be thrown. - /// The file can be read as this function returns. - /// - /// Throws a [CameraException] if the capture fails. - Future takePicture(String path) async { - if (!value.isInitialized || _isDisposed) { - throw CameraException( - 'Uninitialized CameraController.', - 'takePicture was called on uninitialized CameraController', - ); - } - if (value.isTakingPicture) { - throw CameraException( - 'Previous capture has not returned yet.', - 'takePicture was called before the previous capture returned.', - ); - } - try { - value = value.copyWith(isTakingPicture: true); - await _channel.invokeMethod( - 'takePicture', - {'textureId': _textureId, 'path': path}, - ); - value = value.copyWith(isTakingPicture: false); - } on PlatformException catch (e) { - value = value.copyWith(isTakingPicture: false); - throw CameraException(e.code, e.message); - } - } - - /// Start streaming images from platform camera. - /// - /// Settings for capturing images on iOS and Android is set to always use the - /// latest image available from the camera and will drop all other images. - /// - /// When running continuously with [CameraPreview] widget, this function runs - /// best with [ResolutionPreset.low]. Running on [ResolutionPreset.high] can - /// have significant frame rate drops for [CameraPreview] on lower end - /// devices. - /// - /// Throws a [CameraException] if image streaming or video recording has - /// already started. - // TODO(bmparr): Add settings for resolution and fps. - Future startImageStream(onLatestImageAvailable onAvailable) async { - if (!value.isInitialized || _isDisposed) { - throw CameraException( - 'Uninitialized CameraController', - 'startImageStream was called on uninitialized CameraController.', - ); - } - if (value.isRecordingVideo) { - throw CameraException( - 'A video recording is already started.', - 'startImageStream was called while a video is being recorded.', - ); - } - if (value.isStreamingImages) { - throw CameraException( - 'A camera has started streaming images.', - 'startImageStream was called while a camera was streaming images.', - ); - } - - try { - await _channel.invokeMethod('startImageStream'); - value = value.copyWith(isStreamingImages: true); - } on PlatformException catch (e) { - throw CameraException(e.code, e.message); - } - const EventChannel cameraEventChannel = - EventChannel('plugins.flutter.io/camera/imageStream'); - _imageStreamSubscription = - cameraEventChannel.receiveBroadcastStream().listen( - (dynamic imageData) { - onAvailable(CameraImage._fromPlatformData(imageData)); - }, - ); - } - - /// Stop streaming images from platform camera. - /// - /// Throws a [CameraException] if image streaming was not started or video - /// recording was started. - Future stopImageStream() async { - if (!value.isInitialized || _isDisposed) { - throw CameraException( - 'Uninitialized CameraController', - 'stopImageStream was called on uninitialized CameraController.', - ); - } - if (value.isRecordingVideo) { - throw CameraException( - 'A video recording is already started.', - 'stopImageStream was called while a video is being recorded.', - ); - } - if (!value.isStreamingImages) { - throw CameraException( - 'No camera is streaming images', - 'stopImageStream was called when no camera is streaming images.', - ); - } - - try { - value = value.copyWith(isStreamingImages: false); - await _channel.invokeMethod('stopImageStream'); - } on PlatformException catch (e) { - throw CameraException(e.code, e.message); - } - - await _imageStreamSubscription.cancel(); - _imageStreamSubscription = null; - } - - /// Start a video recording and save the file to [path]. - /// - /// A path can for example be obtained using - /// [path_provider](https://pub.dartlang.org/packages/path_provider). - /// - /// The file is written on the flight as the video is being recorded. - /// If a file already exists at the provided path an error will be thrown. - /// The file can be read as soon as [stopVideoRecording] returns. - /// - /// Throws a [CameraException] if the capture fails. - Future startVideoRecording(String filePath) async { - if (!value.isInitialized || _isDisposed) { - throw CameraException( - 'Uninitialized CameraController', - 'startVideoRecording was called on uninitialized CameraController', - ); - } - if (value.isRecordingVideo) { - throw CameraException( - 'A video recording is already started.', - 'startVideoRecording was called when a recording is already started.', - ); - } - if (value.isStreamingImages) { - throw CameraException( - 'A camera has started streaming images.', - 'startVideoRecording was called while a camera was streaming images.', - ); - } - - try { - await _channel.invokeMethod( - 'startVideoRecording', - {'textureId': _textureId, 'filePath': filePath}, - ); - value = value.copyWith(isRecordingVideo: true, isRecordingPaused: false); - } on PlatformException catch (e) { - throw CameraException(e.code, e.message); - } - } - - /// Stop recording. - Future stopVideoRecording() async { - if (!value.isInitialized || _isDisposed) { - throw CameraException( - 'Uninitialized CameraController', - 'stopVideoRecording was called on uninitialized CameraController', - ); - } - if (!value.isRecordingVideo) { - throw CameraException( - 'No video is recording', - 'stopVideoRecording was called when no video is recording.', - ); - } - try { - value = value.copyWith(isRecordingVideo: false); - await _channel.invokeMethod( - 'stopVideoRecording', - {'textureId': _textureId}, - ); - } on PlatformException catch (e) { - throw CameraException(e.code, e.message); - } - } - - /// Pause video recording. - /// - /// This feature is only available on iOS and Android sdk 24+. - Future pauseVideoRecording() async { - if (!value.isInitialized || _isDisposed) { - throw CameraException( - 'Uninitialized CameraController', - 'pauseVideoRecording was called on uninitialized CameraController', - ); - } - if (!value.isRecordingVideo) { - throw CameraException( - 'No video is recording', - 'pauseVideoRecording was called when no video is recording.', - ); - } - try { - value = value.copyWith(isRecordingPaused: true); - await _channel.invokeMethod( - 'pauseVideoRecording', - {'textureId': _textureId}, - ); - } on PlatformException catch (e) { - throw CameraException(e.code, e.message); - } - } - - /// Resume video recording after pausing. - /// - /// This feature is only available on iOS and Android sdk 24+. - Future resumeVideoRecording() async { - if (!value.isInitialized || _isDisposed) { - throw CameraException( - 'Uninitialized CameraController', - 'resumeVideoRecording was called on uninitialized CameraController', - ); - } - if (!value.isRecordingVideo) { - throw CameraException( - 'No video is recording', - 'resumeVideoRecording was called when no video is recording.', - ); - } - try { - value = value.copyWith(isRecordingPaused: false); - await _channel.invokeMethod( - 'resumeVideoRecording', - {'textureId': _textureId}, - ); - } on PlatformException catch (e) { - throw CameraException(e.code, e.message); - } - } - - /// Releases the resources of this camera. - @override - Future dispose() async { - if (_isDisposed) { - return; - } - _isDisposed = true; - super.dispose(); - if (_creatingCompleter != null) { - await _creatingCompleter.future; - await _channel.invokeMethod( - 'dispose', - {'textureId': _textureId}, - ); - await _eventSubscription?.cancel(); - } - } -} +export 'src/camera_controller.dart'; +export 'src/camera_image.dart'; +export 'src/camera_preview.dart'; + +export 'package:camera_platform_interface/camera_platform_interface.dart' + show + CameraDescription, + CameraException, + CameraLensDirection, + ResolutionPreset, + XFile; diff --git a/packages/camera/camera/lib/src/camera_controller.dart b/packages/camera/camera/lib/src/camera_controller.dart new file mode 100644 index 000000000000..fcf00245ce7f --- /dev/null +++ b/packages/camera/camera/lib/src/camera_controller.dart @@ -0,0 +1,484 @@ +// Copyright 2018 The Chromium 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 'package:camera/camera.dart'; +import 'package:camera_platform_interface/camera_platform_interface.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +final MethodChannel _channel = const MethodChannel('plugins.flutter.io/camera'); + +/// Signature for a callback receiving the a camera image. +/// +/// This is used by [CameraController.startImageStream]. +// ignore: inference_failure_on_function_return_type +typedef onLatestImageAvailable = Function(CameraImage image); + +/// Completes with a list of available cameras. +/// +/// May throw a [CameraException]. +Future> availableCameras() async { + return CameraPlatform.instance.availableCameras(); +} + +/// The state of a [CameraController]. +class CameraValue { + /// Creates a new camera controller state. + const CameraValue({ + this.isInitialized, + this.errorDescription, + this.previewSize, + this.isRecordingVideo, + this.isTakingPicture, + this.isStreamingImages, + bool isRecordingPaused, + }) : _isRecordingPaused = isRecordingPaused; + + /// Creates a new camera controller state for an uninitialized controller. + const CameraValue.uninitialized() + : this( + isInitialized: false, + isRecordingVideo: false, + isTakingPicture: false, + isStreamingImages: false, + isRecordingPaused: false, + ); + + /// True after [CameraController.initialize] has completed successfully. + final bool isInitialized; + + /// True when a picture capture request has been sent but as not yet returned. + final bool isTakingPicture; + + /// True when the camera is recording (not the same as previewing). + final bool isRecordingVideo; + + /// True when images from the camera are being streamed. + final bool isStreamingImages; + + final bool _isRecordingPaused; + + /// True when camera [isRecordingVideo] and recording is paused. + bool get isRecordingPaused => isRecordingVideo && _isRecordingPaused; + + /// Description of an error state. + /// + /// This is null while the controller is not in an error state. + /// When [hasError] is true this contains the error description. + final String errorDescription; + + /// The size of the preview in pixels. + /// + /// Is `null` until [isInitialized] is `true`. + final Size previewSize; + + /// Convenience getter for `previewSize.height / previewSize.width`. + /// + /// Can only be called when [initialize] is done. + double get aspectRatio => previewSize.height / previewSize.width; + + /// Whether the controller is in an error state. + /// + /// When true [errorDescription] describes the error. + bool get hasError => errorDescription != null; + + /// Creates a modified copy of the object. + /// + /// Explicitly specified fields get the specified value, all other fields get + /// the same value of the current object. + CameraValue copyWith({ + bool isInitialized, + bool isRecordingVideo, + bool isTakingPicture, + bool isStreamingImages, + String errorDescription, + Size previewSize, + bool isRecordingPaused, + }) { + return CameraValue( + isInitialized: isInitialized ?? this.isInitialized, + errorDescription: errorDescription, + previewSize: previewSize ?? this.previewSize, + isRecordingVideo: isRecordingVideo ?? this.isRecordingVideo, + isTakingPicture: isTakingPicture ?? this.isTakingPicture, + isStreamingImages: isStreamingImages ?? this.isStreamingImages, + isRecordingPaused: isRecordingPaused ?? _isRecordingPaused, + ); + } + + @override + String toString() { + return '$runtimeType(' + 'isRecordingVideo: $isRecordingVideo, ' + 'isInitialized: $isInitialized, ' + 'errorDescription: $errorDescription, ' + 'previewSize: $previewSize, ' + 'isStreamingImages: $isStreamingImages)'; + } +} + +/// Controls a device camera. +/// +/// Use [availableCameras] to get a list of available cameras. +/// +/// Before using a [CameraController] a call to [initialize] must complete. +/// +/// To show the camera preview on the screen use a [CameraPreview] widget. +class CameraController extends ValueNotifier { + /// Creates a new camera controller in an uninitialized state. + CameraController( + this.description, + this.resolutionPreset, { + this.enableAudio = true, + }) : super(const CameraValue.uninitialized()); + + /// The properties of the camera device controlled by this controller. + final CameraDescription description; + + /// The resolution this controller is targeting. + /// + /// This resolution preset is not guaranteed to be available on the device, + /// if unavailable a lower resolution will be used. + /// + /// See also: [ResolutionPreset]. + final ResolutionPreset resolutionPreset; + + /// Whether to include audio when recording a video. + final bool enableAudio; + + int _cameraId; + bool _isDisposed = false; + StreamSubscription _imageStreamSubscription; + FutureOr _initCalled; + + /// Checks whether [CameraController.dispose] has completed successfully. + /// + /// This is a no-op when asserts are disabled. + void debugCheckIsDisposed() { + assert(_isDisposed); + } + + /// The camera identifier with which the controller is associated. + int get cameraId => _cameraId; + + /// Initializes the camera on the device. + /// + /// Throws a [CameraException] if the initialization fails. + Future initialize() async { + if (_isDisposed) { + throw CameraException( + 'Disposed CameraController', + 'initialize was called on a disposed CameraController', + ); + } + try { + _cameraId = await CameraPlatform.instance.createCamera( + description, + resolutionPreset, + enableAudio: enableAudio, + ); + + final previewSize = + CameraPlatform.instance.onCameraInitialized(_cameraId).map((event) { + return Size( + event.previewWidth, + event.previewHeight, + ); + }).first; + + await CameraPlatform.instance.initializeCamera(_cameraId); + + value = value.copyWith( + isInitialized: true, + previewSize: await previewSize, + ); + } on PlatformException catch (e) { + throw CameraException(e.code, e.message); + } + + _initCalled = true; + } + + /// Prepare the capture session for video recording. + /// + /// Use of this method is optional, but it may be called for performance + /// reasons on iOS. + /// + /// Preparing audio can cause a minor delay in the CameraPreview view on iOS. + /// If video recording is intended, calling this early eliminates this delay + /// that would otherwise be experienced when video recording is started. + /// This operation is a no-op on Android. + /// + /// Throws a [CameraException] if the prepare fails. + Future prepareForVideoRecording() async { + await CameraPlatform.instance.prepareForVideoRecording(); + } + + /// Captures an image and saves it to [path]. + /// + /// A path can for example be obtained using + /// [path_provider](https://pub.dartlang.org/packages/path_provider). + /// + /// If a file already exists at the provided path an error will be thrown. + /// The file can be read as this function returns. + /// + /// Throws a [CameraException] if the capture fails. + Future takePicture() async { + if (!value.isInitialized || _isDisposed) { + throw CameraException( + 'Uninitialized CameraController.', + 'takePicture was called on uninitialized CameraController', + ); + } + if (value.isTakingPicture) { + throw CameraException( + 'Previous capture has not returned yet.', + 'takePicture was called before the previous capture returned.', + ); + } + try { + value = value.copyWith(isTakingPicture: true); + XFile file = await CameraPlatform.instance.takePicture(_cameraId); + value = value.copyWith(isTakingPicture: false); + return file; + } on PlatformException catch (e) { + value = value.copyWith(isTakingPicture: false); + throw CameraException(e.code, e.message); + } + } + + /// Start streaming images from platform camera. + /// + /// Settings for capturing images on iOS and Android is set to always use the + /// latest image available from the camera and will drop all other images. + /// + /// When running continuously with [CameraPreview] widget, this function runs + /// best with [ResolutionPreset.low]. Running on [ResolutionPreset.high] can + /// have significant frame rate drops for [CameraPreview] on lower end + /// devices. + /// + /// Throws a [CameraException] if image streaming or video recording has + /// already started. + /// + /// The `startImageStream` method is only available on Android and iOS (other + /// platforms won't be supported in current setup). + /// + // TODO(bmparr): Add settings for resolution and fps. + Future startImageStream(onLatestImageAvailable onAvailable) async { + assert(defaultTargetPlatform == TargetPlatform.android || + defaultTargetPlatform == TargetPlatform.iOS); + + if (!value.isInitialized || _isDisposed) { + throw CameraException( + 'Uninitialized CameraController', + 'startImageStream was called on uninitialized CameraController.', + ); + } + if (value.isRecordingVideo) { + throw CameraException( + 'A video recording is already started.', + 'startImageStream was called while a video is being recorded.', + ); + } + if (value.isStreamingImages) { + throw CameraException( + 'A camera has started streaming images.', + 'startImageStream was called while a camera was streaming images.', + ); + } + + try { + await _channel.invokeMethod('startImageStream'); + value = value.copyWith(isStreamingImages: true); + } on PlatformException catch (e) { + throw CameraException(e.code, e.message); + } + const EventChannel cameraEventChannel = + EventChannel('plugins.flutter.io/camera/imageStream'); + _imageStreamSubscription = + cameraEventChannel.receiveBroadcastStream().listen( + (dynamic imageData) { + onAvailable(CameraImage.fromPlatformData(imageData)); + }, + ); + } + + /// Stop streaming images from platform camera. + /// + /// Throws a [CameraException] if image streaming was not started or video + /// recording was started. + /// + /// The `stopImageStream` method is only available on Android and iOS (other + /// platforms won't be supported in current setup). + Future stopImageStream() async { + assert(defaultTargetPlatform == TargetPlatform.android || + defaultTargetPlatform == TargetPlatform.iOS); + + if (!value.isInitialized || _isDisposed) { + throw CameraException( + 'Uninitialized CameraController', + 'stopImageStream was called on uninitialized CameraController.', + ); + } + if (value.isRecordingVideo) { + throw CameraException( + 'A video recording is already started.', + 'stopImageStream was called while a video is being recorded.', + ); + } + if (!value.isStreamingImages) { + throw CameraException( + 'No camera is streaming images', + 'stopImageStream was called when no camera is streaming images.', + ); + } + + try { + value = value.copyWith(isStreamingImages: false); + await _channel.invokeMethod('stopImageStream'); + } on PlatformException catch (e) { + throw CameraException(e.code, e.message); + } + + await _imageStreamSubscription.cancel(); + _imageStreamSubscription = null; + } + + /// Start a video recording. + /// + /// The video is returned as a [XFile] after calling [stopVideoRecording]. + /// Throws a [CameraException] if the capture fails. + Future startVideoRecording() async { + if (!value.isInitialized || _isDisposed) { + throw CameraException( + 'Uninitialized CameraController', + 'startVideoRecording was called on uninitialized CameraController', + ); + } + if (value.isRecordingVideo) { + throw CameraException( + 'A video recording is already started.', + 'startVideoRecording was called when a recording is already started.', + ); + } + if (value.isStreamingImages) { + throw CameraException( + 'A camera has started streaming images.', + 'startVideoRecording was called while a camera was streaming images.', + ); + } + + try { + await CameraPlatform.instance.startVideoRecording(_cameraId); + value = value.copyWith(isRecordingVideo: true, isRecordingPaused: false); + } on PlatformException catch (e) { + throw CameraException(e.code, e.message); + } + } + + /// Stops the video recording and returns the file where it was saved. + /// + /// Throws a [CameraException] if the capture failed. + Future stopVideoRecording() async { + if (!value.isInitialized || _isDisposed) { + throw CameraException( + 'Uninitialized CameraController', + 'stopVideoRecording was called on uninitialized CameraController', + ); + } + if (!value.isRecordingVideo) { + throw CameraException( + 'No video is recording', + 'stopVideoRecording was called when no video is recording.', + ); + } + try { + XFile file = await CameraPlatform.instance.stopVideoRecording(_cameraId); + value = value.copyWith(isRecordingVideo: false); + return file; + } on PlatformException catch (e) { + throw CameraException(e.code, e.message); + } + } + + /// Pause video recording. + /// + /// This feature is only available on iOS and Android sdk 24+. + Future pauseVideoRecording() async { + if (!value.isInitialized || _isDisposed) { + throw CameraException( + 'Uninitialized CameraController', + 'pauseVideoRecording was called on uninitialized CameraController', + ); + } + if (!value.isRecordingVideo) { + throw CameraException( + 'No video is recording', + 'pauseVideoRecording was called when no video is recording.', + ); + } + try { + await CameraPlatform.instance.pauseVideoRecording(_cameraId); + value = value.copyWith(isRecordingPaused: true); + } on PlatformException catch (e) { + throw CameraException(e.code, e.message); + } + } + + /// Resume video recording after pausing. + /// + /// This feature is only available on iOS and Android sdk 24+. + Future resumeVideoRecording() async { + if (!value.isInitialized || _isDisposed) { + throw CameraException( + 'Uninitialized CameraController', + 'resumeVideoRecording was called on uninitialized CameraController', + ); + } + if (!value.isRecordingVideo) { + throw CameraException( + 'No video is recording', + 'resumeVideoRecording was called when no video is recording.', + ); + } + try { + await CameraPlatform.instance.resumeVideoRecording(_cameraId); + value = value.copyWith(isRecordingPaused: false); + } on PlatformException catch (e) { + throw CameraException(e.code, e.message); + } + } + + /// Returns a widget showing a live camera preview. + Widget buildPreview() { + if (!value.isInitialized || _isDisposed) { + throw CameraException( + 'Uninitialized CameraController', + 'buildView() was called on uninitialized CameraController.', + ); + } + try { + return CameraPlatform.instance.buildPreview(_cameraId); + } on PlatformException catch (e) { + throw CameraException(e.code, e.message); + } + } + + /// Releases the resources of this camera. + @override + Future dispose() async { + if (_isDisposed) { + return; + } + _isDisposed = true; + super.dispose(); + if (_initCalled != null) { + await _initCalled; + await CameraPlatform.instance.dispose(_cameraId); + } + } +} diff --git a/packages/camera/camera/lib/camera_image.dart b/packages/camera/camera/lib/src/camera_image.dart similarity index 96% rename from packages/camera/camera/lib/camera_image.dart rename to packages/camera/camera/lib/src/camera_image.dart index cebc14873f52..ca8115eb758d 100644 --- a/packages/camera/camera/lib/camera_image.dart +++ b/packages/camera/camera/lib/src/camera_image.dart @@ -2,7 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -part of 'camera.dart'; +import 'dart:typed_data'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; /// A single color plane of image data. /// @@ -113,7 +116,8 @@ ImageFormatGroup _asImageFormatGroup(dynamic rawFormat) { /// Although not all image formats are planar on iOS, we treat 1-dimensional /// images as single planar images. class CameraImage { - CameraImage._fromPlatformData(Map data) + /// CameraImage Constructor + CameraImage.fromPlatformData(Map data) : format = ImageFormat._fromPlatformData(data['format']), height = data['height'], width = data['width'], diff --git a/packages/camera/camera/lib/src/camera_preview.dart b/packages/camera/camera/lib/src/camera_preview.dart new file mode 100644 index 000000000000..bf7862eb9151 --- /dev/null +++ b/packages/camera/camera/lib/src/camera_preview.dart @@ -0,0 +1,23 @@ +// Copyright 2018 The Chromium 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 'package:camera/camera.dart'; +import 'package:camera_platform_interface/camera_platform_interface.dart'; +import 'package:flutter/material.dart'; + +/// A widget showing a live camera preview. +class CameraPreview extends StatelessWidget { + /// Creates a preview widget for the given camera controller. + const CameraPreview(this.controller); + + /// The controller for the camera that the preview is shown for. + final CameraController controller; + + @override + Widget build(BuildContext context) { + return controller.value.isInitialized + ? CameraPlatform.instance.buildPreview(controller.cameraId) + : Container(); + } +} diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index 146219d8366f..64d5bba61159 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -2,12 +2,13 @@ name: camera description: A Flutter plugin for getting information about and controlling the camera on Android and iOS. Supports previewing the camera feed, capturing images, capturing video, and streaming image buffers to dart. -version: 0.5.8+19 +version: 0.6.0 homepage: https://github.com/flutter/plugins/tree/master/packages/camera/camera dependencies: flutter: sdk: flutter + camera_platform_interface: ^1.0.0 dev_dependencies: path_provider: ^0.5.0 @@ -17,6 +18,8 @@ dev_dependencies: flutter_driver: sdk: flutter pedantic: ^1.8.0 + mockito: ^4.1.3 + plugin_platform_interface: ^1.0.3 flutter: plugin: diff --git a/packages/camera/camera/test/camera_image_stream_test.dart b/packages/camera/camera/test/camera_image_stream_test.dart new file mode 100644 index 000000000000..be7047f2220f --- /dev/null +++ b/packages/camera/camera/test/camera_image_stream_test.dart @@ -0,0 +1,187 @@ +import 'package:camera/camera.dart'; +import 'package:camera_platform_interface/camera_platform_interface.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'camera_test.dart'; +import 'utils/method_channel_mock.dart'; + +void main() { + WidgetsFlutterBinding.ensureInitialized(); + + setUp(() { + CameraPlatform.instance = MockCameraPlatform(); + }); + + test('startImageStream() throws $CameraException when uninitialized', () { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + + expect( + () => cameraController.startImageStream((image) => null), + throwsA(isA().having( + (error) => error.description, + 'Uninitialized CameraController.', + 'startImageStream was called on uninitialized CameraController.', + ))); + }); + + test('startImageStream() throws $CameraException when recording videos', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + + await cameraController.initialize(); + + cameraController.value = + cameraController.value.copyWith(isRecordingVideo: true); + + expect( + () => cameraController.startImageStream((image) => null), + throwsA(isA().having( + (error) => error.description, + 'A video recording is already started.', + 'startImageStream was called while a video is being recorded.', + ))); + }); + test( + 'startImageStream() throws $CameraException when already streaming images', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + cameraController.value = + cameraController.value.copyWith(isStreamingImages: true); + expect( + () => cameraController.startImageStream((image) => null), + throwsA(isA().having( + (error) => error.description, + 'A camera has started streaming images.', + 'startImageStream was called while a camera was streaming images.', + ))); + }); + + test('startImageStream() calls CameraPlatform', () async { + MethodChannelMock cameraChannelMock = MethodChannelMock( + channelName: 'plugins.flutter.io/camera', + methods: {'startImageStream': {}}); + MethodChannelMock streamChannelMock = MethodChannelMock( + channelName: 'plugins.flutter.io/camera/imageStream', + methods: {'listen': {}}); + + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + await cameraController.startImageStream((image) => null); + + expect(cameraChannelMock.log, + [isMethodCall('startImageStream', arguments: null)]); + expect(streamChannelMock.log, + [isMethodCall('listen', arguments: null)]); + }); + + test('stopImageStream() throws $CameraException when uninitialized', () { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + + expect( + cameraController.stopImageStream, + throwsA(isA().having( + (error) => error.description, + 'Uninitialized CameraController.', + 'stopImageStream was called on uninitialized CameraController.', + ))); + }); + + test('stopImageStream() throws $CameraException when recording videos', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + await cameraController.startImageStream((image) => null); + cameraController.value = + cameraController.value.copyWith(isRecordingVideo: true); + expect( + cameraController.stopImageStream, + throwsA(isA().having( + (error) => error.description, + 'A video recording is already started.', + 'stopImageStream was called while a video is being recorded.', + ))); + }); + + test('stopImageStream() throws $CameraException when not streaming images', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + expect( + cameraController.stopImageStream, + throwsA(isA().having( + (error) => error.description, + 'No camera is streaming images', + 'stopImageStream was called when no camera is streaming images.', + ))); + }); + + test('stopImageStream() intended behaviour', () async { + MethodChannelMock cameraChannelMock = MethodChannelMock( + channelName: 'plugins.flutter.io/camera', + methods: {'startImageStream': {}, 'stopImageStream': {}}); + MethodChannelMock streamChannelMock = MethodChannelMock( + channelName: 'plugins.flutter.io/camera/imageStream', + methods: {'listen': {}, 'cancel': {}}); + + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + await cameraController.startImageStream((image) => null); + await cameraController.stopImageStream(); + + expect(cameraChannelMock.log, [ + isMethodCall('startImageStream', arguments: null), + isMethodCall('stopImageStream', arguments: null) + ]); + + expect(streamChannelMock.log, [ + isMethodCall('listen', arguments: null), + isMethodCall('cancel', arguments: null) + ]); + }); +} diff --git a/packages/camera/camera/test/camera_image_test.dart b/packages/camera/camera/test/camera_image_test.dart new file mode 100644 index 000000000000..c8f808f2c1a1 --- /dev/null +++ b/packages/camera/camera/test/camera_image_test.dart @@ -0,0 +1,113 @@ +// Copyright 2019 The Chromium 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:typed_data'; + +import 'package:camera/camera.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('$CameraImage tests', () { + test('$CameraImage can be created', () { + debugDefaultTargetPlatformOverride = TargetPlatform.android; + CameraImage cameraImage = CameraImage.fromPlatformData({ + 'format': 35, + 'height': 1, + 'width': 4, + 'planes': [ + { + 'bytes': Uint8List.fromList([1, 2, 3, 4]), + 'bytesPerPixel': 1, + 'bytesPerRow': 4, + 'height': 1, + 'width': 4 + } + ] + }); + expect(cameraImage.height, 1); + expect(cameraImage.width, 4); + expect(cameraImage.format.group, ImageFormatGroup.yuv420); + expect(cameraImage.planes.length, 1); + }); + + test('$CameraImage has ImageFormatGroup.yuv420 for iOS', () { + debugDefaultTargetPlatformOverride = TargetPlatform.iOS; + + CameraImage cameraImage = CameraImage.fromPlatformData({ + 'format': 875704438, + 'height': 1, + 'width': 4, + 'planes': [ + { + 'bytes': Uint8List.fromList([1, 2, 3, 4]), + 'bytesPerPixel': 1, + 'bytesPerRow': 4, + 'height': 1, + 'width': 4 + } + ] + }); + expect(cameraImage.format.group, ImageFormatGroup.yuv420); + }); + + test('$CameraImage has ImageFormatGroup.yuv420 for Android', () { + debugDefaultTargetPlatformOverride = TargetPlatform.android; + + CameraImage cameraImage = CameraImage.fromPlatformData({ + 'format': 35, + 'height': 1, + 'width': 4, + 'planes': [ + { + 'bytes': Uint8List.fromList([1, 2, 3, 4]), + 'bytesPerPixel': 1, + 'bytesPerRow': 4, + 'height': 1, + 'width': 4 + } + ] + }); + expect(cameraImage.format.group, ImageFormatGroup.yuv420); + }); + + test('$CameraImage has ImageFormatGroup.bgra8888 for iOS', () { + debugDefaultTargetPlatformOverride = TargetPlatform.iOS; + + CameraImage cameraImage = CameraImage.fromPlatformData({ + 'format': 1111970369, + 'height': 1, + 'width': 4, + 'planes': [ + { + 'bytes': Uint8List.fromList([1, 2, 3, 4]), + 'bytesPerPixel': 1, + 'bytesPerRow': 4, + 'height': 1, + 'width': 4 + } + ] + }); + expect(cameraImage.format.group, ImageFormatGroup.bgra8888); + }); + test('$CameraImage has ImageFormatGroup.unknown', () { + CameraImage cameraImage = CameraImage.fromPlatformData({ + 'format': null, + 'height': 1, + 'width': 4, + 'planes': [ + { + 'bytes': Uint8List.fromList([1, 2, 3, 4]), + 'bytesPerPixel': 1, + 'bytesPerRow': 4, + 'height': 1, + 'width': 4 + } + ] + }); + expect(cameraImage.format.group, ImageFormatGroup.unknown); + }); + }); +} diff --git a/packages/camera/camera/test/camera_test.dart b/packages/camera/camera/test/camera_test.dart index cc33b369f000..b129849cd141 100644 --- a/packages/camera/camera/test/camera_test.dart +++ b/packages/camera/camera/test/camera_test.dart @@ -1,10 +1,46 @@ // Copyright 2017 The Chromium 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:ui'; + import 'package:camera/camera.dart'; +import 'package:camera_platform_interface/camera_platform_interface.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/mockito.dart'; +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +get mockAvailableCameras => [ + CameraDescription( + name: 'camBack', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + CameraDescription( + name: 'camFront', + lensDirection: CameraLensDirection.front, + sensorOrientation: 180), + ]; + +get mockInitializeCamera => 13; + +get mockOnCameraInitializedEvent => CameraInitializedEvent(13, 75, 75); + +get mockOnCameraClosingEvent => null; + +get mockOnCameraErrorEvent => CameraErrorEvent(13, 'closing'); + +XFile mockTakePicture = XFile('foo/bar.png'); + +get mockVideoRecordingXFile => null; + +bool mockPlatformException = false; void main() { + WidgetsFlutterBinding.ensureInitialized(); + group('camera', () { test('debugCheckIsDisposed should not throw assertion error when disposed', () { @@ -32,9 +68,290 @@ void main() { throwsAssertionError, ); }); + + test('availableCameras() has camera', () async { + CameraPlatform.instance = MockCameraPlatform(); + + var camList = await availableCameras(); + + expect(camList, equals(mockAvailableCameras)); + }); + }); + + group('$CameraController', () { + setUpAll(() { + CameraPlatform.instance = MockCameraPlatform(); + }); + + test('Can be initialized', () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + expect(cameraController.value.aspectRatio, 1); + expect(cameraController.value.previewSize, Size(75, 75)); + expect(cameraController.value.isInitialized, isTrue); + }); + + test('can be disposed', () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + expect(cameraController.value.aspectRatio, 1); + expect(cameraController.value.previewSize, Size(75, 75)); + expect(cameraController.value.isInitialized, isTrue); + + await cameraController.dispose(); + + verify(CameraPlatform.instance.dispose(13)).called(1); + }); + + test('initialize() throws CameraException when disposed', () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + expect(cameraController.value.aspectRatio, 1); + expect(cameraController.value.previewSize, Size(75, 75)); + expect(cameraController.value.isInitialized, isTrue); + + await cameraController.dispose(); + + verify(CameraPlatform.instance.dispose(13)).called(1); + + expect( + cameraController.initialize, + throwsA(isA().having( + (error) => error.description, + 'Error description', + 'initialize was called on a disposed CameraController', + ))); + }); + + test('initialize() throws $CameraException on $PlatformException ', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + + mockPlatformException = true; + + expect( + cameraController.initialize, + throwsA(isA().having( + (error) => error.description, + 'foo', + 'bar', + ))); + mockPlatformException = false; + }); + + test('prepareForVideoRecording() calls $CameraPlatform ', () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + await cameraController.prepareForVideoRecording(); + + verify(CameraPlatform.instance.prepareForVideoRecording()).called(1); + }); + + test('takePicture() throws $CameraException when uninitialized ', () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + expect( + cameraController.takePicture(), + throwsA(isA().having( + (error) => error.description, + 'Uninitialized CameraController.', + 'takePicture was called on uninitialized CameraController', + ))); + }); + + test('takePicture() throws $CameraException when takePicture is true', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + cameraController.value = + cameraController.value.copyWith(isTakingPicture: true); + expect( + cameraController.takePicture(), + throwsA(isA().having( + (error) => error.description, + 'Previous capture has not returned yet.', + 'takePicture was called before the previous capture returned.', + ))); + }); + + test('takePicture() returns $XFile', () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + XFile xFile = await cameraController.takePicture(); + + expect(xFile.path, mockTakePicture.path); + }); + + test('takePicture() throws $CameraException on $PlatformException', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + mockPlatformException = true; + expect( + cameraController.takePicture(), + throwsA(isA().having( + (error) => error.description, + 'foo', + 'bar', + ))); + mockPlatformException = false; + }); + + test('startVideoRecording() throws $CameraException when uninitialized', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + + expect( + cameraController.startVideoRecording(), + throwsA(isA().having( + (error) => error.description, + 'Uninitialized CameraController', + 'startVideoRecording was called on uninitialized CameraController', + ))); + }); + test('startVideoRecording() throws $CameraException when recording videos', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + + await cameraController.initialize(); + + cameraController.value = + cameraController.value.copyWith(isRecordingVideo: true); + + expect( + cameraController.startVideoRecording(), + throwsA(isA().having( + (error) => error.description, + 'A video recording is already started.', + 'startVideoRecording was called when a recording is already started.', + ))); + }); + + test( + 'startVideoRecording() throws $CameraException when already streaming images', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + + await cameraController.initialize(); + + cameraController.value = + cameraController.value.copyWith(isStreamingImages: true); + + expect( + cameraController.startVideoRecording(), + throwsA(isA().having( + (error) => error.description, + 'A camera has started streaming images.', + 'startVideoRecording was called while a camera was streaming images.', + ))); + }); }); } +class MockCameraPlatform extends Mock + with MockPlatformInterfaceMixin + implements CameraPlatform { + @override + Future> availableCameras() => + Future.value(mockAvailableCameras); + + @override + Future createCamera( + CameraDescription description, + ResolutionPreset resolutionPreset, { + bool enableAudio, + }) => + mockPlatformException + ? throw PlatformException(code: 'foo', message: 'bar') + : Future.value(mockInitializeCamera); + + @override + Stream onCameraInitialized(int cameraId) => + Stream.value(mockOnCameraInitializedEvent); + + @override + Stream onCameraClosing(int cameraId) => + Stream.value(mockOnCameraClosingEvent); + + @override + Stream onCameraError(int cameraId) => + Stream.value(mockOnCameraErrorEvent); + + @override + Future takePicture(int cameraId) => mockPlatformException + ? throw PlatformException(code: 'foo', message: 'bar') + : Future.value(mockTakePicture); + + @override + Future startVideoRecording(int cameraId) => + Future.value(mockVideoRecordingXFile); +} + class MockCameraDescription extends CameraDescription { @override CameraLensDirection get lensDirection => CameraLensDirection.back; diff --git a/packages/camera/camera/test/camera_value_test.dart b/packages/camera/camera/test/camera_value_test.dart new file mode 100644 index 000000000000..28255eb0a568 --- /dev/null +++ b/packages/camera/camera/test/camera_value_test.dart @@ -0,0 +1,102 @@ +// Copyright 2019 The Chromium 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:ui'; + +import 'package:camera/camera.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('camera_value', () { + test('Can be created', () { + var cameraValue = const CameraValue( + isInitialized: false, + errorDescription: null, + previewSize: Size(10, 10), + isRecordingPaused: false, + isRecordingVideo: false, + isTakingPicture: false, + isStreamingImages: false, + ); + + expect(cameraValue, isA()); + expect(cameraValue.isInitialized, isFalse); + expect(cameraValue.errorDescription, null); + expect(cameraValue.previewSize, Size(10, 10)); + expect(cameraValue.isRecordingPaused, isFalse); + expect(cameraValue.isRecordingVideo, isFalse); + expect(cameraValue.isTakingPicture, isFalse); + expect(cameraValue.isStreamingImages, isFalse); + }); + + test('Can be created as uninitialized', () { + var cameraValue = const CameraValue.uninitialized(); + + expect(cameraValue, isA()); + expect(cameraValue.isInitialized, isFalse); + expect(cameraValue.errorDescription, null); + expect(cameraValue.previewSize, null); + expect(cameraValue.isRecordingPaused, isFalse); + expect(cameraValue.isRecordingVideo, isFalse); + expect(cameraValue.isTakingPicture, isFalse); + expect(cameraValue.isStreamingImages, isFalse); + }); + + test('Can be copied with isInitialized', () { + var cv = const CameraValue.uninitialized(); + var cameraValue = cv.copyWith(isInitialized: true); + + expect(cameraValue, isA()); + expect(cameraValue.isInitialized, isTrue); + expect(cameraValue.errorDescription, null); + expect(cameraValue.previewSize, null); + expect(cameraValue.isRecordingPaused, isFalse); + expect(cameraValue.isRecordingVideo, isFalse); + expect(cameraValue.isTakingPicture, isFalse); + expect(cameraValue.isStreamingImages, isFalse); + }); + + test('Has aspectRatio after setting size', () { + var cv = const CameraValue.uninitialized(); + var cameraValue = + cv.copyWith(isInitialized: true, previewSize: Size(20, 10)); + + expect(cameraValue.aspectRatio, 0.5); + }); + + test('hasError is true after setting errorDescription', () { + var cv = const CameraValue.uninitialized(); + var cameraValue = cv.copyWith(errorDescription: 'error'); + + expect(cameraValue.hasError, isTrue); + expect(cameraValue.errorDescription, 'error'); + }); + + test('Recording paused is false when not recording', () { + var cv = const CameraValue.uninitialized(); + var cameraValue = cv.copyWith( + isInitialized: true, + isRecordingVideo: false, + isRecordingPaused: true); + + expect(cameraValue.isRecordingPaused, isFalse); + }); + + test('toString() works as expected', () { + var cameraValue = const CameraValue( + isInitialized: false, + errorDescription: null, + previewSize: Size(10, 10), + isRecordingPaused: false, + isRecordingVideo: false, + isTakingPicture: false, + isStreamingImages: false, + ); + + expect(cameraValue.toString(), + 'CameraValue(isRecordingVideo: false, isInitialized: false, errorDescription: null, previewSize: Size(10.0, 10.0), isStreamingImages: false)'); + }); + }); +} diff --git a/packages/camera/camera/test/utils/method_channel_mock.dart b/packages/camera/camera/test/utils/method_channel_mock.dart new file mode 100644 index 000000000000..cdf393f82b5f --- /dev/null +++ b/packages/camera/camera/test/utils/method_channel_mock.dart @@ -0,0 +1,38 @@ +// Copyright 2019 The Chromium 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 'package:flutter/services.dart'; + +class MethodChannelMock { + final Duration delay; + final MethodChannel methodChannel; + final Map methods; + final log = []; + + MethodChannelMock({ + String channelName, + this.delay, + this.methods, + }) : methodChannel = MethodChannel(channelName) { + methodChannel.setMockMethodCallHandler(_handler); + } + + Future _handler(MethodCall methodCall) async { + log.add(methodCall); + + if (!methods.containsKey(methodCall.method)) { + throw MissingPluginException('No implementation found for method ' + '${methodCall.method} on channel ${methodChannel.name}'); + } + + return Future.delayed(delay ?? Duration.zero, () { + final result = methods[methodCall.method]; + if (result is Exception) { + throw result; + } + + return Future.value(result); + }); + } +} diff --git a/packages/google_maps_flutter/google_maps_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/google_maps_flutter/google_maps_flutter/example/ios/Runner.xcodeproj/project.pbxproj index f6a2d6ec291a..75392aeb82e5 100644 --- a/packages/google_maps_flutter/google_maps_flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/google_maps_flutter/google_maps_flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -9,11 +9,7 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; - 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4510D964F3B1259FEDD3ABA6 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7755F8F4BABC3D6A0BD4048B /* libPods-Runner.a */; }; - 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; - 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 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 */; }; @@ -28,8 +24,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, - 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -40,14 +34,12 @@ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 7755F8F4BABC3D6A0BD4048B /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 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 = ""; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; @@ -63,8 +55,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, - 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, 4510D964F3B1259FEDD3ABA6 /* libPods-Runner.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -83,9 +73,7 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( - 3B80C3931E831B6300D905FE /* App.framework */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEBA1CF902C7004384FC /* Flutter.framework */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 9740EEB31CF90195004384FC /* Generated.xcconfig */, @@ -230,7 +218,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 74BF216DF17B0C7F983459BD /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; @@ -270,9 +258,12 @@ files = ( ); inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh", + "${PODS_ROOT}/GoogleMaps/Maps/Frameworks/GoogleMaps.framework/Resources/GoogleMaps.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleMaps.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -285,9 +276,12 @@ files = ( ); inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", + "${PODS_ROOT}/../Flutter/Flutter.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -331,7 +325,6 @@ /* Begin XCBuildConfiguration section */ 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; @@ -388,7 +381,6 @@ }; 97C147041CF9000F007C117D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; From ad6d03c13ba58375e093fae2d4d76f8a31ea9542 Mon Sep 17 00:00:00 2001 From: Emmanuel Garcia Date: Mon, 14 Dec 2020 13:33:59 -0800 Subject: [PATCH 09/24] Merge null-safety plugins (#3324) --- .../connectivity/connectivity/CHANGELOG.md | 8 + .../connectivity/analysis_options.yaml | 4 + .../connectivity/example/lib/main.dart | 6 +- .../connectivity/example/pubspec.yaml | 3 +- .../integration_test/connectivity_test.dart | 3 + .../integration_test/connectivity_test.dart | 3 + .../connectivity/lib/connectivity.dart | 4 +- .../connectivity/connectivity/pubspec.yaml | 17 +- .../connectivity/test/connectivity_test.dart | 4 +- .../connectivity_macos/CHANGELOG.md | 4 + .../connectivity_macos/pubspec.yaml | 4 +- .../CHANGELOG.md | 8 + .../analysis_options.yaml | 4 + .../lib/connectivity_platform_interface.dart | 6 +- .../lib/src/method_channel_connectivity.dart | 48 +-- .../pubspec.yaml | 10 +- .../method_channel_connectivity_test.dart | 10 +- packages/device_info/device_info/CHANGELOG.md | 8 + .../device_info/analysis_options.yaml | 4 + .../integration_test/device_info_test.dart | 3 + .../device_info/example/lib/main.dart | 2 +- .../device_info/example/pubspec.yaml | 4 +- .../example/test_driver/integration_test.dart | 3 + .../device_info/lib/device_info.dart | 4 +- packages/device_info/device_info/pubspec.yaml | 14 +- .../CHANGELOG.md | 13 + .../analysis_options.yaml | 4 + .../lib/model/android_device_info.dart | 121 ++++---- .../lib/model/ios_device_info.dart | 51 ++-- .../pubspec.yaml | 12 +- .../test/method_channel_device_info_test.dart | 124 +++++++- .../CHANGELOG.md | 8 + .../example/pubspec.yaml | 2 +- .../pubspec.yaml | 4 +- .../test/google_sign_in_test.dart | 2 +- packages/local_auth/CHANGELOG.md | 4 + packages/local_auth/lib/auth_strings.dart | 24 +- packages/local_auth/lib/local_auth.dart | 23 +- packages/local_auth/pubspec.yaml | 14 +- packages/local_auth/test/local_auth_test.dart | 2 +- .../CHANGELOG.md | 4 + .../lib/path_provider_platform_interface.dart | 18 +- .../lib/src/method_channel_path_provider.dart | 18 +- .../pubspec.yaml | 12 +- .../method_channel_path_provider_test.dart | 28 +- .../plugin_platform_interface/CHANGELOG.md | 8 + .../analysis_options.yaml | 4 + .../lib/plugin_platform_interface.dart | 2 +- .../plugin_platform_interface/pubspec.yaml | 10 +- .../test/plugin_platform_interface_test.dart | 2 + .../test/shared_preferences_test.dart | 2 +- .../url_launcher/url_launcher/CHANGELOG.md | 8 + .../url_launcher/analysis_options.yaml | 4 + .../integration_test/url_launcher_test.dart | 3 + .../url_launcher/example/lib/main.dart | 4 +- .../url_launcher/example/pubspec.yaml | 4 +- .../test/url_launcher_example_test.dart | 7 + .../example/test_driver/integration_test.dart | 3 + .../url_launcher/lib/src/link.dart | 21 +- .../url_launcher/lib/url_launcher.dart | 47 ++- .../url_launcher/url_launcher/pubspec.yaml | 26 +- .../url_launcher/test/link_test.dart | 3 +- .../url_launcher/test/url_launcher_test.dart | 8 +- .../url_launcher_linux/CHANGELOG.md | 4 + .../url_launcher_linux/pubspec.yaml | 4 +- .../url_launcher_macos/CHANGELOG.md | 8 + .../url_launcher_macos/pubspec.yaml | 4 +- .../CHANGELOG.md | 8 + .../analysis_options.yaml | 4 + .../lib/link.dart | 14 +- .../lib/method_channel_url_launcher.dart | 21 +- .../lib/url_launcher_platform_interface.dart | 17 +- .../pubspec.yaml | 9 +- .../test/link_test.dart | 3 + .../method_channel_url_launcher_test.dart | 26 ++ .../url_launcher_web/CHANGELOG.md | 2 +- .../url_launcher_web/pubspec.yaml | 9 + .../url_launcher_web/test/pubspec.yaml | 2 +- .../url_launcher_windows/CHANGELOG.md | 8 + .../url_launcher_windows/pubspec.yaml | 4 +- .../video_player/video_player/CHANGELOG.md | 16 + .../video_player/analysis_options.yaml | 4 + .../flutter/plugins/videoplayer/Messages.java | 4 +- .../integration_test/video_player_test.dart | 4 +- .../video_player/example/lib/main.dart | 11 +- .../video_player/example/pubspec.yaml | 3 +- .../example/test_driver/integration_test.dart | 3 + .../example/test_driver/video_player.dart | 14 + .../test_driver/video_player_test.dart | 30 ++ .../video_player/ios/Classes/messages.h | 2 +- .../video_player/ios/Classes/messages.m | 36 ++- .../lib/src/closed_caption_file.dart | 11 +- .../video_player/lib/src/sub_rip.dart | 7 +- .../video_player/lib/video_player.dart | 167 ++++++----- .../video_player/pigeons/messages.dart | 2 + .../video_player/video_player/pubspec.yaml | 15 +- .../video_player/test/sub_rip_file_test.dart | 2 +- .../video_player_initialization_test.dart | 2 - .../video_player/test/video_player_test.dart | 90 +++--- .../CHANGELOG.md | 16 + .../analysis_options.yaml | 4 + .../lib/messages.dart | 273 ++++++++++-------- .../lib/method_channel_video_player.dart | 4 +- .../lib/video_player_platform_interface.dart | 22 +- .../pubspec.yaml | 8 +- .../method_channel_video_player_test.dart | 3 + .../video_player_web/CHANGELOG.md | 8 + .../video_player_web/analysis_options.yaml | 12 + .../lib/video_player_web.dart | 40 +-- .../video_player_web/pubspec.yaml | 10 +- .../test/video_player_web_test.dart | 10 +- script/incremental_build.sh | 13 +- script/nnbd_plugins.sh | 9 + 113 files changed, 1174 insertions(+), 670 deletions(-) create mode 100644 packages/connectivity/connectivity/analysis_options.yaml create mode 100644 packages/connectivity/connectivity_platform_interface/analysis_options.yaml create mode 100644 packages/device_info/device_info/analysis_options.yaml create mode 100644 packages/device_info/device_info_platform_interface/analysis_options.yaml create mode 100644 packages/plugin_platform_interface/analysis_options.yaml create mode 100644 packages/url_launcher/url_launcher/analysis_options.yaml create mode 100644 packages/url_launcher/url_launcher_platform_interface/analysis_options.yaml create mode 100644 packages/video_player/video_player/analysis_options.yaml create mode 100644 packages/video_player/video_player/example/test_driver/video_player.dart create mode 100644 packages/video_player/video_player/example/test_driver/video_player_test.dart create mode 100644 packages/video_player/video_player_platform_interface/analysis_options.yaml create mode 100644 packages/video_player/video_player_web/analysis_options.yaml diff --git a/packages/connectivity/connectivity/CHANGELOG.md b/packages/connectivity/connectivity/CHANGELOG.md index b993bf15dc8b..60765d14c080 100644 --- a/packages/connectivity/connectivity/CHANGELOG.md +++ b/packages/connectivity/connectivity/CHANGELOG.md @@ -1,3 +1,11 @@ +## 3.0.0-nullsafety.1 + +* Bump Dart SDK to support null safety. + +## 3.0.0-nullsafety + +* Migrate to null safety. + ## 2.0.3 * Update Flutter SDK constraint. diff --git a/packages/connectivity/connectivity/analysis_options.yaml b/packages/connectivity/connectivity/analysis_options.yaml new file mode 100644 index 000000000000..3d64bb57fe49 --- /dev/null +++ b/packages/connectivity/connectivity/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/connectivity/connectivity/example/lib/main.dart b/packages/connectivity/connectivity/example/lib/main.dart index e05497136b86..19285ce889fd 100644 --- a/packages/connectivity/connectivity/example/lib/main.dart +++ b/packages/connectivity/connectivity/example/lib/main.dart @@ -40,7 +40,7 @@ class MyApp extends StatelessWidget { } class MyHomePage extends StatefulWidget { - MyHomePage({Key key, this.title}) : super(key: key); + MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @@ -51,7 +51,7 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State { String _connectionStatus = 'Unknown'; final Connectivity _connectivity = Connectivity(); - StreamSubscription _connectivitySubscription; + late StreamSubscription _connectivitySubscription; @override void initState() { @@ -69,7 +69,7 @@ class _MyHomePageState extends State { // Platform messages are asynchronous, so we initialize in an async method. Future initConnectivity() async { - ConnectivityResult result; + ConnectivityResult result = ConnectivityResult.none; // Platform messages may fail, so we use a try/catch PlatformException. try { result = await _connectivity.checkConnectivity(); diff --git a/packages/connectivity/connectivity/example/pubspec.yaml b/packages/connectivity/connectivity/example/pubspec.yaml index bff35483d763..94c8505c8096 100644 --- a/packages/connectivity/connectivity/example/pubspec.yaml +++ b/packages/connectivity/connectivity/example/pubspec.yaml @@ -10,9 +10,10 @@ dependencies: dev_dependencies: flutter_driver: sdk: flutter + test: ^1.10.0-nullsafety.1 integration_test: path: ../../../integration_test - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 flutter: uses-material-design: true diff --git a/packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart b/packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart index d48deae3403d..3177b66ea48a 100644 --- a/packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart +++ b/packages/connectivity/connectivity/example/test_driver/integration_test/connectivity_test.dart @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(cyanglaz): Remove once https://github.com/flutter/plugins/pull/3158 is landed. +// @dart = 2.9 + import 'package:integration_test/integration_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:connectivity/connectivity.dart'; diff --git a/packages/connectivity/connectivity/integration_test/connectivity_test.dart b/packages/connectivity/connectivity/integration_test/connectivity_test.dart index d48deae3403d..3177b66ea48a 100644 --- a/packages/connectivity/connectivity/integration_test/connectivity_test.dart +++ b/packages/connectivity/connectivity/integration_test/connectivity_test.dart @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(cyanglaz): Remove once https://github.com/flutter/plugins/pull/3158 is landed. +// @dart = 2.9 + import 'package:integration_test/integration_test.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:connectivity/connectivity.dart'; diff --git a/packages/connectivity/connectivity/lib/connectivity.dart b/packages/connectivity/connectivity/lib/connectivity.dart index c9655365f772..0f30a9347b74 100644 --- a/packages/connectivity/connectivity/lib/connectivity.dart +++ b/packages/connectivity/connectivity/lib/connectivity.dart @@ -22,12 +22,12 @@ class Connectivity { if (_singleton == null) { _singleton = Connectivity._(); } - return _singleton; + return _singleton!; } Connectivity._(); - static Connectivity _singleton; + static Connectivity? _singleton; static ConnectivityPlatform get _platform => ConnectivityPlatform.instance; diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml index 1a53f42fa3cb..2f6d78134796 100644 --- a/packages/connectivity/connectivity/pubspec.yaml +++ b/packages/connectivity/connectivity/pubspec.yaml @@ -2,7 +2,7 @@ name: connectivity description: Flutter plugin for discovering the state of the network (WiFi & mobile/cellular) connectivity on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity -version: 2.0.3 +version: 3.0.0-nullsafety.1 flutter: plugin: @@ -21,21 +21,24 @@ dependencies: flutter: sdk: flutter meta: ^1.0.5 - connectivity_platform_interface: ^1.0.2 - connectivity_macos: ^0.1.0 - connectivity_for_web: ^0.3.0 + connectivity_platform_interface: ^2.0.0-nullsafety.1 + #TODO(cyanglaz): re-endorse the below plugins when they have migrated to nnbd. + # https://github.com/flutter/flutter/issues/68669 + connectivity_macos: ^0.2.0-nullsafety + # connectivity_for_web: ^0.3.0 dev_dependencies: flutter_test: sdk: flutter flutter_driver: sdk: flutter + test: ^1.10.0-nullsafety.1 integration_test: path: ../../integration_test mockito: ^4.1.1 - plugin_platform_interface: ^1.0.0 - pedantic: ^1.8.0 + plugin_platform_interface: ^1.1.0-nullsafety.1 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13+hotfix.5" diff --git a/packages/connectivity/connectivity/test/connectivity_test.dart b/packages/connectivity/connectivity/test/connectivity_test.dart index b7749ca7a6be..e83196546cd2 100644 --- a/packages/connectivity/connectivity/test/connectivity_test.dart +++ b/packages/connectivity/connectivity/test/connectivity_test.dart @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 - +// TODO(cyanglaz): Remove once Mockito is migrated to null safety. +// @dart = 2.9 import 'package:connectivity/connectivity.dart'; import 'package:connectivity_platform_interface/connectivity_platform_interface.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/connectivity/connectivity_macos/CHANGELOG.md b/packages/connectivity/connectivity_macos/CHANGELOG.md index f7c893e6fdb4..9261b0e789fe 100644 --- a/packages/connectivity/connectivity_macos/CHANGELOG.md +++ b/packages/connectivity/connectivity_macos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.0-nullsafety + +* Update Dart SDK constraint. + ## 0.1.0+8 * Update Flutter SDK constraint. diff --git a/packages/connectivity/connectivity_macos/pubspec.yaml b/packages/connectivity/connectivity_macos/pubspec.yaml index acd608fa2505..dd193f715c2a 100644 --- a/packages/connectivity/connectivity_macos/pubspec.yaml +++ b/packages/connectivity/connectivity_macos/pubspec.yaml @@ -3,7 +3,7 @@ description: macOS implementation of the connectivity plugin. # 0.1.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.1.0+8 +version: 0.2.0-nullsafety homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity_macos flutter: @@ -13,7 +13,7 @@ flutter: pluginClass: ConnectivityPlugin environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.10.0" dependencies: diff --git a/packages/connectivity/connectivity_platform_interface/CHANGELOG.md b/packages/connectivity/connectivity_platform_interface/CHANGELOG.md index 2a16860c3cc4..8e38341be42f 100644 --- a/packages/connectivity/connectivity_platform_interface/CHANGELOG.md +++ b/packages/connectivity/connectivity_platform_interface/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2.0.0-nullsafety.1 + +* Bump Dart SDK to support null safety. + +## 2.0.0-nullsafety + +* Migrate to null safety. + ## 1.0.7 * Update Flutter SDK constraint. diff --git a/packages/connectivity/connectivity_platform_interface/analysis_options.yaml b/packages/connectivity/connectivity_platform_interface/analysis_options.yaml new file mode 100644 index 000000000000..3d64bb57fe49 --- /dev/null +++ b/packages/connectivity/connectivity_platform_interface/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/connectivity/connectivity_platform_interface/lib/connectivity_platform_interface.dart b/packages/connectivity/connectivity_platform_interface/lib/connectivity_platform_interface.dart index cfd9cf648a9c..8e9f0fd6af06 100644 --- a/packages/connectivity/connectivity_platform_interface/lib/connectivity_platform_interface.dart +++ b/packages/connectivity/connectivity_platform_interface/lib/connectivity_platform_interface.dart @@ -50,17 +50,17 @@ abstract class ConnectivityPlatform extends PlatformInterface { } /// Obtains the wifi name (SSID) of the connected network - Future getWifiName() { + Future getWifiName() { throw UnimplementedError('getWifiName() has not been implemented.'); } /// Obtains the wifi BSSID of the connected network. - Future getWifiBSSID() { + Future getWifiBSSID() { throw UnimplementedError('getWifiBSSID() has not been implemented.'); } /// Obtains the IP address of the connected wifi network - Future getWifiIP() { + Future getWifiIP() { throw UnimplementedError('getWifiIP() has not been implemented.'); } diff --git a/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart b/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart index 87deaa21ea3b..b411b5bc069b 100644 --- a/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart +++ b/packages/connectivity/connectivity_platform_interface/lib/src/method_channel_connectivity.dart @@ -22,29 +22,29 @@ class MethodChannelConnectivity extends ConnectivityPlatform { EventChannel eventChannel = EventChannel('plugins.flutter.io/connectivity_status'); - Stream _onConnectivityChanged; + Stream? _onConnectivityChanged; /// Fires whenever the connectivity state changes. Stream get onConnectivityChanged { if (_onConnectivityChanged == null) { - _onConnectivityChanged = eventChannel - .receiveBroadcastStream() - .map((dynamic result) => result.toString()) - .map(parseConnectivityResult); + _onConnectivityChanged = + eventChannel.receiveBroadcastStream().map((dynamic result) { + return result != null ? result.toString() : ''; + }).map(parseConnectivityResult); } - return _onConnectivityChanged; + return _onConnectivityChanged!; } @override - Future checkConnectivity() { - return methodChannel - .invokeMethod('check') - .then(parseConnectivityResult); + Future checkConnectivity() async { + final String checkResult = + await methodChannel.invokeMethod('check') ?? ''; + return parseConnectivityResult(checkResult); } @override - Future getWifiName() async { - String wifiName = await methodChannel.invokeMethod('wifiName'); + Future getWifiName() async { + String? wifiName = await methodChannel.invokeMethod('wifiName'); // as Android might return , uniforming result // our iOS implementation will return null if (wifiName == '') { @@ -54,29 +54,31 @@ class MethodChannelConnectivity extends ConnectivityPlatform { } @override - Future getWifiBSSID() { + Future getWifiBSSID() { return methodChannel.invokeMethod('wifiBSSID'); } @override - Future getWifiIP() { + Future getWifiIP() { return methodChannel.invokeMethod('wifiIPAddress'); } @override Future requestLocationServiceAuthorization({ bool requestAlwaysLocationUsage = false, - }) { - return methodChannel.invokeMethod( - 'requestLocationServiceAuthorization', [ - requestAlwaysLocationUsage - ]).then(parseLocationAuthorizationStatus); + }) async { + final String requestLocationServiceResult = await methodChannel + .invokeMethod('requestLocationServiceAuthorization', + [requestAlwaysLocationUsage]) ?? + ''; + return parseLocationAuthorizationStatus(requestLocationServiceResult); } @override - Future getLocationServiceAuthorization() { - return methodChannel - .invokeMethod('getLocationServiceAuthorization') - .then(parseLocationAuthorizationStatus); + Future getLocationServiceAuthorization() async { + final String getLocationServiceResult = await methodChannel + .invokeMethod('getLocationServiceAuthorization') ?? + ''; + return parseLocationAuthorizationStatus(getLocationServiceResult); } } diff --git a/packages/connectivity/connectivity_platform_interface/pubspec.yaml b/packages/connectivity/connectivity_platform_interface/pubspec.yaml index 7aa415c9d36f..114915a10b60 100644 --- a/packages/connectivity/connectivity_platform_interface/pubspec.yaml +++ b/packages/connectivity/connectivity_platform_interface/pubspec.yaml @@ -3,19 +3,19 @@ description: A common platform interface for the connectivity plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.7 +version: 2.0.0-nullsafety.1 dependencies: flutter: sdk: flutter - meta: ^1.0.5 - plugin_platform_interface: ^1.0.1 + meta: ^1.3.0-nullsafety.3 + plugin_platform_interface: ^1.1.0-nullsafety.1 dev_dependencies: flutter_test: sdk: flutter - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13+hotfix.5" diff --git a/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart b/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart index 3d9c405c30ab..0c30530fc9ab 100644 --- a/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart +++ b/packages/connectivity/connectivity_platform_interface/test/method_channel_connectivity_test.dart @@ -12,7 +12,7 @@ void main() { group('$MethodChannelConnectivity', () { final List log = []; - MethodChannelConnectivity methodChannelConnectivity; + late MethodChannelConnectivity methodChannelConnectivity; setUp(() async { methodChannelConnectivity = MethodChannelConnectivity(); @@ -42,7 +42,7 @@ void main() { .setMockMethodCallHandler((MethodCall methodCall) async { switch (methodCall.method) { case 'listen': - await ServicesBinding.instance.defaultBinaryMessenger + await ServicesBinding.instance!.defaultBinaryMessenger .handlePlatformMessage( methodChannelConnectivity.eventChannel.name, methodChannelConnectivity.eventChannel.codec @@ -64,7 +64,7 @@ void main() { }); test('getWifiName', () async { - final String result = await methodChannelConnectivity.getWifiName(); + final String? result = await methodChannelConnectivity.getWifiName(); expect(result, '1337wifi'); expect( log, @@ -78,7 +78,7 @@ void main() { }); test('getWifiBSSID', () async { - final String result = await methodChannelConnectivity.getWifiBSSID(); + final String? result = await methodChannelConnectivity.getWifiBSSID(); expect(result, 'c0:ff:33:c0:d3:55'); expect( log, @@ -92,7 +92,7 @@ void main() { }); test('getWifiIP', () async { - final String result = await methodChannelConnectivity.getWifiIP(); + final String? result = await methodChannelConnectivity.getWifiIP(); expect(result, '127.0.0.1'); expect( log, diff --git a/packages/device_info/device_info/CHANGELOG.md b/packages/device_info/device_info/CHANGELOG.md index 29382c1ccb61..cee321742843 100644 --- a/packages/device_info/device_info/CHANGELOG.md +++ b/packages/device_info/device_info/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2.0.0-nullsafety.1 + +* Bump Dart SDK to support null safety. + +## 2.0.0-nullsafety + +* Migrate to null safety. + ## 1.0.1 * Update Flutter SDK constraint. diff --git a/packages/device_info/device_info/analysis_options.yaml b/packages/device_info/device_info/analysis_options.yaml new file mode 100644 index 000000000000..3d64bb57fe49 --- /dev/null +++ b/packages/device_info/device_info/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/device_info/device_info/example/integration_test/device_info_test.dart b/packages/device_info/device_info/example/integration_test/device_info_test.dart index 2fd1d9a9a491..61c4396b0d8e 100644 --- a/packages/device_info/device_info/example/integration_test/device_info_test.dart +++ b/packages/device_info/device_info/example/integration_test/device_info_test.dart @@ -2,6 +2,9 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +// TODO(cyanglaz): Remove once https://github.com/flutter/plugins/pull/3158 is landed. +// @dart = 2.9 + import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; import 'package:device_info/device_info.dart'; diff --git a/packages/device_info/device_info/example/lib/main.dart b/packages/device_info/device_info/example/lib/main.dart index 63912b37c3ce..805de1417f15 100644 --- a/packages/device_info/device_info/example/lib/main.dart +++ b/packages/device_info/device_info/example/lib/main.dart @@ -36,7 +36,7 @@ class _MyAppState extends State { } Future initPlatformState() async { - Map deviceData; + Map deviceData = {}; try { if (Platform.isAndroid) { diff --git a/packages/device_info/device_info/example/pubspec.yaml b/packages/device_info/device_info/example/pubspec.yaml index 58d54cba6d70..09567fd967b2 100644 --- a/packages/device_info/device_info/example/pubspec.yaml +++ b/packages/device_info/device_info/example/pubspec.yaml @@ -12,11 +12,11 @@ dev_dependencies: sdk: flutter integration_test: path: ../../../integration_test - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 flutter: uses-material-design: true environment: - sdk: ">=2.1.0<3.0.0" + sdk: ">=2.10.0-56.0.dev <3.0.0" flutter: ">=1.12.13+hotfix.5 <2.0.0" diff --git a/packages/device_info/device_info/example/test_driver/integration_test.dart b/packages/device_info/device_info/example/test_driver/integration_test.dart index 7a2c21338786..13327bb884c9 100644 --- a/packages/device_info/device_info/example/test_driver/integration_test.dart +++ b/packages/device_info/device_info/example/test_driver/integration_test.dart @@ -2,6 +2,9 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +// TODO(cyanglaz): Remove once https://github.com/flutter/flutter/issues/59879 is fixed. +// @dart = 2.9 + import 'dart:async'; import 'dart:convert'; import 'dart:io'; diff --git a/packages/device_info/device_info/lib/device_info.dart b/packages/device_info/device_info/lib/device_info.dart index f63730c4323f..bccc3d2fbfa6 100644 --- a/packages/device_info/device_info/lib/device_info.dart +++ b/packages/device_info/device_info/lib/device_info.dart @@ -15,7 +15,7 @@ class DeviceInfoPlugin { DeviceInfoPlugin(); /// This information does not change from call to call. Cache it. - AndroidDeviceInfo _cachedAndroidDeviceInfo; + AndroidDeviceInfo? _cachedAndroidDeviceInfo; /// Information derived from `android.os.Build`. /// @@ -25,7 +25,7 @@ class DeviceInfoPlugin { await DeviceInfoPlatform.instance.androidInfo(); /// This information does not change from call to call. Cache it. - IosDeviceInfo _cachedIosDeviceInfo; + IosDeviceInfo? _cachedIosDeviceInfo; /// Information derived from `UIDevice`. /// diff --git a/packages/device_info/device_info/pubspec.yaml b/packages/device_info/device_info/pubspec.yaml index 0f31234414f5..57c1741270c2 100644 --- a/packages/device_info/device_info/pubspec.yaml +++ b/packages/device_info/device_info/pubspec.yaml @@ -2,7 +2,10 @@ name: device_info description: Flutter plugin providing detailed information about the device (make, model, etc.), and Android or iOS version the app is running on. homepage: https://github.com/flutter/plugins/tree/master/packages/device_info -version: 1.0.1 +# 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump +# the version to 2.0.0. +# See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 +version: 2.0.0-nullsafety.1 flutter: plugin: @@ -16,14 +19,13 @@ flutter: dependencies: flutter: sdk: flutter - device_info_platform_interface: ^1.0.0 - + device_info_platform_interface: ^2.0.0-nullsafety.1 dev_dependencies: - test: ^1.3.0 + test: ^1.10.0-nullsafety.1 flutter_test: sdk: flutter - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.1.0<3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13+hotfix.5" diff --git a/packages/device_info/device_info_platform_interface/CHANGELOG.md b/packages/device_info/device_info_platform_interface/CHANGELOG.md index e513c662bef7..d4bc81e0f0aa 100644 --- a/packages/device_info/device_info_platform_interface/CHANGELOG.md +++ b/packages/device_info/device_info_platform_interface/CHANGELOG.md @@ -1,3 +1,16 @@ +## 2.0.0-nullsafety.2 + +* Make `baseOS`, `previewSdkInt`, and `securityPatch` nullable types. +* Remove default values for non-nullable types. + +## 2.0.0-nullsafety.1 + +* Bump Dart SDK to support null safety. + +## 2.0.0-nullsafety + +* Migrate to null safety. + ## 1.0.2 - Update Flutter SDK constraint. diff --git a/packages/device_info/device_info_platform_interface/analysis_options.yaml b/packages/device_info/device_info_platform_interface/analysis_options.yaml new file mode 100644 index 000000000000..3d64bb57fe49 --- /dev/null +++ b/packages/device_info/device_info_platform_interface/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/device_info/device_info_platform_interface/lib/model/android_device_info.dart b/packages/device_info/device_info_platform_interface/lib/model/android_device_info.dart index 5b326cc5350a..4fb940c3effa 100644 --- a/packages/device_info/device_info_platform_interface/lib/model/android_device_info.dart +++ b/packages/device_info/device_info_platform_interface/lib/model/android_device_info.dart @@ -8,28 +8,28 @@ class AndroidDeviceInfo { /// Android device Info class. AndroidDeviceInfo({ - this.version, - this.board, - this.bootloader, - this.brand, - this.device, - this.display, - this.fingerprint, - this.hardware, - this.host, - this.id, - this.manufacturer, - this.model, - this.product, - List supported32BitAbis, - List supported64BitAbis, - List supportedAbis, - this.tags, - this.type, - this.isPhysicalDevice, - this.androidId, - List systemFeatures, - }) : supported32BitAbis = List.unmodifiable(supported32BitAbis), + required this.version, + required this.board, + required this.bootloader, + required this.brand, + required this.device, + required this.display, + required this.fingerprint, + required this.hardware, + required this.host, + required this.id, + required this.manufacturer, + required this.model, + required this.product, + required List supported32BitAbis, + required List supported64BitAbis, + required List supportedAbis, + required this.tags, + required this.type, + required this.isPhysicalDevice, + required this.androidId, + required List systemFeatures, + }) : supported32BitAbis = List.unmodifiable(supported32BitAbis), supported64BitAbis = List.unmodifiable(supported64BitAbis), supportedAbis = List.unmodifiable(supportedAbis), systemFeatures = List.unmodifiable(systemFeatures); @@ -113,28 +113,28 @@ class AndroidDeviceInfo { /// Deserializes from the message received from [_kChannel]. static AndroidDeviceInfo fromMap(Map map) { return AndroidDeviceInfo( - version: AndroidBuildVersion._fromMap( - map['version']?.cast() ?? {}), - board: map['board'], - bootloader: map['bootloader'], - brand: map['brand'], - device: map['device'], - display: map['display'], - fingerprint: map['fingerprint'], - hardware: map['hardware'], - host: map['host'], - id: map['id'], - manufacturer: map['manufacturer'], - model: map['model'], - product: map['product'], - supported32BitAbis: _fromList(map['supported32BitAbis'] ?? []), - supported64BitAbis: _fromList(map['supported64BitAbis'] ?? []), - supportedAbis: _fromList(map['supportedAbis'] ?? []), - tags: map['tags'], - type: map['type'], - isPhysicalDevice: map['isPhysicalDevice'], - androidId: map['androidId'], - systemFeatures: _fromList(map['systemFeatures'] ?? []), + version: + AndroidBuildVersion._fromMap(map['version']!.cast()), + board: map['board']!, + bootloader: map['bootloader']!, + brand: map['brand']!, + device: map['device']!, + display: map['display']!, + fingerprint: map['fingerprint']!, + hardware: map['hardware']!, + host: map['host']!, + id: map['id']!, + manufacturer: map['manufacturer']!, + model: map['model']!, + product: map['product']!, + supported32BitAbis: _fromList(map['supported32BitAbis']!), + supported64BitAbis: _fromList(map['supported64BitAbis']!), + supportedAbis: _fromList(map['supportedAbis']!), + tags: map['tags']!, + type: map['type']!, + isPhysicalDevice: map['isPhysicalDevice']!, + androidId: map['androidId']!, + systemFeatures: _fromList(map['systemFeatures']!), ); } @@ -152,16 +152,25 @@ class AndroidDeviceInfo { class AndroidBuildVersion { AndroidBuildVersion._({ this.baseOS, - this.codename, - this.incremental, this.previewSdkInt, - this.release, - this.sdkInt, this.securityPatch, + required this.codename, + required this.incremental, + required this.release, + required this.sdkInt, }); /// The base OS build the product is based on. - final String baseOS; + /// This is only available on Android 6.0 or above. + String? baseOS; + + /// The developer preview revision of a prerelease SDK. + /// This is only available on Android 6.0 or above. + int? previewSdkInt; + + /// The user-visible security patch level. + /// This is only available on Android 6.0 or above. + final String? securityPatch; /// The current development codename, or the string "REL" if this is a release build. final String codename; @@ -169,9 +178,6 @@ class AndroidBuildVersion { /// The internal value used by the underlying source control to represent this build. final String incremental; - /// The developer preview revision of a prerelease SDK. - final int previewSdkInt; - /// The user-visible version string. final String release; @@ -180,19 +186,16 @@ class AndroidBuildVersion { /// Possible values are defined in: https://developer.android.com/reference/android/os/Build.VERSION_CODES.html final int sdkInt; - /// The user-visible security patch level. - final String securityPatch; - /// Deserializes from the map message received from [_kChannel]. static AndroidBuildVersion _fromMap(Map map) { return AndroidBuildVersion._( baseOS: map['baseOS'], - codename: map['codename'], - incremental: map['incremental'], previewSdkInt: map['previewSdkInt'], - release: map['release'], - sdkInt: map['sdkInt'], securityPatch: map['securityPatch'], + codename: map['codename']!, + incremental: map['incremental']!, + release: map['release']!, + sdkInt: map['sdkInt']!, ); } } diff --git a/packages/device_info/device_info_platform_interface/lib/model/ios_device_info.dart b/packages/device_info/device_info_platform_interface/lib/model/ios_device_info.dart index d41202492101..eb6e5874073b 100644 --- a/packages/device_info/device_info_platform_interface/lib/model/ios_device_info.dart +++ b/packages/device_info/device_info_platform_interface/lib/model/ios_device_info.dart @@ -8,14 +8,14 @@ class IosDeviceInfo { /// IOS device info class. IosDeviceInfo({ - this.name, - this.systemName, - this.systemVersion, - this.model, - this.localizedModel, - this.identifierForVendor, - this.isPhysicalDevice, - this.utsname, + required this.name, + required this.systemName, + required this.systemVersion, + required this.model, + required this.localizedModel, + required this.identifierForVendor, + required this.isPhysicalDevice, + required this.utsname, }); /// Device name. @@ -45,15 +45,14 @@ class IosDeviceInfo { /// Deserializes from the map message received from [_kChannel]. static IosDeviceInfo fromMap(Map map) { return IosDeviceInfo( - name: map['name'], - systemName: map['systemName'], - systemVersion: map['systemVersion'], - model: map['model'], - localizedModel: map['localizedModel'], - identifierForVendor: map['identifierForVendor'], + name: map['name']!, + systemName: map['systemName']!, + systemVersion: map['systemVersion']!, + model: map['model']!, + localizedModel: map['localizedModel']!, + identifierForVendor: map['identifierForVendor']!, isPhysicalDevice: map['isPhysicalDevice'] == 'true', - utsname: - IosUtsname._fromMap(map['utsname']?.cast() ?? {}), + utsname: IosUtsname._fromMap(map['utsname']!.cast()), ); } } @@ -62,11 +61,11 @@ class IosDeviceInfo { /// See http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysutsname.h.html for details. class IosUtsname { IosUtsname._({ - this.sysname, - this.nodename, - this.release, - this.version, - this.machine, + required this.sysname, + required this.nodename, + required this.release, + required this.version, + required this.machine, }); /// Operating system name. @@ -87,11 +86,11 @@ class IosUtsname { /// Deserializes from the map message received from [_kChannel]. static IosUtsname _fromMap(Map map) { return IosUtsname._( - sysname: map['sysname'], - nodename: map['nodename'], - release: map['release'], - version: map['version'], - machine: map['machine'], + sysname: map['sysname']!, + nodename: map['nodename']!, + release: map['release']!, + version: map['version']!, + machine: map['machine']!, ); } } diff --git a/packages/device_info/device_info_platform_interface/pubspec.yaml b/packages/device_info/device_info_platform_interface/pubspec.yaml index fedaba6c6522..ca72cc753b63 100644 --- a/packages/device_info/device_info_platform_interface/pubspec.yaml +++ b/packages/device_info/device_info_platform_interface/pubspec.yaml @@ -3,20 +3,20 @@ description: A common platform interface for the device_info plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/device_info # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.2 +version: 2.0.0-nullsafety.2 dependencies: flutter: sdk: flutter - meta: ^1.1.8 - plugin_platform_interface: ^1.0.2 + meta: ^1.3.0-nullsafety.3 + plugin_platform_interface: ^1.1.0-nullsafety.1 dev_dependencies: flutter_test: sdk: flutter - mockito: ^4.1.1 - pedantic: ^1.8.0 + test: ^1.10.0-nullsafety.1 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.7.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.9.1+hotfix.4" diff --git a/packages/device_info/device_info_platform_interface/test/method_channel_device_info_test.dart b/packages/device_info/device_info_platform_interface/test/method_channel_device_info_test.dart index 1da52e2cf39f..15963854ab12 100644 --- a/packages/device_info/device_info_platform_interface/test/method_channel_device_info_test.dart +++ b/packages/device_info/device_info_platform_interface/test/method_channel_device_info_test.dart @@ -2,11 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(cyanglaz): Remove once https://github.com/flutter/flutter/issues/59879 is fixed. +// @dart = 2.9 + import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; - import 'package:device_info_platform_interface/device_info_platform_interface.dart'; - import 'package:device_info_platform_interface/method_channel/method_channel_device_info.dart'; void main() { @@ -23,11 +24,68 @@ void main() { switch (methodCall.method) { case 'getAndroidDeviceInfo': return ({ - "brand": "Google", + "version": { + "securityPatch": "2018-09-05", + "sdkInt": 28, + "release": "9", + "previewSdkInt": 0, + "incremental": "5124027", + "codename": "REL", + "baseOS": "", + }, + "board": "goldfish_x86_64", + "bootloader": "unknown", + "brand": "google", + "device": "generic_x86_64", + "display": "PSR1.180720.075", + "fingerprint": + "google/sdk_gphone_x86_64/generic_x86_64:9/PSR1.180720.075/5124027:user/release-keys", + "hardware": "ranchu", + "host": "abfarm730", + "id": "PSR1.180720.075", + "manufacturer": "Google", + "model": "Android SDK built for x86_64", + "product": "sdk_gphone_x86_64", + "supported32BitAbis": [ + "x86", + ], + "supported64BitAbis": [ + "x86_64", + ], + "supportedAbis": [ + "x86_64", + "x86", + ], + "tags": "release-keys", + "type": "user", + "isPhysicalDevice": false, + "androidId": "f47571f3b4648f45", + "systemFeatures": [ + "android.hardware.sensor.proximity", + "android.software.adoptable_storage", + "android.hardware.sensor.accelerometer", + "android.hardware.faketouch", + "android.software.backup", + "android.hardware.touchscreen", + ], }); case 'getIosDeviceInfo': return ({ - "name": "iPhone 10", + "name": "iPhone 13", + "systemName": "iOS", + "systemVersion": "13.0", + "model": "iPhone", + "localizedModel": "iPhone", + "identifierForVendor": "88F59280-55AD-402C-B922-3203B4794C06", + "isPhysicalDevice": false, + "utsname": { + "sysname": "Darwin", + "nodename": "host", + "release": "19.6.0", + "version": + "Darwin Kernel Version 19.6.0: Thu Jun 18 20:49:00 PDT 2020; root:xnu-6153.141.1~1/RELEASE_X86_64", + "machine": "x86_64", + } }); default: return null; @@ -38,12 +96,66 @@ void main() { test("androidInfo", () async { final AndroidDeviceInfo result = await methodChannelDeviceInfo.androidInfo(); - expect(result.brand, "Google"); + + expect(result.version.securityPatch, "2018-09-05"); + expect(result.version.sdkInt, 28); + expect(result.version.release, "9"); + expect(result.version.previewSdkInt, 0); + expect(result.version.incremental, "5124027"); + expect(result.version.codename, "REL"); + expect(result.board, "goldfish_x86_64"); + expect(result.bootloader, "unknown"); + expect(result.brand, "google"); + expect(result.device, "generic_x86_64"); + expect(result.display, "PSR1.180720.075"); + expect(result.fingerprint, + "google/sdk_gphone_x86_64/generic_x86_64:9/PSR1.180720.075/5124027:user/release-keys"); + expect(result.hardware, "ranchu"); + expect(result.host, "abfarm730"); + expect(result.id, "PSR1.180720.075"); + expect(result.manufacturer, "Google"); + expect(result.model, "Android SDK built for x86_64"); + expect(result.product, "sdk_gphone_x86_64"); + expect(result.supported32BitAbis, [ + "x86", + ]); + expect(result.supported64BitAbis, [ + "x86_64", + ]); + expect(result.supportedAbis, [ + "x86_64", + "x86", + ]); + expect(result.tags, "release-keys"); + expect(result.type, "user"); + expect(result.isPhysicalDevice, false); + expect(result.androidId, "f47571f3b4648f45"); + expect(result.systemFeatures, [ + "android.hardware.sensor.proximity", + "android.software.adoptable_storage", + "android.hardware.sensor.accelerometer", + "android.hardware.faketouch", + "android.software.backup", + "android.hardware.touchscreen", + ]); }); test("iosInfo", () async { final IosDeviceInfo result = await methodChannelDeviceInfo.iosInfo(); - expect(result.name, "iPhone 10"); + expect(result.name, "iPhone 13"); + expect(result.systemName, "iOS"); + expect(result.systemVersion, "13.0"); + expect(result.model, "iPhone"); + expect(result.localizedModel, "iPhone"); + expect( + result.identifierForVendor, "88F59280-55AD-402C-B922-3203B4794C06"); + expect(result.isPhysicalDevice, false); + expect(result.utsname.sysname, "Darwin"); + expect(result.utsname.nodename, "host"); + expect(result.utsname.release, "19.6.0"); + expect(result.utsname.version, + "Darwin Kernel Version 19.6.0: Thu Jun 18 20:49:00 PDT 2020; root:xnu-6153.141.1~1/RELEASE_X86_64"); + expect(result.utsname.machine, "x86_64"); }); }); } diff --git a/packages/flutter_plugin_android_lifecycle/CHANGELOG.md b/packages/flutter_plugin_android_lifecycle/CHANGELOG.md index 43797321f614..6403638b02d4 100644 --- a/packages/flutter_plugin_android_lifecycle/CHANGELOG.md +++ b/packages/flutter_plugin_android_lifecycle/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2.0.0-nullsafety.1 + +* Fix example app SDK. + +## 2.0.0-nullsafety + +* Bump Dart SDK. + ## 1.0.12 * Update Flutter SDK constraint. diff --git a/packages/flutter_plugin_android_lifecycle/example/pubspec.yaml b/packages/flutter_plugin_android_lifecycle/example/pubspec.yaml index a040dbe95d92..2532ab047dcc 100644 --- a/packages/flutter_plugin_android_lifecycle/example/pubspec.yaml +++ b/packages/flutter_plugin_android_lifecycle/example/pubspec.yaml @@ -3,7 +3,7 @@ description: Demonstrates how to use the flutter_plugin_android_lifecycle plugin publish_to: 'none' environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" dependencies: flutter: diff --git a/packages/flutter_plugin_android_lifecycle/pubspec.yaml b/packages/flutter_plugin_android_lifecycle/pubspec.yaml index 57441d08de7a..66b3eba5cb94 100644 --- a/packages/flutter_plugin_android_lifecycle/pubspec.yaml +++ b/packages/flutter_plugin_android_lifecycle/pubspec.yaml @@ -1,10 +1,10 @@ name: flutter_plugin_android_lifecycle description: Flutter plugin for accessing an Android Lifecycle within other plugins. -version: 1.0.12 +version: 2.0.0-nullsafety.1 homepage: https://github.com/flutter/plugins/tree/master/packages/flutter_plugin_android_lifecycle environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13" dependencies: diff --git a/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart b/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart index bc709197d77d..7305800296f9 100755 --- a/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart +++ b/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 +// @dart = 2.9 import 'dart:async'; diff --git a/packages/local_auth/CHANGELOG.md b/packages/local_auth/CHANGELOG.md index 0ea59f37bf45..d83798ad4889 100644 --- a/packages/local_auth/CHANGELOG.md +++ b/packages/local_auth/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.0-nullsafety + +* Migrate to null safety. + ## 0.6.3+5 * Update Flutter SDK constraint. diff --git a/packages/local_auth/lib/auth_strings.dart b/packages/local_auth/lib/auth_strings.dart index a8f34f88723c..3afc23827d98 100644 --- a/packages/local_auth/lib/auth_strings.dart +++ b/packages/local_auth/lib/auth_strings.dart @@ -25,14 +25,14 @@ class AndroidAuthMessages { this.goToSettingsDescription, }); - final String fingerprintHint; - final String fingerprintNotRecognized; - final String fingerprintSuccess; - final String cancelButton; - final String signInTitle; - final String fingerprintRequiredTitle; - final String goToSettingsButton; - final String goToSettingsDescription; + final String? fingerprintHint; + final String? fingerprintNotRecognized; + final String? fingerprintSuccess; + final String? cancelButton; + final String? signInTitle; + final String? fingerprintRequiredTitle; + final String? goToSettingsButton; + final String? goToSettingsDescription; Map get args { return { @@ -62,10 +62,10 @@ class IOSAuthMessages { this.cancelButton, }); - final String lockOut; - final String goToSettingsButton; - final String goToSettingsDescription; - final String cancelButton; + final String? lockOut; + final String? goToSettingsButton; + final String? goToSettingsDescription; + final String? cancelButton; Map get args { return { diff --git a/packages/local_auth/lib/local_auth.dart b/packages/local_auth/lib/local_auth.dart index b2b03b920d64..f1dbdd4840a8 100644 --- a/packages/local_auth/lib/local_auth.dart +++ b/packages/local_auth/lib/local_auth.dart @@ -67,7 +67,7 @@ class LocalAuthentication { /// [PlatformException] with error code [otherOperatingSystem] on the iOS /// simulator. Future authenticateWithBiometrics({ - @required String localizedReason, + required String localizedReason, bool useErrorDialogs = true, bool stickyAuth = false, AndroidAuthMessages androidAuthStrings = const AndroidAuthMessages(), @@ -92,8 +92,9 @@ class LocalAuthentication { 'operating systems.', details: 'Your operating system is ${_platform.operatingSystem}'); } - return await _channel.invokeMethod( - 'authenticateWithBiometrics', args); + final bool? result = + await _channel.invokeMethod('authenticateWithBiometrics', args); + return result!; } /// Returns true if auth was cancelled successfully. @@ -101,18 +102,20 @@ class LocalAuthentication { /// Returns false if there was some error or no auth in progress. /// /// Returns [Future] bool true or false: - Future stopAuthentication() { + Future stopAuthentication() async { if (_platform.isAndroid) { - return _channel.invokeMethod('stopAuthentication'); + final bool? result = + await _channel.invokeMethod('stopAuthentication'); + return result!; } - return Future.sync(() => true); + return true; } /// Returns true if device is capable of checking biometrics /// /// Returns a [Future] bool true or false: Future get canCheckBiometrics async => - (await _channel.invokeListMethod('getAvailableBiometrics')) + (await _channel.invokeListMethod('getAvailableBiometrics'))! .isNotEmpty; /// Returns a list of enrolled biometrics @@ -122,10 +125,10 @@ class LocalAuthentication { /// - BiometricType.fingerprint /// - BiometricType.iris (not yet implemented) Future> getAvailableBiometrics() async { - final List result = - (await _channel.invokeListMethod('getAvailableBiometrics')); + final List? result = + await _channel.invokeListMethod('getAvailableBiometrics'); final List biometrics = []; - result.forEach((String value) { + result!.forEach((String value) { switch (value) { case 'face': biometrics.add(BiometricType.face); diff --git a/packages/local_auth/pubspec.yaml b/packages/local_auth/pubspec.yaml index 834980b7131d..f61f8b3ca4a7 100644 --- a/packages/local_auth/pubspec.yaml +++ b/packages/local_auth/pubspec.yaml @@ -2,7 +2,7 @@ name: local_auth description: Flutter plugin for Android and iOS device authentication sensors such as Fingerprint Reader and Touch ID. homepage: https://github.com/flutter/plugins/tree/master/packages/local_auth -version: 0.6.3+5 +version: 1.0.0-nullsafety flutter: plugin: @@ -16,10 +16,10 @@ flutter: dependencies: flutter: sdk: flutter - meta: ^1.0.5 - intl: ">=0.15.1 <0.17.0" - platform: ">=2.0.0 <4.0.0" - flutter_plugin_android_lifecycle: ^1.0.2 + meta: ^1.3.0-nullsafety.3 + intl: ^0.17.0-nullsafety.2 + platform: ^3.0.0-nullsafety.4 + flutter_plugin_android_lifecycle: ^2.0.0-nullsafety dev_dependencies: integration_test: @@ -28,8 +28,8 @@ dev_dependencies: sdk: flutter flutter_test: sdk: flutter - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13+hotfix.5" diff --git a/packages/local_auth/test/local_auth_test.dart b/packages/local_auth/test/local_auth_test.dart index 205c5f785708..52b8dbf21f72 100644 --- a/packages/local_auth/test/local_auth_test.dart +++ b/packages/local_auth/test/local_auth_test.dart @@ -19,7 +19,7 @@ void main() { ); final List log = []; - LocalAuthentication localAuthentication; + late LocalAuthentication localAuthentication; setUp(() { channel.setMockMethodCallHandler((MethodCall methodCall) { diff --git a/packages/path_provider/path_provider_platform_interface/CHANGELOG.md b/packages/path_provider/path_provider_platform_interface/CHANGELOG.md index 47e4fee3f13b..97121268c790 100644 --- a/packages/path_provider/path_provider_platform_interface/CHANGELOG.md +++ b/packages/path_provider/path_provider_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety + +* Migrate to null safety. + ## 1.0.5 * Update Flutter SDK constraint. diff --git a/packages/path_provider/path_provider_platform_interface/lib/path_provider_platform_interface.dart b/packages/path_provider/path_provider_platform_interface/lib/path_provider_platform_interface.dart index 4f796aaeec33..1ff2a978c5a4 100644 --- a/packages/path_provider/path_provider_platform_interface/lib/path_provider_platform_interface.dart +++ b/packages/path_provider/path_provider_platform_interface/lib/path_provider_platform_interface.dart @@ -40,26 +40,26 @@ abstract class PathProviderPlatform extends PlatformInterface { /// Path to the temporary directory on the device that is not backed up and is /// suitable for storing caches of downloaded files. - Future getTemporaryPath() { + Future getTemporaryPath() { throw UnimplementedError('getTemporaryPath() has not been implemented.'); } /// Path to a directory where the application may place application support /// files. - Future getApplicationSupportPath() { + Future getApplicationSupportPath() { throw UnimplementedError( 'getApplicationSupportPath() has not been implemented.'); } /// Path to the directory where application can store files that are persistent, /// backed up, and not visible to the user, such as sqlite.db. - Future getLibraryPath() { + Future getLibraryPath() { throw UnimplementedError('getLibraryPath() has not been implemented.'); } /// Path to a directory where the application may place data that is /// user-generated, or that cannot otherwise be recreated by your application. - Future getApplicationDocumentsPath() { + Future getApplicationDocumentsPath() { throw UnimplementedError( 'getApplicationDocumentsPath() has not been implemented.'); } @@ -67,7 +67,7 @@ abstract class PathProviderPlatform extends PlatformInterface { /// Path to a directory where the application may access top level storage. /// The current operating system should be determined before issuing this /// function call, as this functionality is only available on Android. - Future getExternalStoragePath() { + Future getExternalStoragePath() { throw UnimplementedError( 'getExternalStoragePath() has not been implemented.'); } @@ -76,7 +76,7 @@ abstract class PathProviderPlatform extends PlatformInterface { /// stored. These paths typically reside on external storage like separate /// partitions or SD cards. Phones may have multiple storage directories /// available. - Future> getExternalCachePaths() { + Future?> getExternalCachePaths() { throw UnimplementedError( 'getExternalCachePaths() has not been implemented.'); } @@ -84,10 +84,10 @@ abstract class PathProviderPlatform extends PlatformInterface { /// Paths to directories where application specific data can be stored. /// These paths typically reside on external storage like separate partitions /// or SD cards. Phones may have multiple storage directories available. - Future> getExternalStoragePaths({ + Future?> getExternalStoragePaths({ /// Optional parameter. See [StorageDirectory] for more informations on /// how this type translates to Android storage directories. - StorageDirectory type, + StorageDirectory? type, }) { throw UnimplementedError( 'getExternalStoragePaths() has not been implemented.'); @@ -95,7 +95,7 @@ abstract class PathProviderPlatform extends PlatformInterface { /// Path to the directory where downloaded files can be stored. /// This is typically only relevant on desktop operating systems. - Future getDownloadsPath() { + Future getDownloadsPath() { throw UnimplementedError('getDownloadsPath() has not been implemented.'); } } diff --git a/packages/path_provider/path_provider_platform_interface/lib/src/method_channel_path_provider.dart b/packages/path_provider/path_provider_platform_interface/lib/src/method_channel_path_provider.dart index 7826fa4365be..728c1068f876 100644 --- a/packages/path_provider/path_provider_platform_interface/lib/src/method_channel_path_provider.dart +++ b/packages/path_provider/path_provider_platform_interface/lib/src/method_channel_path_provider.dart @@ -30,34 +30,34 @@ class MethodChannelPathProvider extends PathProviderPlatform { _platform = platform; } - Future getTemporaryPath() { + Future getTemporaryPath() { return methodChannel.invokeMethod('getTemporaryDirectory'); } - Future getApplicationSupportPath() { + Future getApplicationSupportPath() { return methodChannel.invokeMethod('getApplicationSupportDirectory'); } - Future getLibraryPath() { + Future getLibraryPath() { if (!_platform.isIOS && !_platform.isMacOS) { throw UnsupportedError('Functionality only available on iOS/macOS'); } return methodChannel.invokeMethod('getLibraryDirectory'); } - Future getApplicationDocumentsPath() { + Future getApplicationDocumentsPath() { return methodChannel .invokeMethod('getApplicationDocumentsDirectory'); } - Future getExternalStoragePath() { + Future getExternalStoragePath() { if (!_platform.isAndroid) { throw UnsupportedError('Functionality only available on Android'); } return methodChannel.invokeMethod('getStorageDirectory'); } - Future> getExternalCachePaths() { + Future?> getExternalCachePaths() { if (!_platform.isAndroid) { throw UnsupportedError('Functionality only available on Android'); } @@ -65,8 +65,8 @@ class MethodChannelPathProvider extends PathProviderPlatform { .invokeListMethod('getExternalCacheDirectories'); } - Future> getExternalStoragePaths({ - StorageDirectory type, + Future?> getExternalStoragePaths({ + StorageDirectory? type, }) async { if (!_platform.isAndroid) { throw UnsupportedError('Functionality only available on Android'); @@ -77,7 +77,7 @@ class MethodChannelPathProvider extends PathProviderPlatform { ); } - Future getDownloadsPath() { + Future getDownloadsPath() { if (!_platform.isMacOS) { throw UnsupportedError('Functionality only available on macOS'); } diff --git a/packages/path_provider/path_provider_platform_interface/pubspec.yaml b/packages/path_provider/path_provider_platform_interface/pubspec.yaml index fc3d4696b51c..946d2ed4b4fd 100644 --- a/packages/path_provider/path_provider_platform_interface/pubspec.yaml +++ b/packages/path_provider/path_provider_platform_interface/pubspec.yaml @@ -3,20 +3,20 @@ description: A common platform interface for the path_provider plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.5 +version: 2.0.0-nullsafety dependencies: flutter: sdk: flutter - meta: ^1.0.5 - platform: ">=2.0.0 <4.0.0" - plugin_platform_interface: ^1.0.1 + meta: ^1.3.0-nullsafety.3 + platform: ^3.0.0-nullsafety.4 + plugin_platform_interface: ^1.1.0-nullsafety dev_dependencies: flutter_test: sdk: flutter - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.10.0" diff --git a/packages/path_provider/path_provider_platform_interface/test/method_channel_path_provider_test.dart b/packages/path_provider/path_provider_platform_interface/test/method_channel_path_provider_test.dart index 99c9349f9ae5..7130d7743e69 100644 --- a/packages/path_provider/path_provider_platform_interface/test/method_channel_path_provider_test.dart +++ b/packages/path_provider/path_provider_platform_interface/test/method_channel_path_provider_test.dart @@ -19,7 +19,7 @@ void main() { const String kDownloadsPath = 'downloadsPath'; group('$MethodChannelPathProvider', () { - MethodChannelPathProvider methodChannelPathProvider; + late MethodChannelPathProvider methodChannelPathProvider; final List log = []; setUp(() async { @@ -59,7 +59,7 @@ void main() { }); test('getTemporaryPath', () async { - final String path = await methodChannelPathProvider.getTemporaryPath(); + final String? path = await methodChannelPathProvider.getTemporaryPath(); expect( log, [isMethodCall('getTemporaryDirectory', arguments: null)], @@ -68,7 +68,7 @@ void main() { }); test('getApplicationSupportPath', () async { - final String path = + final String? path = await methodChannelPathProvider.getApplicationSupportPath(); expect( log, @@ -92,7 +92,7 @@ void main() { methodChannelPathProvider .setMockPathProviderPlatform(FakePlatform(operatingSystem: 'ios')); - final String path = await methodChannelPathProvider.getLibraryPath(); + final String? path = await methodChannelPathProvider.getLibraryPath(); expect( log, [isMethodCall('getLibraryDirectory', arguments: null)], @@ -104,7 +104,7 @@ void main() { methodChannelPathProvider .setMockPathProviderPlatform(FakePlatform(operatingSystem: 'macos')); - final String path = await methodChannelPathProvider.getLibraryPath(); + final String? path = await methodChannelPathProvider.getLibraryPath(); expect( log, [isMethodCall('getLibraryDirectory', arguments: null)], @@ -113,7 +113,7 @@ void main() { }); test('getApplicationDocumentsPath', () async { - final String path = + final String? path = await methodChannelPathProvider.getApplicationDocumentsPath(); expect( log, @@ -125,13 +125,13 @@ void main() { }); test('getExternalCachePaths android succeeds', () async { - final List result = + final List? result = await methodChannelPathProvider.getExternalCachePaths(); expect( log, [isMethodCall('getExternalCacheDirectories', arguments: null)], ); - expect(result.length, 1); + expect(result!.length, 1); expect(result.first, kExternalCachePaths); }); @@ -147,10 +147,12 @@ void main() { } }); - for (StorageDirectory type - in StorageDirectory.values + [null]) { + for (StorageDirectory? type in [ + null, + ...StorageDirectory.values + ]) { test('getExternalStoragePaths (type: $type) android succeeds', () async { - final List result = + final List? result = await methodChannelPathProvider.getExternalStoragePaths(type: type); expect( log, @@ -162,7 +164,7 @@ void main() { ], ); - expect(result.length, 1); + expect(result!.length, 1); expect(result.first, kExternalStoragePaths); }); @@ -182,7 +184,7 @@ void main() { test('getDownloadsPath macos succeeds', () async { methodChannelPathProvider .setMockPathProviderPlatform(FakePlatform(operatingSystem: 'macos')); - final String result = await methodChannelPathProvider.getDownloadsPath(); + final String? result = await methodChannelPathProvider.getDownloadsPath(); expect( log, [isMethodCall('getDownloadsDirectory', arguments: null)], diff --git a/packages/plugin_platform_interface/CHANGELOG.md b/packages/plugin_platform_interface/CHANGELOG.md index 01b5ff7d1252..7df1834966dd 100644 --- a/packages/plugin_platform_interface/CHANGELOG.md +++ b/packages/plugin_platform_interface/CHANGELOG.md @@ -1,3 +1,11 @@ +## 1.1.0-nullsafety.1 + +* Bump Dart SDK to support null safety. + +## 1.1.0-nullsafety + +* Migrate to null safety. + ## 1.0.3 * Fix homepage in `pubspec.yaml`. diff --git a/packages/plugin_platform_interface/analysis_options.yaml b/packages/plugin_platform_interface/analysis_options.yaml new file mode 100644 index 000000000000..f4819cd5c313 --- /dev/null +++ b/packages/plugin_platform_interface/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/plugin_platform_interface/lib/plugin_platform_interface.dart b/packages/plugin_platform_interface/lib/plugin_platform_interface.dart index be4871928686..cd87b04dc739 100644 --- a/packages/plugin_platform_interface/lib/plugin_platform_interface.dart +++ b/packages/plugin_platform_interface/lib/plugin_platform_interface.dart @@ -41,7 +41,7 @@ import 'package:meta/meta.dart'; /// [MockPlatformInterfaceMixin] for a sample of using Mockito to mock a platform interface. abstract class PlatformInterface { /// Pass a private, class-specific `const Object()` as the `token`. - PlatformInterface({@required Object token}) : _instanceToken = token; + PlatformInterface({required Object token}) : _instanceToken = token; final Object _instanceToken; diff --git a/packages/plugin_platform_interface/pubspec.yaml b/packages/plugin_platform_interface/pubspec.yaml index ae11b144ca8c..05fc918bf9b5 100644 --- a/packages/plugin_platform_interface/pubspec.yaml +++ b/packages/plugin_platform_interface/pubspec.yaml @@ -12,17 +12,17 @@ description: Reusable base class for Flutter plugin platform interfaces. # be done when absolutely necessary and after the ecosystem has already migrated to 1.X.Y version # that is forward compatible with 2.0.0 (ideally the ecosystem have migrated to depend on: # `plugin_platform_interface: >=1.X.Y <3.0.0`). -version: 1.0.3 +version: 1.1.0-nullsafety.1 repository: https://github.com/flutter/plugins/tree/master/packages/plugin_platform_interface environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" dependencies: - meta: ^1.0.0 + meta: ^1.3.0-nullsafety.3 dev_dependencies: mockito: ^4.1.1 - test: ^1.9.4 - pedantic: ^1.8.0 + test: ^1.10.0-nullsafety.1 + pedantic: ^1.10.0-nullsafety.1 diff --git a/packages/plugin_platform_interface/test/plugin_platform_interface_test.dart b/packages/plugin_platform_interface/test/plugin_platform_interface_test.dart index 0488c20f3efb..b07dd4dcede1 100644 --- a/packages/plugin_platform_interface/test/plugin_platform_interface_test.dart +++ b/packages/plugin_platform_interface/test/plugin_platform_interface_test.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(egarciad): Remove once Mockito is migrated to null safety. +// @dart = 2.9 import 'package:mockito/mockito.dart'; import 'package:test/test.dart'; diff --git a/packages/shared_preferences/shared_preferences/test/shared_preferences_test.dart b/packages/shared_preferences/shared_preferences/test/shared_preferences_test.dart index 763d32642cfa..80faba404154 100755 --- a/packages/shared_preferences/shared_preferences/test/shared_preferences_test.dart +++ b/packages/shared_preferences/shared_preferences/test/shared_preferences_test.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 +// @dart = 2.9 import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md index 9c2d8ce19672..aaf958a52624 100644 --- a/packages/url_launcher/url_launcher/CHANGELOG.md +++ b/packages/url_launcher/url_launcher/CHANGELOG.md @@ -1,3 +1,11 @@ +## 6.0.0-nullsafety.1 + +* Bump Dart SDK to support null safety. + +## 6.0.0-nullsafety + +* Migrate to null safety. + ## 5.7.13 * Update Flutter SDK constraint. diff --git a/packages/url_launcher/url_launcher/analysis_options.yaml b/packages/url_launcher/url_launcher/analysis_options.yaml new file mode 100644 index 000000000000..3d64bb57fe49 --- /dev/null +++ b/packages/url_launcher/url_launcher/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/url_launcher/url_launcher/example/integration_test/url_launcher_test.dart b/packages/url_launcher/url_launcher/example/integration_test/url_launcher_test.dart index 4c0f5031ee6b..80d21b740c1e 100644 --- a/packages/url_launcher/url_launcher/example/integration_test/url_launcher_test.dart +++ b/packages/url_launcher/url_launcher/example/integration_test/url_launcher_test.dart @@ -2,6 +2,9 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +// TODO(egarciad): Remove once integration_test is migrated to null safety. +// @dart = 2.9 + import 'dart:io' show Platform; import 'package:flutter/foundation.dart' show kIsWeb; diff --git a/packages/url_launcher/url_launcher/example/lib/main.dart b/packages/url_launcher/url_launcher/example/lib/main.dart index f7d90c4bef65..b3e65f38a794 100644 --- a/packages/url_launcher/url_launcher/example/lib/main.dart +++ b/packages/url_launcher/url_launcher/example/lib/main.dart @@ -27,7 +27,7 @@ class MyApp extends StatelessWidget { } class MyHomePage extends StatefulWidget { - MyHomePage({Key key, this.title}) : super(key: key); + MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @override @@ -35,7 +35,7 @@ class MyHomePage extends StatefulWidget { } class _MyHomePageState extends State { - Future _launched; + Future? _launched; String _phone = ''; Future _launchInBrowser(String url) async { diff --git a/packages/url_launcher/url_launcher/example/pubspec.yaml b/packages/url_launcher/url_launcher/example/pubspec.yaml index 94df1a4b4959..1fdb73cef666 100644 --- a/packages/url_launcher/url_launcher/example/pubspec.yaml +++ b/packages/url_launcher/url_launcher/example/pubspec.yaml @@ -12,9 +12,9 @@ dev_dependencies: path: ../../../integration_test flutter_driver: sdk: flutter - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 mockito: ^4.1.1 - plugin_platform_interface: ^1.0.0 + plugin_platform_interface: ^1.1.0-nullsafety.1 flutter: uses-material-design: true diff --git a/packages/url_launcher/url_launcher/example/test/url_launcher_example_test.dart b/packages/url_launcher/url_launcher/example/test/url_launcher_example_test.dart index 41b9f6f5ec6c..eddc126a8e66 100644 --- a/packages/url_launcher/url_launcher/example/test/url_launcher_example_test.dart +++ b/packages/url_launcher/url_launcher/example/test/url_launcher_example_test.dart @@ -1,3 +1,10 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// TODO(egarciad): Remove once mockito is migrated to null safety. +// @dart = 2.9 + import 'package:flutter_test/flutter_test.dart'; import 'package:flutter/material.dart'; import 'package:mockito/mockito.dart'; diff --git a/packages/url_launcher/url_launcher/example/test_driver/integration_test.dart b/packages/url_launcher/url_launcher/example/test_driver/integration_test.dart index 7a2c21338786..e56756f38cbd 100644 --- a/packages/url_launcher/url_launcher/example/test_driver/integration_test.dart +++ b/packages/url_launcher/url_launcher/example/test_driver/integration_test.dart @@ -2,6 +2,9 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +// TODO(egarciad): Remove once flutter_driver is migrated to null safety. +// @dart = 2.9 + import 'dart:async'; import 'dart:convert'; import 'dart:io'; diff --git a/packages/url_launcher/url_launcher/lib/src/link.dart b/packages/url_launcher/url_launcher/lib/src/link.dart index bd54789accfb..f859bc4ad2cf 100644 --- a/packages/url_launcher/url_launcher/lib/src/link.dart +++ b/packages/url_launcher/url_launcher/lib/src/link.dart @@ -40,7 +40,7 @@ class Link extends StatelessWidget implements LinkInfo { final LinkWidgetBuilder builder; /// The destination that this link leads to. - final Uri uri; + final Uri? uri; /// The target indicating where to open the link. final LinkTarget target; @@ -51,12 +51,11 @@ class Link extends StatelessWidget implements LinkInfo { /// Creates a widget that renders a real link on the web, and uses WebViews in /// native platforms to open links. Link({ - Key key, - @required this.uri, - LinkTarget target, - @required this.builder, - }) : target = target ?? LinkTarget.defaultTarget, - super(key: key); + Key? key, + required this.uri, + this.target = LinkTarget.defaultTarget, + required this.builder, + }) : super(key: key); LinkDelegate get _effectiveDelegate { return UrlLauncherPlatform.instance.linkDelegate ?? @@ -90,16 +89,17 @@ class DefaultLinkDelegate extends StatelessWidget { bool get _useWebView { if (link.target == LinkTarget.self) return true; if (link.target == LinkTarget.blank) return false; - return null; + return false; } Future _followLink(BuildContext context) async { - if (!link.uri.hasScheme) { + if (!link.uri!.hasScheme) { // A uri that doesn't have a scheme is an internal route name. In this // case, we push it via Flutter's navigation system instead of letting the // browser handle it. final String routeName = link.uri.toString(); - return pushRouteNameToFramework(context, routeName); + await pushRouteNameToFramework(context, routeName); + return; } // At this point, we know that the link is external. So we use the `launch` @@ -119,7 +119,6 @@ class DefaultLinkDelegate extends StatelessWidget { context: ErrorDescription('during launching a link'), )); } - return Future.value(null); } @override diff --git a/packages/url_launcher/url_launcher/lib/url_launcher.dart b/packages/url_launcher/url_launcher/lib/url_launcher.dart index 25aa623a590f..6138fff2e3d9 100644 --- a/packages/url_launcher/url_launcher/lib/url_launcher.dart +++ b/packages/url_launcher/url_launcher/lib/url_launcher.dart @@ -62,16 +62,15 @@ import 'package:url_launcher_platform_interface/url_launcher_platform_interface. /// is set to true and the universal link failed to launch. Future launch( String urlString, { - bool forceSafariVC, - bool forceWebView, - bool enableJavaScript, - bool enableDomStorage, - bool universalLinksOnly, - Map headers, - Brightness statusBarBrightness, - String webOnlyWindowName, + bool forceSafariVC = true, + bool forceWebView = false, + bool enableJavaScript = false, + bool enableDomStorage = false, + bool universalLinksOnly = false, + Map headers = const {}, + Brightness? statusBarBrightness, + String? webOnlyWindowName, }) async { - assert(urlString != null); final Uri url = Uri.parse(urlString.trimLeft()); final bool isWebURL = url.scheme == 'http' || url.scheme == 'https'; if ((forceSafariVC == true || forceWebView == true) && !isWebURL) { @@ -84,29 +83,32 @@ Future launch( /// [true] so that ui is automatically computed if [statusBarBrightness] is set. bool previousAutomaticSystemUiAdjustment = true; if (statusBarBrightness != null && - defaultTargetPlatform == TargetPlatform.iOS) { + defaultTargetPlatform == TargetPlatform.iOS && + WidgetsBinding.instance != null) { previousAutomaticSystemUiAdjustment = - WidgetsBinding.instance.renderView.automaticSystemUiAdjustment; - WidgetsBinding.instance.renderView.automaticSystemUiAdjustment = false; + WidgetsBinding.instance!.renderView.automaticSystemUiAdjustment; + WidgetsBinding.instance!.renderView.automaticSystemUiAdjustment = false; SystemChrome.setSystemUIOverlayStyle(statusBarBrightness == Brightness.light ? SystemUiOverlayStyle.dark : SystemUiOverlayStyle.light); } + final bool result = await UrlLauncherPlatform.instance.launch( urlString, - useSafariVC: forceSafariVC ?? isWebURL, - useWebView: forceWebView ?? false, - enableJavaScript: enableJavaScript ?? false, - enableDomStorage: enableDomStorage ?? false, - universalLinksOnly: universalLinksOnly ?? false, - headers: headers ?? {}, + useSafariVC: forceSafariVC, + useWebView: forceWebView, + enableJavaScript: enableJavaScript, + enableDomStorage: enableDomStorage, + universalLinksOnly: universalLinksOnly, + headers: headers, webOnlyWindowName: webOnlyWindowName, ); - assert(previousAutomaticSystemUiAdjustment != null); - if (statusBarBrightness != null) { - WidgetsBinding.instance.renderView.automaticSystemUiAdjustment = + + if (statusBarBrightness != null && WidgetsBinding.instance != null) { + WidgetsBinding.instance!.renderView.automaticSystemUiAdjustment = previousAutomaticSystemUiAdjustment; } + return result; } @@ -118,9 +120,6 @@ Future launch( /// For more information see the [Managing package visibility](https://developer.android.com/training/basics/intents/package-visibility) /// article in the Android docs. Future canLaunch(String urlString) async { - if (urlString == null) { - return false; - } return await UrlLauncherPlatform.instance.canLaunch(urlString); } diff --git a/packages/url_launcher/url_launcher/pubspec.yaml b/packages/url_launcher/url_launcher/pubspec.yaml index 8b731faa1a96..d0abd941a9c2 100644 --- a/packages/url_launcher/url_launcher/pubspec.yaml +++ b/packages/url_launcher/url_launcher/pubspec.yaml @@ -2,7 +2,7 @@ name: url_launcher description: Flutter plugin for launching a URL on Android and iOS. Supports web, phone, SMS, and email schemes. homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher -version: 5.7.13 +version: 6.0.0-nullsafety.1 flutter: plugin: @@ -12,8 +12,9 @@ flutter: pluginClass: UrlLauncherPlugin ios: pluginClass: FLTURLLauncherPlugin - web: - default_package: url_launcher_web + # TODO(mvanbeusekom): Temporary disabled until web is migrated to nnbd (advised by @blasten). + #web: + # default_package: url_launcher_web linux: default_package: url_laucher_linux macos: @@ -24,25 +25,26 @@ flutter: dependencies: flutter: sdk: flutter - url_launcher_platform_interface: ^1.0.9 + url_launcher_platform_interface: ^2.0.0-nullsafety # The design on https://flutter.dev/go/federated-plugins was to leave # this constraint as "any". We cannot do it right now as it fails pub publish # validation, so we set a ^ constraint. # TODO(amirh): Revisit this (either update this part in the design or the pub tool). # https://github.com/flutter/flutter/issues/46264 - url_launcher_web: ^0.1.5 - url_launcher_linux: ^0.0.1 - url_launcher_macos: ^0.0.1 - url_launcher_windows: ^0.0.1 + url_launcher_linux: ^0.1.0-nullsafety + url_launcher_macos: ^0.1.0-nullsafety + url_launcher_windows: ^0.1.0-nullsafety + # TODO(mvanbeusekom): Temporary disabled until web is migrated to nnbd (advised by @blasten). + #url_launcher_web: ^0.1.3 dev_dependencies: flutter_test: sdk: flutter - test: ^1.3.0 + test: ^1.10.0-nullsafety.1 mockito: ^4.1.1 - plugin_platform_interface: ^1.0.0 - pedantic: ^1.8.0 + plugin_platform_interface: ^1.1.0-nullsafety.1 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13+hotfix.5" diff --git a/packages/url_launcher/url_launcher/test/link_test.dart b/packages/url_launcher/url_launcher/test/link_test.dart index d525153dc0a0..46903aadaede 100644 --- a/packages/url_launcher/url_launcher/test/link_test.dart +++ b/packages/url_launcher/url_launcher/test/link_test.dart @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 +// TODO(egarciad): Remove once Mockito has been migrated to null safety. +// @dart = 2.9 import 'dart:ui'; import 'package:flutter/material.dart'; diff --git a/packages/url_launcher/url_launcher/test/url_launcher_test.dart b/packages/url_launcher/url_launcher/test/url_launcher_test.dart index f18e16c7e318..89a7801e1ca8 100644 --- a/packages/url_launcher/url_launcher/test/url_launcher_test.dart +++ b/packages/url_launcher/url_launcher/test/url_launcher_test.dart @@ -2,10 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 +// TODO(mvanbeusekom): Remove once Mockito is migrated to null safety. +// @dart = 2.9 import 'dart:async'; import 'dart:ui'; + import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; import 'package:flutter/foundation.dart'; @@ -41,10 +43,6 @@ void main() { }); }); group('launch', () { - test('requires a non-null urlString', () { - expect(() => launch(null), throwsAssertionError); - }); - test('default behavior', () async { await launch('http://flutter.dev/'); expect( diff --git a/packages/url_launcher/url_launcher_linux/CHANGELOG.md b/packages/url_launcher/url_launcher_linux/CHANGELOG.md index 57da89f50785..bad287a7a744 100644 --- a/packages/url_launcher/url_launcher_linux/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_linux/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.0-nullsafety.1 + +* Migrate to null safety. + ## 0.0.2+1 * Update Flutter SDK constraint. diff --git a/packages/url_launcher/url_launcher_linux/pubspec.yaml b/packages/url_launcher/url_launcher_linux/pubspec.yaml index 65e10e05e166..e2fb5fc52e69 100644 --- a/packages/url_launcher/url_launcher_linux/pubspec.yaml +++ b/packages/url_launcher/url_launcher_linux/pubspec.yaml @@ -1,6 +1,6 @@ name: url_launcher_linux description: Linux implementation of the url_launcher plugin. -version: 0.0.2+1 +version: 0.1.0-nullsafety.1 homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_linux flutter: @@ -10,7 +10,7 @@ flutter: pluginClass: UrlLauncherPlugin environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.8" dependencies: diff --git a/packages/url_launcher/url_launcher_macos/CHANGELOG.md b/packages/url_launcher/url_launcher_macos/CHANGELOG.md index ab132757bbf2..8a0e6575b5f2 100644 --- a/packages/url_launcher/url_launcher_macos/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_macos/CHANGELOG.md @@ -1,3 +1,11 @@ +# 0.1.0-nullsafety.1 + +* Bump SDK to support null safety. + +# 0.1.0-nullsafety + +* Migrate to null safety. + ## 0.0.2+1 * Update Flutter SDK constraint. diff --git a/packages/url_launcher/url_launcher_macos/pubspec.yaml b/packages/url_launcher/url_launcher_macos/pubspec.yaml index 12ce6a0b0907..9ce9c9c47ea9 100644 --- a/packages/url_launcher/url_launcher_macos/pubspec.yaml +++ b/packages/url_launcher/url_launcher_macos/pubspec.yaml @@ -3,7 +3,7 @@ description: macOS implementation of the url_launcher plugin. # 0.0.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.0.2+1 +version: 0.1.0-nullsafety.1 homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_macos flutter: @@ -14,7 +14,7 @@ flutter: fileName: url_launcher_macos.dart environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.8" dependencies: diff --git a/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md b/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md index 26047c748ae6..5bbbe9d28cd1 100644 --- a/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2.0.0-nullsafety.1 + +* Bump Dart SDK to support null safety. + +## 2.0.0-nullsafety + +* Migrate to null safety. + ## 1.0.10 * Update Flutter SDK constraint. diff --git a/packages/url_launcher/url_launcher_platform_interface/analysis_options.yaml b/packages/url_launcher/url_launcher_platform_interface/analysis_options.yaml new file mode 100644 index 000000000000..3d64bb57fe49 --- /dev/null +++ b/packages/url_launcher/url_launcher_platform_interface/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/url_launcher/url_launcher_platform_interface/lib/link.dart b/packages/url_launcher/url_launcher_platform_interface/lib/link.dart index 425dc886d29f..a176972e06bd 100644 --- a/packages/url_launcher/url_launcher_platform_interface/lib/link.dart +++ b/packages/url_launcher/url_launcher_platform_interface/lib/link.dart @@ -16,7 +16,7 @@ typedef FollowLink = Future Function(); /// the widget tree under it. typedef LinkWidgetBuilder = Widget Function( BuildContext context, - FollowLink followLink, + FollowLink? followLink, ); /// Signature for a delegate function to build the [Link] widget. @@ -31,7 +31,7 @@ final MethodCodec _codec = const JSONMethodCodec(); class LinkTarget { /// Const private constructor with a [debugLabel] to allow the creation of /// multiple distinct const instances. - const LinkTarget._({this.debugLabel}); + const LinkTarget._({required this.debugLabel}); /// Used to distinguish multiple const instances of [LinkTarget]. final String debugLabel; @@ -64,7 +64,7 @@ abstract class LinkInfo { LinkWidgetBuilder get builder; /// The destination that this link leads to. - Uri get uri; + Uri? get uri; /// The target indicating where to open the link. LinkTarget get target; @@ -80,10 +80,14 @@ Future pushRouteNameToFramework( String routeName, { @visibleForTesting bool debugForceRouter = false, }) { + final PlatformMessageCallback? onPlatformMessage = window.onPlatformMessage; + if (onPlatformMessage == null) { + return Future.value(null); + } final Completer completer = Completer(); if (debugForceRouter || _hasRouter(context)) { SystemNavigator.routeInformationUpdated(location: routeName); - window.onPlatformMessage( + onPlatformMessage( 'flutter/navigation', _codec.encodeMethodCall( MethodCall('pushRouteInformation', { @@ -94,7 +98,7 @@ Future pushRouteNameToFramework( completer.complete, ); } else { - window.onPlatformMessage( + onPlatformMessage( 'flutter/navigation', _codec.encodeMethodCall(MethodCall('pushRoute', routeName)), completer.complete, diff --git a/packages/url_launcher/url_launcher_platform_interface/lib/method_channel_url_launcher.dart b/packages/url_launcher/url_launcher_platform_interface/lib/method_channel_url_launcher.dart index ac5bfa230289..7b9dfc9cc5cf 100644 --- a/packages/url_launcher/url_launcher_platform_interface/lib/method_channel_url_launcher.dart +++ b/packages/url_launcher/url_launcher_platform_interface/lib/method_channel_url_launcher.dart @@ -5,7 +5,6 @@ import 'dart:async'; import 'package:flutter/services.dart'; -import 'package:meta/meta.dart' show required; import 'link.dart'; import 'url_launcher_platform_interface.dart'; @@ -15,14 +14,14 @@ const MethodChannel _channel = MethodChannel('plugins.flutter.io/url_launcher'); /// An implementation of [UrlLauncherPlatform] that uses method channels. class MethodChannelUrlLauncher extends UrlLauncherPlatform { @override - final LinkDelegate linkDelegate = null; + final LinkDelegate? linkDelegate = null; @override Future canLaunch(String url) { return _channel.invokeMethod( 'canLaunch', {'url': url}, - ); + ).then((value) => value ?? false); } @override @@ -33,13 +32,13 @@ class MethodChannelUrlLauncher extends UrlLauncherPlatform { @override Future launch( String url, { - @required bool useSafariVC, - @required bool useWebView, - @required bool enableJavaScript, - @required bool enableDomStorage, - @required bool universalLinksOnly, - @required Map headers, - String webOnlyWindowName, + required bool useSafariVC, + required bool useWebView, + required bool enableJavaScript, + required bool enableDomStorage, + required bool universalLinksOnly, + required Map headers, + String? webOnlyWindowName, }) { return _channel.invokeMethod( 'launch', @@ -52,6 +51,6 @@ class MethodChannelUrlLauncher extends UrlLauncherPlatform { 'universalLinksOnly': universalLinksOnly, 'headers': headers, }, - ); + ).then((value) => value ?? false); } } diff --git a/packages/url_launcher/url_launcher_platform_interface/lib/url_launcher_platform_interface.dart b/packages/url_launcher/url_launcher_platform_interface/lib/url_launcher_platform_interface.dart index 75002ff9eb4d..2a4edfa8d1af 100644 --- a/packages/url_launcher/url_launcher_platform_interface/lib/url_launcher_platform_interface.dart +++ b/packages/url_launcher/url_launcher_platform_interface/lib/url_launcher_platform_interface.dart @@ -4,7 +4,6 @@ import 'dart:async'; -import 'package:meta/meta.dart' show required; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; import 'package:url_launcher_platform_interface/link.dart'; @@ -40,7 +39,7 @@ abstract class UrlLauncherPlatform extends PlatformInterface { } /// The delegate used by the Link widget to build itself. - LinkDelegate get linkDelegate; + LinkDelegate? get linkDelegate; /// Returns `true` if this platform is able to launch [url]. Future canLaunch(String url) { @@ -53,13 +52,13 @@ abstract class UrlLauncherPlatform extends PlatformInterface { /// in `package:url_launcher/url_launcher.dart`. Future launch( String url, { - @required bool useSafariVC, - @required bool useWebView, - @required bool enableJavaScript, - @required bool enableDomStorage, - @required bool universalLinksOnly, - @required Map headers, - String webOnlyWindowName, + required bool useSafariVC, + required bool useWebView, + required bool enableJavaScript, + required bool enableDomStorage, + required bool universalLinksOnly, + required Map headers, + String? webOnlyWindowName, }) { throw UnimplementedError('launch() has not been implemented.'); } diff --git a/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml b/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml index b8b05b8ec837..e576e967ec46 100644 --- a/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml +++ b/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml @@ -3,20 +3,19 @@ description: A common platform interface for the url_launcher plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.10 +version: 2.0.0-nullsafety.1 dependencies: flutter: sdk: flutter - meta: ^1.0.5 - plugin_platform_interface: ^1.0.1 + plugin_platform_interface: ^1.1.0-nullsafety.1 dev_dependencies: flutter_test: sdk: flutter mockito: ^4.1.1 - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.22.0" diff --git a/packages/url_launcher/url_launcher_platform_interface/test/link_test.dart b/packages/url_launcher/url_launcher_platform_interface/test/link_test.dart index 99a885ccc179..58cdd22dca02 100644 --- a/packages/url_launcher/url_launcher_platform_interface/test/link_test.dart +++ b/packages/url_launcher/url_launcher_platform_interface/test/link_test.dart @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(egarciad): Remove once Mockito has been migrated to null safety. +// @dart = 2.9 + import 'dart:ui'; import 'package:mockito/mockito.dart'; diff --git a/packages/url_launcher/url_launcher_platform_interface/test/method_channel_url_launcher_test.dart b/packages/url_launcher/url_launcher_platform_interface/test/method_channel_url_launcher_test.dart index d88f53ad58d0..dfd4b7380c3e 100644 --- a/packages/url_launcher/url_launcher_platform_interface/test/method_channel_url_launcher_test.dart +++ b/packages/url_launcher/url_launcher_platform_interface/test/method_channel_url_launcher_test.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(mvanbeusekom): Remove once Mockito is migrated to null safety. +// @dart = 2.9 import 'package:mockito/mockito.dart'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -42,6 +44,10 @@ void main() { final List log = []; channel.setMockMethodCallHandler((MethodCall methodCall) async { log.add(methodCall); + + // Return null explicitly instead of relying on the implicit null + // returned by the method channel if no return statement is specified. + return null; }); final MethodChannelUrlLauncher launcher = MethodChannelUrlLauncher(); @@ -62,6 +68,12 @@ void main() { ); }); + test('canLaunch should return false if platform returns null', () async { + final canLaunch = await launcher.canLaunch('http://example.com/'); + + expect(canLaunch, false); + }); + test('launch', () async { await launcher.launch( 'http://example.com/', @@ -270,6 +282,20 @@ void main() { ); }); + test('launch should return false if platform returns null', () async { + final launched = await launcher.launch( + 'http://example.com/', + useSafariVC: true, + useWebView: false, + enableJavaScript: false, + enableDomStorage: false, + universalLinksOnly: false, + headers: const {}, + ); + + expect(launched, false); + }); + test('closeWebView default behavior', () async { await launcher.closeWebView(); expect( diff --git a/packages/url_launcher/url_launcher_web/CHANGELOG.md b/packages/url_launcher/url_launcher_web/CHANGELOG.md index e8db0e49aeb7..c8d52f5df13f 100644 --- a/packages/url_launcher/url_launcher_web/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_web/CHANGELOG.md @@ -41,7 +41,7 @@ # 0.1.2 -- Adds "tel" and "sms" support +- Adds "tel" and "sms" support # 0.1.1+6 diff --git a/packages/url_launcher/url_launcher_web/pubspec.yaml b/packages/url_launcher/url_launcher_web/pubspec.yaml index 049c4bb44544..2d1b8af8e49f 100644 --- a/packages/url_launcher/url_launcher_web/pubspec.yaml +++ b/packages/url_launcher/url_launcher_web/pubspec.yaml @@ -15,6 +15,12 @@ flutter: dependencies: url_launcher_platform_interface: ^1.0.9 + # TODO(mvanbeusekom): Update to use pub.dev once null safety version is published. + # url_launcher_platform_interface: + # git: + # url: https://github.com/flutter/plugins.git + # ref: nnbd + # path: packages/url_launcher/url_launcher_platform_interface flutter: sdk: flutter flutter_web_plugins: @@ -25,6 +31,9 @@ dev_dependencies: flutter_test: sdk: flutter url_launcher: ^5.2.5 + # TODO(mvanbeusekom): Update to use pub.dev once null safety version is published. + # url_launcher: + # path: ../url_launcher pedantic: ^1.8.0 mockito: ^4.1.1 integration_test: diff --git a/packages/url_launcher/url_launcher_web/test/pubspec.yaml b/packages/url_launcher/url_launcher_web/test/pubspec.yaml index e755dff85004..b8c541f72986 100644 --- a/packages/url_launcher/url_launcher_web/test/pubspec.yaml +++ b/packages/url_launcher/url_launcher_web/test/pubspec.yaml @@ -2,7 +2,7 @@ name: regular_integration_tests publish_to: none environment: - sdk: ">=2.2.2 <3.0.0" + sdk: ">=2.10.0-56.0.dev <3.0.0" dependencies: flutter: diff --git a/packages/url_launcher/url_launcher_windows/CHANGELOG.md b/packages/url_launcher/url_launcher_windows/CHANGELOG.md index fb1a83f0190d..e9649ff6fd1e 100644 --- a/packages/url_launcher/url_launcher_windows/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_windows/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.1.0-nullsafety.1 + +* Bump Dart SDK to support null safety. + +## 0.1.0-nullsafety + +* Migrate to null-safety. + ## 0.0.2+1 * Update Flutter SDK constraint. diff --git a/packages/url_launcher/url_launcher_windows/pubspec.yaml b/packages/url_launcher/url_launcher_windows/pubspec.yaml index 8db8d94fc411..d2da4c534322 100644 --- a/packages/url_launcher/url_launcher_windows/pubspec.yaml +++ b/packages/url_launcher/url_launcher_windows/pubspec.yaml @@ -3,7 +3,7 @@ description: Windows implementation of the url_launcher plugin. # 0.0.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.0.2+1 +version: 0.1.0-nullsafety.1 homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_windows flutter: @@ -13,7 +13,7 @@ flutter: pluginClass: UrlLauncherPlugin environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.8" dependencies: diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md index 32614b43d261..14eaae381756 100644 --- a/packages/video_player/video_player/CHANGELOG.md +++ b/packages/video_player/video_player/CHANGELOG.md @@ -1,3 +1,19 @@ +## 2.0.0-nullsafety.3 + +* Dart null safety requires `2.12`. + +## 2.0.0-nullsafety.2 + +* Bump SDK version. + +## 2.0.0-nullsafety.1 + +* Merge master. + +## 2.0.0-nullsafety + +* Migration to null safety. + ## 1.0.2 * Update Flutter SDK constraint. diff --git a/packages/video_player/video_player/analysis_options.yaml b/packages/video_player/video_player/analysis_options.yaml new file mode 100644 index 000000000000..3d64bb57fe49 --- /dev/null +++ b/packages/video_player/video_player/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java index 78da7150edf0..98cf6dbaacea 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/Messages.java @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.7), do not edit directly. +// Autogenerated from Pigeon (v0.1.12), do not edit directly. // See also: https://pub.dev/packages/pigeon package io.flutter.plugins.videoplayer; @@ -597,7 +597,7 @@ static void setup(BinaryMessenger binaryMessenger, VideoPlayerApi api) { private static HashMap wrapError(Exception exception) { HashMap errorMap = new HashMap<>(); errorMap.put("message", exception.toString()); - errorMap.put("code", null); + errorMap.put("code", exception.getClass().getSimpleName()); errorMap.put("details", null); return errorMap; } diff --git a/packages/video_player/video_player/example/integration_test/video_player_test.dart b/packages/video_player/video_player/example/integration_test/video_player_test.dart index 639cca9b8631..d2f38367ce9a 100644 --- a/packages/video_player/video_player/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player/example/integration_test/video_player_test.dart @@ -11,7 +11,7 @@ const Duration _playDuration = Duration(seconds: 1); void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - VideoPlayerController _controller; + late VideoPlayerController _controller; tearDown(() async => _controller.dispose()); group('asset videos', () { @@ -22,7 +22,7 @@ void main() { testWidgets('can be initialized', (WidgetTester tester) async { await _controller.initialize(); - expect(_controller.value.initialized, true); + expect(_controller.value.isInitialized, true); expect(_controller.value.position, const Duration(seconds: 0)); expect(_controller.value.isPlaying, false); expect(_controller.value.duration, diff --git a/packages/video_player/video_player/example/lib/main.dart b/packages/video_player/video_player/example/lib/main.dart index a99b9da6bd0c..42eaaa578fcf 100644 --- a/packages/video_player/video_player/example/lib/main.dart +++ b/packages/video_player/video_player/example/lib/main.dart @@ -108,7 +108,7 @@ class _ButterFlyAssetVideoInList extends StatelessWidget { /// A filler card to show the video in a list of scrolling contents. class _ExampleCard extends StatelessWidget { - const _ExampleCard({Key key, this.title}) : super(key: key); + const _ExampleCard({Key? key, required this.title}) : super(key: key); final String title; @@ -150,7 +150,7 @@ class _ButterFlyAssetVideo extends StatefulWidget { } class _ButterFlyAssetVideoState extends State<_ButterFlyAssetVideo> { - VideoPlayerController _controller; + late VideoPlayerController _controller; @override void initState() { @@ -206,7 +206,7 @@ class _BumbleBeeRemoteVideo extends StatefulWidget { } class _BumbleBeeRemoteVideoState extends State<_BumbleBeeRemoteVideo> { - VideoPlayerController _controller; + late VideoPlayerController _controller; Future _loadCaptions() async { final String fileContents = await DefaultAssetBundle.of(context) @@ -265,7 +265,8 @@ class _BumbleBeeRemoteVideoState extends State<_BumbleBeeRemoteVideo> { } class _ControlsOverlay extends StatelessWidget { - const _ControlsOverlay({Key key, this.controller}) : super(key: key); + const _ControlsOverlay({Key? key, required this.controller}) + : super(key: key); static const _examplePlaybackRates = [ 0.25, @@ -345,7 +346,7 @@ class _PlayerVideoAndPopPage extends StatefulWidget { } class _PlayerVideoAndPopPageState extends State<_PlayerVideoAndPopPage> { - VideoPlayerController _videoPlayerController; + late VideoPlayerController _videoPlayerController; bool startedPlaying = false; @override diff --git a/packages/video_player/video_player/example/pubspec.yaml b/packages/video_player/video_player/example/pubspec.yaml index dd8fd8d06bd8..6cfa93213afb 100644 --- a/packages/video_player/video_player/example/pubspec.yaml +++ b/packages/video_player/video_player/example/pubspec.yaml @@ -16,7 +16,8 @@ dev_dependencies: sdk: flutter integration_test: path: ../../../integration_test - pedantic: ^1.8.0 + test: any + pedantic: ^1.10.0-nullsafety.1 flutter: uses-material-design: true diff --git a/packages/video_player/video_player/example/test_driver/integration_test.dart b/packages/video_player/video_player/example/test_driver/integration_test.dart index 7a2c21338786..7873abae2996 100644 --- a/packages/video_player/video_player/example/test_driver/integration_test.dart +++ b/packages/video_player/video_player/example/test_driver/integration_test.dart @@ -2,6 +2,9 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. +// TODO(egarciad): Remove once Flutter driver is migrated to null safety. +// @dart = 2.9 + import 'dart:async'; import 'dart:convert'; import 'dart:io'; diff --git a/packages/video_player/video_player/example/test_driver/video_player.dart b/packages/video_player/video_player/example/test_driver/video_player.dart new file mode 100644 index 000000000000..c1ced19e9b7e --- /dev/null +++ b/packages/video_player/video_player/example/test_driver/video_player.dart @@ -0,0 +1,14 @@ +// Copyright 2019, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// TODO(egarciad): Remove once Flutter driver is migrated to null safety. +// @dart = 2.9 + +import 'package:flutter_driver/driver_extension.dart'; +import 'package:video_player_example/main.dart' as app; + +void main() { + enableFlutterDriverExtension(); + app.main(); +} diff --git a/packages/video_player/video_player/example/test_driver/video_player_test.dart b/packages/video_player/video_player/example/test_driver/video_player_test.dart new file mode 100644 index 000000000000..fcbdbb274f7a --- /dev/null +++ b/packages/video_player/video_player/example/test_driver/video_player_test.dart @@ -0,0 +1,30 @@ +// Copyright 2019, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// TODO(egarciad): Remove once Flutter driver is migrated to null safety. +// @dart = 2.9 + +import 'dart:async'; +import 'package:flutter_driver/flutter_driver.dart'; +import 'package:test/test.dart'; + +Future main() async { + final FlutterDriver driver = await FlutterDriver.connect(); + tearDownAll(() async { + await driver.close(); + }); + + //TODO(cyanglaz): Use TabBar tabs to navigate between pages after https://github.com/flutter/flutter/issues/16991 is fixed. + //TODO(cyanglaz): Un-skip the test after https://github.com/flutter/flutter/issues/43012 is fixed + test('Push a page contains video and pop back, do not crash.', () async { + final SerializableFinder pushTab = find.byValueKey('push_tab'); + await driver.waitFor(pushTab); + await driver.tap(pushTab); + await driver.waitForAbsent(pushTab); + await driver.waitFor(find.byValueKey('home_page')); + await driver.waitUntilNoTransientCallbacks(); + final Health health = await driver.checkHealth(); + expect(health.status, HealthStatus.ok); + }, skip: 'Cirrus CI currently hangs while playing videos'); +} diff --git a/packages/video_player/video_player/ios/Classes/messages.h b/packages/video_player/video_player/ios/Classes/messages.h index 3c68b3dd24d4..84e8fc5e5cff 100644 --- a/packages/video_player/video_player/ios/Classes/messages.h +++ b/packages/video_player/video_player/ios/Classes/messages.h @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.7), do not edit directly. +// Autogenerated from Pigeon (v0.1.12), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @protocol FlutterBinaryMessenger; diff --git a/packages/video_player/video_player/ios/Classes/messages.m b/packages/video_player/video_player/ios/Classes/messages.m index e71f8b89254d..58ff7292d2b2 100644 --- a/packages/video_player/video_player/ios/Classes/messages.m +++ b/packages/video_player/video_player/ios/Classes/messages.m @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v0.1.7), do not edit directly. +// Autogenerated from Pigeon (v0.1.12), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "messages.h" #import @@ -7,6 +7,7 @@ #error File requires ARC to be enabled. #endif +#ifndef __clang_analyzer__ static NSDictionary *wrapResult(NSDictionary *result, FlutterError *error) { NSDictionary *errorDict = (NSDictionary *)[NSNull null]; if (error) { @@ -59,9 +60,9 @@ + (FLTTextureMessage *)fromMap:(NSDictionary *)dict { return result; } - (NSDictionary *)toMap { - return [NSDictionary - dictionaryWithObjectsAndKeys:(self.textureId != nil ? self.textureId : [NSNull null]), - @"textureId", nil]; + return + [NSDictionary dictionaryWithObjectsAndKeys:(self.textureId ? self.textureId : [NSNull null]), + @"textureId", nil]; } @end @@ -112,10 +113,9 @@ + (FLTLoopingMessage *)fromMap:(NSDictionary *)dict { } - (NSDictionary *)toMap { return [NSDictionary - dictionaryWithObjectsAndKeys:(self.textureId != nil ? self.textureId : [NSNull null]), - @"textureId", - (self.isLooping != nil ? self.isLooping : [NSNull null]), - @"isLooping", nil]; + dictionaryWithObjectsAndKeys:(self.textureId ? self.textureId : [NSNull null]), @"textureId", + (self.isLooping ? self.isLooping : [NSNull null]), @"isLooping", + nil]; } @end @@ -134,9 +134,8 @@ + (FLTVolumeMessage *)fromMap:(NSDictionary *)dict { } - (NSDictionary *)toMap { return [NSDictionary - dictionaryWithObjectsAndKeys:(self.textureId != nil ? self.textureId : [NSNull null]), - @"textureId", (self.volume != nil ? self.volume : [NSNull null]), - @"volume", nil]; + dictionaryWithObjectsAndKeys:(self.textureId ? self.textureId : [NSNull null]), @"textureId", + (self.volume ? self.volume : [NSNull null]), @"volume", nil]; } @end @@ -155,9 +154,8 @@ + (FLTPlaybackSpeedMessage *)fromMap:(NSDictionary *)dict { } - (NSDictionary *)toMap { return [NSDictionary - dictionaryWithObjectsAndKeys:(self.textureId != nil ? self.textureId : [NSNull null]), - @"textureId", (self.speed != nil ? self.speed : [NSNull null]), - @"speed", nil]; + dictionaryWithObjectsAndKeys:(self.textureId ? self.textureId : [NSNull null]), @"textureId", + (self.speed ? self.speed : [NSNull null]), @"speed", nil]; } @end @@ -176,10 +174,9 @@ + (FLTPositionMessage *)fromMap:(NSDictionary *)dict { } - (NSDictionary *)toMap { return [NSDictionary - dictionaryWithObjectsAndKeys:(self.textureId != nil ? self.textureId : [NSNull null]), - @"textureId", - (self.position != nil ? self.position : [NSNull null]), - @"position", nil]; + dictionaryWithObjectsAndKeys:(self.textureId ? self.textureId : [NSNull null]), @"textureId", + (self.position ? self.position : [NSNull null]), @"position", + nil]; } @end @@ -194,7 +191,7 @@ + (FLTMixWithOthersMessage *)fromMap:(NSDictionary *)dict { } - (NSDictionary *)toMap { return [NSDictionary - dictionaryWithObjectsAndKeys:(self.mixWithOthers != nil ? self.mixWithOthers : [NSNull null]), + dictionaryWithObjectsAndKeys:(self.mixWithOthers ? self.mixWithOthers : [NSNull null]), @"mixWithOthers", nil]; } @end @@ -365,3 +362,4 @@ void FLTVideoPlayerApiSetup(id binaryMessenger, id _parseCaptionsFromSubRipString(String file) { end: startAndEnd.end, text: text, ); - - if (newCaption.start != null && newCaption.end != null) { + if (newCaption.start != newCaption.end) { captions.add(newCaption); } } @@ -64,7 +63,7 @@ class _StartAndEnd { RegExp(_subRipTimeStamp + _subRipArrow + _subRipTimeStamp); if (!format.hasMatch(line)) { - return _StartAndEnd(null, null); + return _StartAndEnd(Duration.zero, Duration.zero); } final List times = line.split(_subRipArrow); @@ -84,7 +83,7 @@ class _StartAndEnd { // Duration(hours: 0, minutes: 1, seconds: 59, milliseconds: 084) Duration _parseSubRipTimestamp(String timestampString) { if (!RegExp(_subRipTimeStamp).hasMatch(timestampString)) { - return null; + return Duration.zero; } final List commaSections = timestampString.split(','); diff --git a/packages/video_player/video_player/lib/video_player.dart b/packages/video_player/video_player/lib/video_player.dart index ac1645085e36..6a2af76fa547 100644 --- a/packages/video_player/video_player/lib/video_player.dart +++ b/packages/video_player/video_player/lib/video_player.dart @@ -28,11 +28,12 @@ class VideoPlayerValue { /// Constructs a video with the given values. Only [duration] is required. The /// rest will initialize with default values when unset. VideoPlayerValue({ - @required this.duration, - this.size, - this.position = const Duration(), - this.caption = const Caption(), + required this.duration, + this.size = Size.zero, + this.position = Duration.zero, + this.caption = Caption.none, this.buffered = const [], + this.isInitialized = false, this.isPlaying = false, this.isLooping = false, this.isBuffering = false, @@ -41,17 +42,20 @@ class VideoPlayerValue { this.errorDescription, }); - /// Returns an instance with a `null` [Duration]. - VideoPlayerValue.uninitialized() : this(duration: null); + /// Returns an instance for a video that hasn't been loaded. + VideoPlayerValue.uninitialized() + : this(duration: Duration.zero, isInitialized: false); - /// Returns an instance with a `null` [Duration] and the given - /// [errorDescription]. + /// Returns an instance with the given [errorDescription]. VideoPlayerValue.erroneous(String errorDescription) - : this(duration: null, errorDescription: errorDescription); + : this( + duration: Duration.zero, + isInitialized: false, + errorDescription: errorDescription); /// The total duration of the video. /// - /// Is null when [initialized] is false. + /// The duration is [Duration.zero] if the video hasn't been initialized. final Duration duration; /// The current playback position. @@ -60,7 +64,7 @@ class VideoPlayerValue { /// The [Caption] that should be displayed based on the current [position]. /// /// This field will never be null. If there is no caption for the current - /// [position], this will be an empty [Caption] object. + /// [position], this will be a [Caption.none] object. final Caption caption; /// The currently buffered ranges. @@ -84,7 +88,7 @@ class VideoPlayerValue { /// A description of the error if present. /// /// If [hasError] is false this is [null]. - final String errorDescription; + final String? errorDescription; /// The [size] of the currently loaded video. /// @@ -92,7 +96,7 @@ class VideoPlayerValue { final Size size; /// Indicates whether or not the video has been loaded and is ready to play. - bool get initialized => duration != null; + final bool isInitialized; /// Indicates whether or not the video is in an error state. If this is true /// [errorDescription] should have information about the problem. @@ -101,7 +105,7 @@ class VideoPlayerValue { /// Returns [size.width] / [size.height] when size is non-null, or `1.0.` when /// size is null or the aspect ratio would be less than or equal to 0.0. double get aspectRatio { - if (size == null || size.width == 0 || size.height == 0) { + if (!isInitialized || size.width == 0 || size.height == 0) { return 1.0; } final double aspectRatio = size.width / size.height; @@ -114,17 +118,18 @@ class VideoPlayerValue { /// Returns a new instance that has the same values as this current instance, /// except for any overrides passed in as arguments to [copyWidth]. VideoPlayerValue copyWith({ - Duration duration, - Size size, - Duration position, - Caption caption, - List buffered, - bool isPlaying, - bool isLooping, - bool isBuffering, - double volume, - double playbackSpeed, - String errorDescription, + Duration? duration, + Size? size, + Duration? position, + Caption? caption, + List? buffered, + bool? isInitialized, + bool? isPlaying, + bool? isLooping, + bool? isBuffering, + double? volume, + double? playbackSpeed, + String? errorDescription, }) { return VideoPlayerValue( duration: duration ?? this.duration, @@ -132,6 +137,7 @@ class VideoPlayerValue { position: position ?? this.position, caption: caption ?? this.caption, buffered: buffered ?? this.buffered, + isInitialized: isInitialized ?? this.isInitialized, isPlaying: isPlaying ?? this.isPlaying, isLooping: isLooping ?? this.isLooping, isBuffering: isBuffering ?? this.isBuffering, @@ -149,6 +155,7 @@ class VideoPlayerValue { 'position: $position, ' 'caption: $caption, ' 'buffered: [${buffered.join(', ')}], ' + 'isInitialized: $isInitialized, ' 'isPlaying: $isPlaying, ' 'isLooping: $isLooping, ' 'isBuffering: $isBuffering, ' @@ -178,7 +185,7 @@ class VideoPlayerController extends ValueNotifier { {this.package, this.closedCaptionFile, this.videoPlayerOptions}) : dataSourceType = DataSourceType.asset, formatHint = null, - super(VideoPlayerValue(duration: null)); + super(VideoPlayerValue(duration: Duration.zero)); /// Constructs a [VideoPlayerController] playing a video from obtained from /// the network. @@ -191,7 +198,7 @@ class VideoPlayerController extends ValueNotifier { {this.formatHint, this.closedCaptionFile, this.videoPlayerOptions}) : dataSourceType = DataSourceType.network, package = null, - super(VideoPlayerValue(duration: null)); + super(VideoPlayerValue(duration: Duration.zero)); /// Constructs a [VideoPlayerController] playing a video from a file. /// @@ -203,9 +210,7 @@ class VideoPlayerController extends ValueNotifier { dataSourceType = DataSourceType.file, package = null, formatHint = null, - super(VideoPlayerValue(duration: null)); - - int _textureId; + super(VideoPlayerValue(duration: Duration.zero)); /// The URI to the video file. This will be in different formats depending on /// the [DataSourceType] of the original video. @@ -213,31 +218,36 @@ class VideoPlayerController extends ValueNotifier { /// **Android only**. Will override the platform's generic file format /// detection with whatever is set here. - final VideoFormat formatHint; + final VideoFormat? formatHint; /// Describes the type of data source this [VideoPlayerController] /// is constructed with. final DataSourceType dataSourceType; /// Provide additional configuration options (optional). Like setting the audio mode to mix - final VideoPlayerOptions videoPlayerOptions; + final VideoPlayerOptions? videoPlayerOptions; /// Only set for [asset] videos. The package that the asset was loaded from. - final String package; + final String? package; /// Optional field to specify a file containing the closed /// captioning. /// /// This future will be awaited and the file will be loaded when /// [initialize()] is called. - final Future closedCaptionFile; + final Future? closedCaptionFile; - ClosedCaptionFile _closedCaptionFile; - Timer _timer; + ClosedCaptionFile? _closedCaptionFile; + Timer? _timer; bool _isDisposed = false; - Completer _creatingCompleter; - StreamSubscription _eventSubscription; - _VideoAppLifeCycleObserver _lifeCycleObserver; + Completer? _creatingCompleter; + StreamSubscription? _eventSubscription; + late _VideoAppLifeCycleObserver _lifeCycleObserver; + + /// The id of a texture that hasn't been initialized. + @visibleForTesting + static const int kUninitializedTextureId = -1; + int _textureId = kUninitializedTextureId; /// This is just exposed for testing. It shouldn't be used by anyone depending /// on the plugin. @@ -250,7 +260,7 @@ class VideoPlayerController extends ValueNotifier { _lifeCycleObserver.initialize(); _creatingCompleter = Completer(); - DataSource dataSourceDescription; + late DataSource dataSourceDescription; switch (dataSourceType) { case DataSourceType.asset: dataSourceDescription = DataSource( @@ -276,11 +286,12 @@ class VideoPlayerController extends ValueNotifier { if (videoPlayerOptions?.mixWithOthers != null) { await _videoPlayerPlatform - .setMixWithOthers(videoPlayerOptions.mixWithOthers); + .setMixWithOthers(videoPlayerOptions!.mixWithOthers); } - _textureId = await _videoPlayerPlatform.create(dataSourceDescription); - _creatingCompleter.complete(null); + _textureId = (await _videoPlayerPlatform.create(dataSourceDescription)) ?? + kUninitializedTextureId; + _creatingCompleter!.complete(null); final Completer initializingCompleter = Completer(); void eventListener(VideoEvent event) { @@ -293,6 +304,7 @@ class VideoPlayerController extends ValueNotifier { value = value.copyWith( duration: event.duration, size: event.size, + isInitialized: event.duration != null, ); initializingCompleter.complete(null); _applyLooping(); @@ -325,8 +337,8 @@ class VideoPlayerController extends ValueNotifier { } void errorListener(Object obj) { - final PlatformException e = obj; - value = VideoPlayerValue.erroneous(e.message); + final PlatformException e = obj as PlatformException; + value = VideoPlayerValue.erroneous(e.message!); _timer?.cancel(); if (!initializingCompleter.isCompleted) { initializingCompleter.completeError(obj); @@ -342,7 +354,7 @@ class VideoPlayerController extends ValueNotifier { @override Future dispose() async { if (_creatingCompleter != null) { - await _creatingCompleter.future; + await _creatingCompleter!.future; if (!_isDisposed) { _isDisposed = true; _timer?.cancel(); @@ -379,14 +391,14 @@ class VideoPlayerController extends ValueNotifier { } Future _applyLooping() async { - if (!value.initialized || _isDisposed) { + if (!value.isInitialized || _isDisposed) { return; } await _videoPlayerPlatform.setLooping(_textureId, value.isLooping); } Future _applyPlayPause() async { - if (!value.initialized || _isDisposed) { + if (!value.isInitialized || _isDisposed) { return; } if (value.isPlaying) { @@ -400,8 +412,8 @@ class VideoPlayerController extends ValueNotifier { if (_isDisposed) { return; } - final Duration newPosition = await position; - if (_isDisposed) { + final Duration? newPosition = await position; + if (newPosition == null) { return; } _updatePosition(newPosition); @@ -419,14 +431,14 @@ class VideoPlayerController extends ValueNotifier { } Future _applyVolume() async { - if (!value.initialized || _isDisposed) { + if (!value.isInitialized || _isDisposed) { return; } await _videoPlayerPlatform.setVolume(_textureId, value.volume); } Future _applyPlaybackSpeed() async { - if (!value.initialized || _isDisposed) { + if (!value.isInitialized || _isDisposed) { return; } @@ -442,7 +454,7 @@ class VideoPlayerController extends ValueNotifier { } /// The position in the current video. - Future get position async { + Future get position async { if (_isDisposed) { return null; } @@ -519,17 +531,17 @@ class VideoPlayerController extends ValueNotifier { /// [Caption]. Caption _getCaptionAt(Duration position) { if (_closedCaptionFile == null) { - return Caption(); + return Caption.none; } // TODO: This would be more efficient as a binary search. - for (final caption in _closedCaptionFile.captions) { + for (final caption in _closedCaptionFile!.captions) { if (caption.start <= position && caption.end >= position) { return caption; } } - return Caption(); + return Caption.none; } void _updatePosition(Duration position) { @@ -545,7 +557,7 @@ class _VideoAppLifeCycleObserver extends Object with WidgetsBindingObserver { final VideoPlayerController _controller; void initialize() { - WidgetsBinding.instance.addObserver(this); + WidgetsBinding.instance!.addObserver(this); } @override @@ -565,7 +577,7 @@ class _VideoAppLifeCycleObserver extends Object with WidgetsBindingObserver { } void dispose() { - WidgetsBinding.instance.removeObserver(this); + WidgetsBinding.instance!.removeObserver(this); } } @@ -594,8 +606,9 @@ class _VideoPlayerState extends State { }; } - VoidCallback _listener; - int _textureId; + late VoidCallback _listener; + + late int _textureId; @override void initState() { @@ -622,7 +635,7 @@ class _VideoPlayerState extends State { @override Widget build(BuildContext context) { - return _textureId == null + return _textureId == VideoPlayerController.kUninitializedTextureId ? Container() : _videoPlayerPlatform.buildView(_textureId); } @@ -646,7 +659,7 @@ class VideoProgressColors { /// [backgroundColor] defaults to gray at 50% opacity. This is the background /// color behind both [playedColor] and [bufferedColor] to denote the total /// size of the video compared to either of those values. - VideoProgressColors({ + const VideoProgressColors({ this.playedColor = const Color.fromRGBO(255, 0, 0, 0.7), this.bufferedColor = const Color.fromRGBO(50, 50, 200, 0.2), this.backgroundColor = const Color.fromRGBO(200, 200, 200, 0.5), @@ -670,8 +683,8 @@ class VideoProgressColors { class _VideoScrubber extends StatefulWidget { _VideoScrubber({ - @required this.child, - @required this.controller, + required this.child, + required this.controller, }); final Widget child; @@ -689,7 +702,7 @@ class _VideoScrubberState extends State<_VideoScrubber> { @override Widget build(BuildContext context) { void seekToRelativePosition(Offset globalPosition) { - final RenderBox box = context.findRenderObject(); + final RenderBox box = context.findRenderObject() as RenderBox; final Offset tapPos = box.globalToLocal(globalPosition); final double relative = tapPos.dx / box.size.width; final Duration position = controller.value.duration * relative; @@ -700,7 +713,7 @@ class _VideoScrubberState extends State<_VideoScrubber> { behavior: HitTestBehavior.opaque, child: widget.child, onHorizontalDragStart: (DragStartDetails details) { - if (!controller.value.initialized) { + if (!controller.value.isInitialized) { return; } _controllerWasPlaying = controller.value.isPlaying; @@ -709,7 +722,7 @@ class _VideoScrubberState extends State<_VideoScrubber> { } }, onHorizontalDragUpdate: (DragUpdateDetails details) { - if (!controller.value.initialized) { + if (!controller.value.isInitialized) { return; } seekToRelativePosition(details.globalPosition); @@ -720,7 +733,7 @@ class _VideoScrubberState extends State<_VideoScrubber> { } }, onTapDown: (TapDownDetails details) { - if (!controller.value.initialized) { + if (!controller.value.isInitialized) { return; } seekToRelativePosition(details.globalPosition); @@ -745,10 +758,10 @@ class VideoProgressIndicator extends StatefulWidget { /// to `top: 5.0`. VideoProgressIndicator( this.controller, { - VideoProgressColors colors, - this.allowScrubbing, + this.colors = const VideoProgressColors(), + required this.allowScrubbing, this.padding = const EdgeInsets.only(top: 5.0), - }) : colors = colors ?? VideoProgressColors(); + }); /// The [VideoPlayerController] that actually associates a video with this /// widget. @@ -785,7 +798,7 @@ class _VideoProgressIndicatorState extends State { }; } - VoidCallback listener; + late VoidCallback listener; VideoPlayerController get controller => widget.controller; @@ -806,7 +819,7 @@ class _VideoProgressIndicatorState extends State { @override Widget build(BuildContext context) { Widget progressIndicator; - if (controller.value.initialized) { + if (controller.value.isInitialized) { final int duration = controller.value.duration.inMilliseconds; final int position = controller.value.position.inMilliseconds; @@ -878,17 +891,17 @@ class ClosedCaption extends StatelessWidget { /// [VideoPlayerValue.caption]. /// /// If [text] is null, nothing will be displayed. - const ClosedCaption({Key key, this.text, this.textStyle}) : super(key: key); + const ClosedCaption({Key? key, this.text, this.textStyle}) : super(key: key); /// The text that will be shown in the closed caption, or null if no caption /// should be shown. - final String text; + final String? text; /// Specifies how the text in the closed caption should look. /// /// If null, defaults to [DefaultTextStyle.of(context).style] with size 36 /// font colored white. - final TextStyle textStyle; + final TextStyle? textStyle; @override Widget build(BuildContext context) { @@ -913,7 +926,7 @@ class ClosedCaption extends StatelessWidget { ), child: Padding( padding: EdgeInsets.symmetric(horizontal: 2.0), - child: Text(text, style: effectiveTextStyle), + child: Text(text!, style: effectiveTextStyle), ), ), ), diff --git a/packages/video_player/video_player/pigeons/messages.dart b/packages/video_player/video_player/pigeons/messages.dart index 427aea279071..f1771afecb45 100644 --- a/packages/video_player/video_player/pigeons/messages.dart +++ b/packages/video_player/video_player/pigeons/messages.dart @@ -1,3 +1,5 @@ +// @dart = 2.9 + import 'package:pigeon/pigeon_lib.dart'; class TextureMessage { diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index fa55ba43b945..cfbc4c65c1de 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -1,7 +1,10 @@ name: video_player description: Flutter plugin for displaying inline video with other Flutter widgets on Android, iOS, and web. -version: 1.0.2 +# 0.10.y+z is compatible with 1.0.0, if you land a breaking change bump +# the version to 2.0.0. +# See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 +version: 2.0.0-nullsafety.3 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player flutter: @@ -16,15 +19,15 @@ flutter: default_package: video_player_web dependencies: - meta: ^1.0.5 - video_player_platform_interface: ^2.2.0 + meta: ^1.3.0-nullsafety.3 + video_player_platform_interface: ^3.0.0-nullsafety.3 # The design on https://flutter.dev/go/federated-plugins was to leave # this constraint as "any". We cannot do it right now as it fails pub publish # validation, so we set a ^ constraint. # TODO(amirh): Revisit this (either update this part in the design or the pub tool). # https://github.com/flutter/flutter/issues/46264 - video_player_web: ">=0.1.4 <2.0.0" + video_player_web: ^2.0.0-nullsafety.1 flutter: sdk: flutter @@ -32,9 +35,9 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 pigeon: 0.1.7 environment: - sdk: ">=2.8.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13+hotfix.5" diff --git a/packages/video_player/video_player/test/sub_rip_file_test.dart b/packages/video_player/video_player/test/sub_rip_file_test.dart index cf25ff73e438..2b9803d8275e 100644 --- a/packages/video_player/video_player/test/sub_rip_file_test.dart +++ b/packages/video_player/video_player/test/sub_rip_file_test.dart @@ -108,6 +108,6 @@ This one is valid 3 00:01:54,724 --> 00:01:6,760 -This one should be ignored because the +This one should be ignored because the ned time is missing a digit. '''; diff --git a/packages/video_player/video_player/test/video_player_initialization_test.dart b/packages/video_player/video_player/test/video_player_initialization_test.dart index 231c399bb8fe..1a09ed9f718c 100644 --- a/packages/video_player/video_player/test/video_player_initialization_test.dart +++ b/packages/video_player/video_player/test/video_player_initialization_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 - import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:video_player/video_player.dart'; diff --git a/packages/video_player/video_player/test/video_player_test.dart b/packages/video_player/video_player/test/video_player_test.dart index a7b23c3b1f27..3e9800f2b68e 100644 --- a/packages/video_player/video_player/test/video_player_test.dart +++ b/packages/video_player/video_player/test/video_player_test.dart @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// @dart = 2.8 - import 'dart:async'; import 'dart:io'; @@ -18,7 +16,7 @@ import 'package:video_player_platform_interface/video_player_platform_interface. class FakeController extends ValueNotifier implements VideoPlayerController { - FakeController() : super(VideoPlayerValue(duration: null)); + FakeController() : super(VideoPlayerValue(duration: Duration.zero)); @override Future dispose() async { @@ -26,7 +24,7 @@ class FakeController extends ValueNotifier } @override - int textureId; + int textureId = VideoPlayerController.kUninitializedTextureId; @override String get dataSource => ''; @@ -35,7 +33,7 @@ class FakeController extends ValueNotifier DataSourceType get dataSourceType => DataSourceType.file; @override - String get package => null; + String get package => ''; @override Future get position async => value.position; @@ -62,13 +60,13 @@ class FakeController extends ValueNotifier Future setLooping(bool looping) async {} @override - VideoFormat get formatHint => null; + VideoFormat? get formatHint => null; @override Future get closedCaptionFile => _loadClosedCaption(); @override - VideoPlayerOptions get videoPlayerOptions => null; + VideoPlayerOptions? get videoPlayerOptions => null; } Future _loadClosedCaption() async => @@ -80,11 +78,13 @@ class _FakeClosedCaptionFile extends ClosedCaptionFile { return [ Caption( text: 'one', + number: 0, start: Duration(milliseconds: 100), end: Duration(milliseconds: 200), ), Caption( text: 'two', + number: 1, start: Duration(milliseconds: 300), end: Duration(milliseconds: 400), ), @@ -101,6 +101,7 @@ void main() { controller.textureId = 123; controller.value = controller.value.copyWith( duration: const Duration(milliseconds: 100), + isInitialized: true, ); await tester.pump(); @@ -133,8 +134,8 @@ void main() { await tester.pumpWidget(MaterialApp(home: ClosedCaption(text: text))); final Text textWidget = tester.widget(find.text(text)); - expect(textWidget.style.fontSize, 36.0); - expect(textWidget.style.color, Colors.white); + expect(textWidget.style!.fontSize, 36.0); + expect(textWidget.style!.color, Colors.white); }); testWidgets('uses given text and style', (WidgetTester tester) async { @@ -149,7 +150,7 @@ void main() { expect(find.text(text), findsOneWidget); final Text textWidget = tester.widget(find.text(text)); - expect(textWidget.style.fontSize, textStyle.fontSize); + expect(textWidget.style!.fontSize, textStyle.fontSize); }); testWidgets('handles null text', (WidgetTester tester) async { @@ -173,7 +174,7 @@ void main() { }); group('VideoPlayerController', () { - FakeVideoPlayerPlatform fakeVideoPlayerPlatform; + late FakeVideoPlayerPlatform fakeVideoPlayerPlatform; setUp(() { fakeVideoPlayerPlatform = FakeVideoPlayerPlatform(); @@ -221,7 +222,7 @@ void main() { 'http://testing.com/invalid_url', ); try { - dynamic error; + late dynamic error; fakeVideoPlayerPlatform.forceInitError = true; await controller.initialize().catchError((dynamic e) => error = e); final PlatformException platformEx = error; @@ -245,13 +246,14 @@ void main() { final VideoPlayerController controller = VideoPlayerController.network( 'https://127.0.0.1', ); - expect(controller.textureId, isNull); + expect( + controller.textureId, VideoPlayerController.kUninitializedTextureId); expect(await controller.position, const Duration(seconds: 0)); await controller.initialize(); await controller.dispose(); - expect(controller.textureId, isNotNull); + expect(controller.textureId, 0); expect(await controller.position, isNull); }); @@ -390,19 +392,19 @@ void main() { await controller.initialize(); expect(controller.value.position, const Duration()); - expect(controller.value.caption.text, isNull); + expect(controller.value.caption.text, ''); await controller.seekTo(const Duration(milliseconds: 100)); expect(controller.value.caption.text, 'one'); await controller.seekTo(const Duration(milliseconds: 250)); - expect(controller.value.caption.text, isNull); + expect(controller.value.caption.text, ''); await controller.seekTo(const Duration(milliseconds: 300)); expect(controller.value.caption.text, 'two'); await controller.seekTo(const Duration(milliseconds: 500)); - expect(controller.value.caption.text, isNull); + expect(controller.value.caption.text, ''); await controller.seekTo(const Duration(milliseconds: 300)); expect(controller.value.caption.text, 'two'); @@ -419,8 +421,7 @@ void main() { await controller.play(); expect(controller.value.isPlaying, isTrue); final FakeVideoEventStream fakeVideoEventStream = - fakeVideoPlayerPlatform.streams[controller.textureId]; - assert(fakeVideoEventStream != null); + fakeVideoPlayerPlatform.streams[controller.textureId]!; fakeVideoEventStream.eventsChannel .sendEvent({'event': 'completed'}); @@ -438,8 +439,7 @@ void main() { expect(controller.value.isBuffering, false); expect(controller.value.buffered, isEmpty); final FakeVideoEventStream fakeVideoEventStream = - fakeVideoPlayerPlatform.streams[controller.textureId]; - assert(fakeVideoEventStream != null); + fakeVideoPlayerPlatform.streams[controller.textureId]!; fakeVideoEventStream.eventsChannel .sendEvent({'event': 'bufferingStart'}); @@ -496,9 +496,9 @@ void main() { test('uninitialized()', () { final VideoPlayerValue uninitialized = VideoPlayerValue.uninitialized(); - expect(uninitialized.duration, isNull); - expect(uninitialized.position, equals(const Duration(seconds: 0))); - expect(uninitialized.caption, equals(const Caption())); + expect(uninitialized.duration, equals(Duration.zero)); + expect(uninitialized.position, equals(Duration.zero)); + expect(uninitialized.caption, equals(Caption.none)); expect(uninitialized.buffered, isEmpty); expect(uninitialized.isPlaying, isFalse); expect(uninitialized.isLooping, isFalse); @@ -506,9 +506,8 @@ void main() { expect(uninitialized.volume, 1.0); expect(uninitialized.playbackSpeed, 1.0); expect(uninitialized.errorDescription, isNull); - expect(uninitialized.size, isNull); - expect(uninitialized.size, isNull); - expect(uninitialized.initialized, isFalse); + expect(uninitialized.size, equals(Size.zero)); + expect(uninitialized.isInitialized, isFalse); expect(uninitialized.hasError, isFalse); expect(uninitialized.aspectRatio, 1.0); }); @@ -517,9 +516,9 @@ void main() { const String errorMessage = 'foo'; final VideoPlayerValue error = VideoPlayerValue.erroneous(errorMessage); - expect(error.duration, isNull); - expect(error.position, equals(const Duration(seconds: 0))); - expect(error.caption, equals(const Caption())); + expect(error.duration, equals(Duration.zero)); + expect(error.position, equals(Duration.zero)); + expect(error.caption, equals(Caption.none)); expect(error.buffered, isEmpty); expect(error.isPlaying, isFalse); expect(error.isLooping, isFalse); @@ -527,9 +526,8 @@ void main() { expect(error.volume, 1.0); expect(error.playbackSpeed, 1.0); expect(error.errorDescription, errorMessage); - expect(error.size, isNull); - expect(error.size, isNull); - expect(error.initialized, isFalse); + expect(error.size, equals(Size.zero)); + expect(error.isInitialized, isFalse); expect(error.hasError, isTrue); expect(error.aspectRatio, 1.0); }); @@ -538,10 +536,12 @@ void main() { const Duration duration = Duration(seconds: 5); const Size size = Size(400, 300); const Duration position = Duration(seconds: 1); - const Caption caption = Caption(text: 'foo'); + const Caption caption = Caption( + text: 'foo', number: 0, start: Duration.zero, end: Duration.zero); final List buffered = [ DurationRange(const Duration(seconds: 0), const Duration(seconds: 4)) ]; + const bool isInitialized = true; const bool isPlaying = true; const bool isLooping = true; const bool isBuffering = true; @@ -554,6 +554,7 @@ void main() { position: position, caption: caption, buffered: buffered, + isInitialized: isInitialized, isPlaying: isPlaying, isLooping: isLooping, isBuffering: isBuffering, @@ -568,6 +569,7 @@ void main() { 'position: 0:00:01.000000, ' 'caption: Caption(number: null, start: null, end: null, text: foo), ' 'buffered: [DurationRange(start: 0:00:00.000000, end: 0:00:04.000000)], ' + 'isInitialized: true, ' 'isPlaying: true, ' 'isLooping: true, ' 'isBuffering: true, ' @@ -586,15 +588,16 @@ void main() { group('aspectRatio', () { test('640x480 -> 4:3', () { final value = VideoPlayerValue( + isInitialized: true, size: Size(640, 480), duration: Duration(seconds: 1), ); expect(value.aspectRatio, 4 / 3); }); - test('null size -> 1.0', () { + test('no size -> 1.0', () { final value = VideoPlayerValue( - size: null, + isInitialized: true, duration: Duration(seconds: 1), ); expect(value.aspectRatio, 1.0); @@ -602,6 +605,7 @@ void main() { test('height = 0 -> 1.0', () { final value = VideoPlayerValue( + isInitialized: true, size: Size(640, 0), duration: Duration(seconds: 1), ); @@ -610,6 +614,7 @@ void main() { test('width = 0 -> 1.0', () { final value = VideoPlayerValue( + isInitialized: true, size: Size(0, 480), duration: Duration(seconds: 1), ); @@ -618,6 +623,7 @@ void main() { test('negative aspect ratio -> 1.0', () { final value = VideoPlayerValue( + isInitialized: true, size: Size(640, -480), duration: Duration(seconds: 1), ); @@ -646,7 +652,7 @@ void main() { File(''), videoPlayerOptions: VideoPlayerOptions(mixWithOthers: true)); await controller.initialize(); - expect(controller.videoPlayerOptions.mixWithOthers, true); + expect(controller.videoPlayerOptions!.mixWithOthers, true); }); } @@ -706,7 +712,7 @@ class FakeVideoPlayerPlatform extends TestHostVideoPlayerApi { @override void seekTo(PositionMessage arg) { calls.add('seekTo'); - _positions[arg.textureId] = Duration(milliseconds: arg.position); + _positions[arg.textureId!] = Duration(milliseconds: arg.position!); } @override @@ -742,7 +748,7 @@ class FakeVideoEventStream { int height; Duration duration; bool initWithError; - FakeEventsChannel eventsChannel; + late FakeEventsChannel eventsChannel; void onListen() { if (!initWithError) { @@ -764,7 +770,7 @@ class FakeEventsChannel { eventsMethodChannel.setMockMethodCallHandler(onMethodCall); } - MethodChannel eventsMethodChannel; + late MethodChannel eventsMethodChannel; VoidCallback onListen; Future onMethodCall(MethodCall call) { @@ -780,7 +786,7 @@ class FakeEventsChannel { _sendMessage(const StandardMethodCodec().encodeSuccessEnvelope(event)); } - void sendError(String code, [String message, dynamic details]) { + void sendError(String code, [String? message, dynamic details]) { _sendMessage(const StandardMethodCodec().encodeErrorEnvelope( code: code, message: message, @@ -794,6 +800,6 @@ class FakeEventsChannel { // available on all the versions of Flutter that we test. // ignore: deprecated_member_use defaultBinaryMessenger.handlePlatformMessage( - eventsMethodChannel.name, data, (ByteData data) {}); + eventsMethodChannel.name, data, (ByteData? data) {}); } } diff --git a/packages/video_player/video_player_platform_interface/CHANGELOG.md b/packages/video_player/video_player_platform_interface/CHANGELOG.md index fea2357a7ea2..446fffd9a60e 100644 --- a/packages/video_player/video_player_platform_interface/CHANGELOG.md +++ b/packages/video_player/video_player_platform_interface/CHANGELOG.md @@ -1,3 +1,19 @@ +## 3.0.0-nullsafety.3 + +* `messages.dart` sets Dart `2.12`. + +## 3.0.0-nullsafety.2 + +* Bump Dart SDK to support null safety. + +## 3.0.0-nullsafety.1 + +* Make DataSource's `uri` parameter nullable. + +## 3.0.0-nullsafety + +* Migrate to null safety. + ## 2.2.1 * Update Flutter SDK constraint. diff --git a/packages/video_player/video_player_platform_interface/analysis_options.yaml b/packages/video_player/video_player_platform_interface/analysis_options.yaml new file mode 100644 index 000000000000..3d64bb57fe49 --- /dev/null +++ b/packages/video_player/video_player_platform_interface/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/video_player/video_player_platform_interface/lib/messages.dart b/packages/video_player/video_player_platform_interface/lib/messages.dart index bfe65f1fd2ea..252cad6993ca 100644 --- a/packages/video_player/video_player_platform_interface/lib/messages.dart +++ b/packages/video_player/video_player_platform_interface/lib/messages.dart @@ -1,13 +1,13 @@ -// Autogenerated from Pigeon (v0.1.7), do not edit directly. +// Autogenerated from Pigeon (v0.1.12), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import -// @dart = 2.8 +// @dart = 2.12 import 'dart:async'; import 'package:flutter/services.dart'; import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List; class TextureMessage { - int textureId; + int? textureId; // ignore: unused_element Map _toMap() { final Map pigeonMap = {}; @@ -17,9 +17,6 @@ class TextureMessage { // ignore: unused_element static TextureMessage _fromMap(Map pigeonMap) { - if (pigeonMap == null) { - return null; - } final TextureMessage result = TextureMessage(); result.textureId = pigeonMap['textureId']; return result; @@ -27,10 +24,10 @@ class TextureMessage { } class CreateMessage { - String asset; - String uri; - String packageName; - String formatHint; + String? asset; + String? uri; + String? packageName; + String? formatHint; // ignore: unused_element Map _toMap() { final Map pigeonMap = {}; @@ -43,9 +40,6 @@ class CreateMessage { // ignore: unused_element static CreateMessage _fromMap(Map pigeonMap) { - if (pigeonMap == null) { - return null; - } final CreateMessage result = CreateMessage(); result.asset = pigeonMap['asset']; result.uri = pigeonMap['uri']; @@ -56,8 +50,8 @@ class CreateMessage { } class LoopingMessage { - int textureId; - bool isLooping; + int? textureId; + bool? isLooping; // ignore: unused_element Map _toMap() { final Map pigeonMap = {}; @@ -68,9 +62,6 @@ class LoopingMessage { // ignore: unused_element static LoopingMessage _fromMap(Map pigeonMap) { - if (pigeonMap == null) { - return null; - } final LoopingMessage result = LoopingMessage(); result.textureId = pigeonMap['textureId']; result.isLooping = pigeonMap['isLooping']; @@ -79,8 +70,8 @@ class LoopingMessage { } class VolumeMessage { - int textureId; - double volume; + int? textureId; + double? volume; // ignore: unused_element Map _toMap() { final Map pigeonMap = {}; @@ -91,9 +82,6 @@ class VolumeMessage { // ignore: unused_element static VolumeMessage _fromMap(Map pigeonMap) { - if (pigeonMap == null) { - return null; - } final VolumeMessage result = VolumeMessage(); result.textureId = pigeonMap['textureId']; result.volume = pigeonMap['volume']; @@ -102,8 +90,8 @@ class VolumeMessage { } class PlaybackSpeedMessage { - int textureId; - double speed; + int? textureId; + double? speed; // ignore: unused_element Map _toMap() { final Map pigeonMap = {}; @@ -114,9 +102,6 @@ class PlaybackSpeedMessage { // ignore: unused_element static PlaybackSpeedMessage _fromMap(Map pigeonMap) { - if (pigeonMap == null) { - return null; - } final PlaybackSpeedMessage result = PlaybackSpeedMessage(); result.textureId = pigeonMap['textureId']; result.speed = pigeonMap['speed']; @@ -125,8 +110,8 @@ class PlaybackSpeedMessage { } class PositionMessage { - int textureId; - int position; + int? textureId; + int? position; // ignore: unused_element Map _toMap() { final Map pigeonMap = {}; @@ -137,9 +122,6 @@ class PositionMessage { // ignore: unused_element static PositionMessage _fromMap(Map pigeonMap) { - if (pigeonMap == null) { - return null; - } final PositionMessage result = PositionMessage(); result.textureId = pigeonMap['textureId']; result.position = pigeonMap['position']; @@ -148,7 +130,7 @@ class PositionMessage { } class MixWithOthersMessage { - bool mixWithOthers; + bool? mixWithOthers; // ignore: unused_element Map _toMap() { final Map pigeonMap = {}; @@ -158,9 +140,6 @@ class MixWithOthersMessage { // ignore: unused_element static MixWithOthersMessage _fromMap(Map pigeonMap) { - if (pigeonMap == null) { - return null; - } final MixWithOthersMessage result = MixWithOthersMessage(); result.mixWithOthers = pigeonMap['mixWithOthers']; return result; @@ -172,7 +151,7 @@ class VideoPlayerApi { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.initialize', StandardMessageCodec()); - final Map replyMap = await channel.send(null); + final Map? replyMap = await channel.send(null); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -194,7 +173,7 @@ class VideoPlayerApi { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.create', StandardMessageCodec()); - final Map replyMap = await channel.send(requestMap); + final Map? replyMap = await channel.send(requestMap); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -216,7 +195,7 @@ class VideoPlayerApi { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.dispose', StandardMessageCodec()); - final Map replyMap = await channel.send(requestMap); + final Map? replyMap = await channel.send(requestMap); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -238,7 +217,7 @@ class VideoPlayerApi { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.setLooping', StandardMessageCodec()); - final Map replyMap = await channel.send(requestMap); + final Map? replyMap = await channel.send(requestMap); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -260,7 +239,7 @@ class VideoPlayerApi { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.setVolume', StandardMessageCodec()); - final Map replyMap = await channel.send(requestMap); + final Map? replyMap = await channel.send(requestMap); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -283,7 +262,7 @@ class VideoPlayerApi { 'dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed', StandardMessageCodec()); - final Map replyMap = await channel.send(requestMap); + final Map? replyMap = await channel.send(requestMap); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -305,7 +284,7 @@ class VideoPlayerApi { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.play', StandardMessageCodec()); - final Map replyMap = await channel.send(requestMap); + final Map? replyMap = await channel.send(requestMap); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -327,7 +306,7 @@ class VideoPlayerApi { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.position', StandardMessageCodec()); - final Map replyMap = await channel.send(requestMap); + final Map? replyMap = await channel.send(requestMap); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -349,7 +328,7 @@ class VideoPlayerApi { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.seekTo', StandardMessageCodec()); - final Map replyMap = await channel.send(requestMap); + final Map? replyMap = await channel.send(requestMap); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -371,7 +350,7 @@ class VideoPlayerApi { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.pause', StandardMessageCodec()); - final Map replyMap = await channel.send(requestMap); + final Map? replyMap = await channel.send(requestMap); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -394,7 +373,7 @@ class VideoPlayerApi { 'dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers', StandardMessageCodec()); - final Map replyMap = await channel.send(requestMap); + final Map? replyMap = await channel.send(requestMap); if (replyMap == null) { throw PlatformException( code: 'channel-error', @@ -424,131 +403,175 @@ abstract class TestHostVideoPlayerApi { void seekTo(PositionMessage arg); void pause(TextureMessage arg); void setMixWithOthers(MixWithOthersMessage arg); - static void setup(TestHostVideoPlayerApi api) { + static void setup(TestHostVideoPlayerApi? api) { { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.initialize', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - api.initialize(); - return {}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + api.initialize(); + return {}; + }); + } } { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.create', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - final Map mapMessage = - message as Map; - final CreateMessage input = CreateMessage._fromMap(mapMessage); - final TextureMessage output = api.create(input); - return {'result': output._toMap()}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + final Map mapMessage = + message as Map; + final CreateMessage input = CreateMessage._fromMap(mapMessage); + final TextureMessage output = api.create(input); + return {'result': output._toMap()}; + }); + } } { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.dispose', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - final Map mapMessage = - message as Map; - final TextureMessage input = TextureMessage._fromMap(mapMessage); - api.dispose(input); - return {}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + final Map mapMessage = + message as Map; + final TextureMessage input = TextureMessage._fromMap(mapMessage); + api.dispose(input); + return {}; + }); + } } { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.setLooping', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - final Map mapMessage = - message as Map; - final LoopingMessage input = LoopingMessage._fromMap(mapMessage); - api.setLooping(input); - return {}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + final Map mapMessage = + message as Map; + final LoopingMessage input = LoopingMessage._fromMap(mapMessage); + api.setLooping(input); + return {}; + }); + } } { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.setVolume', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - final Map mapMessage = - message as Map; - final VolumeMessage input = VolumeMessage._fromMap(mapMessage); - api.setVolume(input); - return {}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + final Map mapMessage = + message as Map; + final VolumeMessage input = VolumeMessage._fromMap(mapMessage); + api.setVolume(input); + return {}; + }); + } } { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.setPlaybackSpeed', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - final Map mapMessage = - message as Map; - final PlaybackSpeedMessage input = - PlaybackSpeedMessage._fromMap(mapMessage); - api.setPlaybackSpeed(input); - return {}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + final Map mapMessage = + message as Map; + final PlaybackSpeedMessage input = + PlaybackSpeedMessage._fromMap(mapMessage); + api.setPlaybackSpeed(input); + return {}; + }); + } } { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.play', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - final Map mapMessage = - message as Map; - final TextureMessage input = TextureMessage._fromMap(mapMessage); - api.play(input); - return {}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + final Map mapMessage = + message as Map; + final TextureMessage input = TextureMessage._fromMap(mapMessage); + api.play(input); + return {}; + }); + } } { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.position', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - final Map mapMessage = - message as Map; - final TextureMessage input = TextureMessage._fromMap(mapMessage); - final PositionMessage output = api.position(input); - return {'result': output._toMap()}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + final Map mapMessage = + message as Map; + final TextureMessage input = TextureMessage._fromMap(mapMessage); + final PositionMessage output = api.position(input); + return {'result': output._toMap()}; + }); + } } { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.seekTo', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - final Map mapMessage = - message as Map; - final PositionMessage input = PositionMessage._fromMap(mapMessage); - api.seekTo(input); - return {}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + final Map mapMessage = + message as Map; + final PositionMessage input = PositionMessage._fromMap(mapMessage); + api.seekTo(input); + return {}; + }); + } } { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.pause', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - final Map mapMessage = - message as Map; - final TextureMessage input = TextureMessage._fromMap(mapMessage); - api.pause(input); - return {}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + final Map mapMessage = + message as Map; + final TextureMessage input = TextureMessage._fromMap(mapMessage); + api.pause(input); + return {}; + }); + } } { const BasicMessageChannel channel = BasicMessageChannel( 'dev.flutter.pigeon.VideoPlayerApi.setMixWithOthers', StandardMessageCodec()); - channel.setMockMessageHandler((dynamic message) async { - final Map mapMessage = - message as Map; - final MixWithOthersMessage input = - MixWithOthersMessage._fromMap(mapMessage); - api.setMixWithOthers(input); - return {}; - }); + if (api == null) { + channel.setMockMessageHandler(null); + } else { + channel.setMockMessageHandler((dynamic message) async { + final Map mapMessage = + message as Map; + final MixWithOthersMessage input = + MixWithOthersMessage._fromMap(mapMessage); + api.setMixWithOthers(input); + return {}; + }); + } } } } diff --git a/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart b/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart index 0ea443fb6e12..9b007d00d6a9 100644 --- a/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart +++ b/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart @@ -26,7 +26,7 @@ class MethodChannelVideoPlayer extends VideoPlayerPlatform { } @override - Future create(DataSource dataSource) async { + Future create(DataSource dataSource) async { CreateMessage message = CreateMessage(); switch (dataSource.sourceType) { @@ -91,7 +91,7 @@ class MethodChannelVideoPlayer extends VideoPlayerPlatform { Future getPosition(int textureId) async { PositionMessage response = await _api.position(TextureMessage()..textureId = textureId); - return Duration(milliseconds: response.position); + return Duration(milliseconds: response.position!); } @override diff --git a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart index 2757fb135af6..f2bc00205acc 100644 --- a/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart +++ b/packages/video_player/video_player_platform_interface/lib/video_player_platform_interface.dart @@ -7,7 +7,7 @@ import 'dart:ui'; import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; -import 'package:meta/meta.dart' show required, visibleForTesting; +import 'package:meta/meta.dart' show visibleForTesting; import 'method_channel_video_player.dart'; @@ -66,7 +66,7 @@ abstract class VideoPlayerPlatform { } /// Creates an instance of a video player and returns its textureId. - Future create(DataSource dataSource) { + Future create(DataSource dataSource) { throw UnimplementedError('create() has not been implemented.'); } @@ -146,7 +146,7 @@ class DataSource { /// The [package] argument must be non-null when the asset comes from a /// package and null otherwise. DataSource({ - @required this.sourceType, + required this.sourceType, this.uri, this.formatHint, this.asset, @@ -163,18 +163,18 @@ class DataSource { /// /// This will be in different formats depending on the [DataSourceType] of /// the original video. - final String uri; + final String? uri; /// **Android only**. Will override the platform's generic file format /// detection with whatever is set here. - final VideoFormat formatHint; + final VideoFormat? formatHint; /// The name of the asset. Only set for [DataSourceType.asset] videos. - final String asset; + final String? asset; /// The package that the asset was loaded from. Only set for /// [DataSourceType.asset] videos. - final String package; + final String? package; } /// The way in which the video was originally loaded. @@ -216,7 +216,7 @@ class VideoEvent { /// Depending on the [eventType], the [duration], [size] and [buffered] /// arguments can be null. VideoEvent({ - @required this.eventType, + required this.eventType, this.duration, this.size, this.buffered, @@ -228,17 +228,17 @@ class VideoEvent { /// Duration of the video. /// /// Only used if [eventType] is [VideoEventType.initialized]. - final Duration duration; + final Duration? duration; /// Size of the video. /// /// Only used if [eventType] is [VideoEventType.initialized]. - final Size size; + final Size? size; /// Buffered parts of the video. /// /// Only used if [eventType] is [VideoEventType.bufferingUpdate]. - final List buffered; + final List? buffered; @override bool operator ==(Object other) { diff --git a/packages/video_player/video_player_platform_interface/pubspec.yaml b/packages/video_player/video_player_platform_interface/pubspec.yaml index 0c1dcad32648..ea8d3179cf1d 100644 --- a/packages/video_player/video_player_platform_interface/pubspec.yaml +++ b/packages/video_player/video_player_platform_interface/pubspec.yaml @@ -3,19 +3,19 @@ description: A common platform interface for the video_player plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 2.2.1 +version: 3.0.0-nullsafety.3 dependencies: flutter: sdk: flutter - meta: ^1.0.5 + meta: ^1.3.0-nullsafety.3 dev_dependencies: flutter_test: sdk: flutter mockito: ^4.1.1 - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.8.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.10.0" diff --git a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart index c4791001ad92..5c19ebca0d12 100644 --- a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart +++ b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(egarciad): Remove once Mockito is migrated to null safety. +// @dart = 2.9 + import 'dart:ui'; import 'package:flutter/services.dart'; diff --git a/packages/video_player/video_player_web/CHANGELOG.md b/packages/video_player/video_player_web/CHANGELOG.md index cbb07e8b9295..52c2042d1e95 100644 --- a/packages/video_player/video_player_web/CHANGELOG.md +++ b/packages/video_player/video_player_web/CHANGELOG.md @@ -1,3 +1,11 @@ +## 2.0.0-nullsafety.1 + +* Bump Dart SDK to support null safety. + +## 2.0.0-nullsafety + +* Migrate to null safety. + ## 0.1.4+2 * Update Flutter SDK constraint. diff --git a/packages/video_player/video_player_web/analysis_options.yaml b/packages/video_player/video_player_web/analysis_options.yaml new file mode 100644 index 000000000000..7e5b7b306a83 --- /dev/null +++ b/packages/video_player/video_player_web/analysis_options.yaml @@ -0,0 +1,12 @@ +# This is a temporary file to allow us to unblock the flutter/plugins repo CI. +# It disables some of lints that were disabled inline. Disabling lints inline +# is no longer possible, so this file is required. +# TODO(ditman) https://github.com/flutter/flutter/issues/55000 (clean this up) + +include: ../../../analysis_options.yaml + +analyzer: + enable-experiment: + - non-nullable + errors: + undefined_prefixed_name: ignore diff --git a/packages/video_player/video_player_web/lib/video_player_web.dart b/packages/video_player/video_player_web/lib/video_player_web.dart index 6715d5aca53b..de8f6a7e4cf7 100644 --- a/packages/video_player/video_player_web/lib/video_player_web.dart +++ b/packages/video_player/video_player_web/lib/video_player_web.dart @@ -50,7 +50,7 @@ class VideoPlayerPlugin extends VideoPlayerPlatform { @override Future dispose(int textureId) async { - _videoPlayers[textureId].dispose(); + _videoPlayers[textureId]!.dispose(); _videoPlayers.remove(textureId); return null; } @@ -66,16 +66,16 @@ class VideoPlayerPlugin extends VideoPlayerPlatform { final int textureId = _textureCounter; _textureCounter++; - String uri; + late String uri; switch (dataSource.sourceType) { case DataSourceType.network: // Do NOT modify the incoming uri, it can be a Blob, and Safari doesn't // like blobs that have changed. - uri = dataSource.uri; + uri = dataSource.uri ?? ''; break; case DataSourceType.asset: - String assetUrl = dataSource.asset; - if (dataSource.package != null && dataSource.package.isNotEmpty) { + String assetUrl = dataSource.asset!; + if (dataSource.package != null && dataSource.package!.isNotEmpty) { assetUrl = 'packages/${dataSource.package}/$assetUrl'; } assetUrl = ui.webOnlyAssetManager.getAssetUrl(assetUrl); @@ -99,45 +99,45 @@ class VideoPlayerPlugin extends VideoPlayerPlatform { @override Future setLooping(int textureId, bool looping) async { - return _videoPlayers[textureId].setLooping(looping); + return _videoPlayers[textureId]!.setLooping(looping); } @override Future play(int textureId) async { - return _videoPlayers[textureId].play(); + return _videoPlayers[textureId]!.play(); } @override Future pause(int textureId) async { - return _videoPlayers[textureId].pause(); + return _videoPlayers[textureId]!.pause(); } @override Future setVolume(int textureId, double volume) async { - return _videoPlayers[textureId].setVolume(volume); + return _videoPlayers[textureId]!.setVolume(volume); } @override Future setPlaybackSpeed(int textureId, double speed) async { assert(speed > 0); - return _videoPlayers[textureId].setPlaybackSpeed(speed); + return _videoPlayers[textureId]!.setPlaybackSpeed(speed); } @override Future seekTo(int textureId, Duration position) async { - return _videoPlayers[textureId].seekTo(position); + return _videoPlayers[textureId]!.seekTo(position); } @override Future getPosition(int textureId) async { - _videoPlayers[textureId].sendBufferingUpdate(); - return _videoPlayers[textureId].getPosition(); + _videoPlayers[textureId]!.sendBufferingUpdate(); + return _videoPlayers[textureId]!.getPosition(); } @override Stream videoEventsFor(int textureId) { - return _videoPlayers[textureId].eventController.stream; + return _videoPlayers[textureId]!.eventController.stream; } @override @@ -147,14 +147,14 @@ class VideoPlayerPlugin extends VideoPlayerPlatform { } class _VideoPlayer { - _VideoPlayer({this.uri, this.textureId}); + _VideoPlayer({required this.uri, required this.textureId}); final StreamController eventController = StreamController(); final String uri; final int textureId; - VideoElement videoElement; + late VideoElement videoElement; bool isInitialized = false; void initialize() { @@ -183,9 +183,9 @@ class _VideoPlayer { // The Event itself (_) doesn't contain info about the actual error. // We need to look at the HTMLMediaElement.error. // See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/error - MediaError error = videoElement.error; + MediaError error = videoElement.error!; eventController.addError(PlatformException( - code: _kErrorValueToErrorName[error.code], + code: _kErrorValueToErrorName[error.code]!, message: error.message != '' ? error.message : _kDefaultErrorMessage, details: _kErrorValueToErrorDescription[error.code], )); @@ -258,8 +258,8 @@ class _VideoPlayer { milliseconds: (videoElement.duration * 1000).round(), ), size: Size( - videoElement.videoWidth.toDouble() ?? 0.0, - videoElement.videoHeight.toDouble() ?? 0.0, + videoElement.videoWidth.toDouble(), + videoElement.videoHeight.toDouble(), ), ), ); diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml index 37cadbd3a1b3..dc1af16c5d94 100644 --- a/packages/video_player/video_player_web/pubspec.yaml +++ b/packages/video_player/video_player_web/pubspec.yaml @@ -4,7 +4,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/v # 0.1.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.1.4+2 +version: 2.0.0-nullsafety.1 flutter: plugin: @@ -18,16 +18,16 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - meta: ^1.1.7 - video_player_platform_interface: ^2.2.0 + meta: ^1.3.0-nullsafety.3 + video_player_platform_interface: ^3.0.0-nullsafety.3 dev_dependencies: flutter_test: sdk: flutter video_player: path: ../video_player - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.8.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.8" diff --git a/packages/video_player/video_player_web/test/video_player_web_test.dart b/packages/video_player/video_player_web/test/video_player_web_test.dart index 453079bfcd40..c433d82027f0 100644 --- a/packages/video_player/video_player_web/test/video_player_web_test.dart +++ b/packages/video_player/video_player_web/test/video_player_web_test.dart @@ -14,16 +14,16 @@ import 'package:video_player_web/video_player_web.dart'; void main() { group('VideoPlayer for Web', () { - int textureId; + late int textureId; setUp(() async { VideoPlayerPlatform.instance = VideoPlayerPlugin(); - textureId = await VideoPlayerPlatform.instance.create( + textureId = (await VideoPlayerPlatform.instance.create( DataSource( sourceType: DataSourceType.network, uri: 'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4'), - ); + ))!; }); test('$VideoPlayerPlugin is the live instance', () { @@ -84,12 +84,12 @@ void main() { }); test('throws PlatformException when playing bad media', () async { - int videoPlayerId = await VideoPlayerPlatform.instance.create( + int videoPlayerId = (await VideoPlayerPlatform.instance.create( DataSource( sourceType: DataSourceType.network, uri: 'https://flutter.github.io/assets-for-api-docs/assets/videos/_non_existent_video.mp4'), - ); + ))!; Stream eventStream = VideoPlayerPlatform.instance.videoEventsFor(videoPlayerId); diff --git a/script/incremental_build.sh b/script/incremental_build.sh index 671ce66a086f..95e42c4cfcee 100755 --- a/script/incremental_build.sh +++ b/script/incremental_build.sh @@ -29,6 +29,16 @@ fi # # TODO(mklim): Remove everything from this list. https://github.com/flutter/flutter/issues/45440 CUSTOM_ANALYSIS_PLUGINS=( + "plugin_platform_interface" + "video_player/video_player" + "video_player/video_player_platform_interface" + "video_player/video_player_web" + "url_launcher/url_launcher_platform_interface" + "url_launcher/url_launcher" + "device_info/device_info_platform_interface" + "device_info/device_info" + "connectivity/connectivity_platform_interface" + "connectivity/connectivity" ) # Comma-separated string of the list above readonly CUSTOM_FLAG=$(IFS=, ; echo "${CUSTOM_ANALYSIS_PLUGINS[*]}") @@ -61,6 +71,7 @@ else echo running "${ACTIONS[@]}" (cd "$REPO_DIR" && $PUB global run flutter_plugin_tools "${ACTIONS[@]}" --plugins="$CHANGED_PACKAGES" --exclude="$ALL_EXCLUDED" ${PLUGIN_SHARDING[@]}) echo "Running version check for changed packages" - (cd "$REPO_DIR" && $PUB global run flutter_plugin_tools version-check --base_sha="$(get_branch_base_sha)") + # TODO(egarciad): Enable this check once in master. + # (cd "$REPO_DIR" && $PUB global run flutter_plugin_tools version-check --base_sha="$(get_branch_base_sha)") fi fi diff --git a/script/nnbd_plugins.sh b/script/nnbd_plugins.sh index 5d167d7b5da6..8b73ecc24e99 100644 --- a/script/nnbd_plugins.sh +++ b/script/nnbd_plugins.sh @@ -5,7 +5,16 @@ # null-safe is available on stable. readonly NNBD_PLUGINS_LIST=( + "connectivity" + "device_info" + "flutter_plugin_android_lifecycle" "flutter_webview" + "google_sign_in" + "local_auth" + "path_provider" + "plugin_platform_interface" + "url_launcher" + "video_player" ) export EXCLUDED_PLUGINS_FROM_STABLE=$(IFS=, ; echo "${NNBD_PLUGINS_LIST[*]}") From 78eff18ff7f847bb99f414da6454a7ac987355a2 Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Tue, 15 Dec 2020 08:25:20 -0800 Subject: [PATCH 10/24] [webview_flutter] Migrate to nnbd (#3327) --- packages/webview_flutter/CHANGELOG.md | 4 + .../lib/platform_interface.dart | 64 ++-- .../lib/src/webview_android.dart | 10 +- .../lib/src/webview_cupertino.dart | 10 +- .../lib/src/webview_method_channel.dart | 56 ++-- .../webview_flutter/lib/webview_flutter.dart | 109 ++++--- packages/webview_flutter/pubspec.yaml | 6 +- .../test/webview_flutter_test.dart | 289 ++++++++---------- script/nnbd_plugins.sh | 1 + 9 files changed, 273 insertions(+), 276 deletions(-) diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md index 447e263e54ff..352613997aa0 100644 --- a/packages/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety + +* Migration to null-safety. + ## 1.0.8 * Update Flutter SDK constraint. diff --git a/packages/webview_flutter/lib/platform_interface.dart b/packages/webview_flutter/lib/platform_interface.dart index 6c991b14a76e..f162e58cf0f9 100644 --- a/packages/webview_flutter/lib/platform_interface.dart +++ b/packages/webview_flutter/lib/platform_interface.dart @@ -21,7 +21,8 @@ abstract class WebViewPlatformCallbacksHandler { /// Invoked by [WebViewPlatformController] when a navigation request is pending. /// /// If true is returned the navigation is allowed, otherwise it is blocked. - FutureOr onNavigationRequest({String url, bool isForMainFrame}); + FutureOr onNavigationRequest( + {required String url, required bool isForMainFrame}); /// Invoked by [WebViewPlatformController] when a page has started loading. void onPageStarted(String url); @@ -103,8 +104,8 @@ class WebResourceError { /// A user should not need to instantiate this class, but will receive one in /// [WebResourceErrorCallback]. WebResourceError({ - @required this.errorCode, - @required this.description, + required this.errorCode, + required this.description, this.domain, this.errorType, this.failingUrl, @@ -131,7 +132,7 @@ class WebResourceError { /// in Objective-C. See /// https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/ErrorObjectsDomains/ErrorObjectsDomains.html /// for more information on error handling on iOS. - final String domain; + final String? domain; /// Description of the error that can be used to communicate the problem to the user. final String description; @@ -139,13 +140,13 @@ class WebResourceError { /// The type this error can be categorized as. /// /// This will never be `null` on Android, but can be `null` on iOS. - final WebResourceErrorType errorType; + final WebResourceErrorType? errorType; /// Gets the URL for which the resource request was made. /// /// This value is not provided on iOS. Alternatively, you can keep track of /// the last values provided to [WebViewPlatformController.loadUrl]. - final String failingUrl; + final String? failingUrl; } /// Interface for talking to the webview's platform implementation. @@ -176,7 +177,7 @@ abstract class WebViewPlatformController { /// Throws an ArgumentError if `url` is not a valid URL string. Future loadUrl( String url, - Map headers, + Map? headers, ) { throw UnimplementedError( "WebView loadUrl is not implemented on the current platform"); @@ -194,7 +195,7 @@ abstract class WebViewPlatformController { /// Accessor to the current URL that the WebView is displaying. /// /// If no URL was ever loaded, returns `null`. - Future currentUrl() { + Future currentUrl() { throw UnimplementedError( "WebView currentUrl is not implemented on the current platform"); } @@ -281,7 +282,7 @@ abstract class WebViewPlatformController { } /// Returns the title of the currently loaded page. - Future getTitle() { + Future getTitle() { throw UnimplementedError( "WebView getTitle is not implemented on the current platform"); } @@ -337,7 +338,7 @@ class WebSetting { : _value = value, isPresent = true; - final T _value; + final T? _value; /// The setting's value. /// @@ -347,7 +348,14 @@ class WebSetting { throw StateError('Cannot access a value of an absent WebSetting'); } assert(isPresent); - return _value; + // The intention of this getter is to return T whether it is nullable or + // not whereas _value is of type T? since _value can be null even when + // T is not nullable (when isPresent == false). + // + // We promote _value to T using `as T` instead of `!` operator to handle + // the case when _value is legitimately null (and T is a nullable type). + // `!` operator would always throw if _value is null. + return _value as T; } /// True when this web setting instance contains a value. @@ -358,7 +366,7 @@ class WebSetting { @override bool operator ==(Object other) { if (other.runtimeType != runtimeType) return false; - final WebSetting typedOther = other; + final WebSetting typedOther = other as WebSetting; return typedOther.isPresent == isPresent && typedOther._value == _value; } @@ -382,19 +390,19 @@ class WebSettings { this.hasNavigationDelegate, this.debuggingEnabled, this.gestureNavigationEnabled, - @required this.userAgent, + required this.userAgent, }) : assert(userAgent != null); /// The JavaScript execution mode to be used by the webview. - final JavascriptMode javascriptMode; + final JavascriptMode? javascriptMode; /// Whether the [WebView] has a [NavigationDelegate] set. - final bool hasNavigationDelegate; + final bool? hasNavigationDelegate; /// Whether to enable the platform's webview content debugging tools. /// /// See also: [WebView.debuggingEnabled]. - final bool debuggingEnabled; + final bool? debuggingEnabled; /// The value used for the HTTP `User-Agent:` request header. /// @@ -404,12 +412,12 @@ class WebSettings { /// last time it was set. /// /// See also [WebView.userAgent]. - final WebSetting userAgent; + final WebSetting userAgent; /// Whether to allow swipe based navigation in iOS. /// /// See also: [WebView.gestureNavigationEnabled] - final bool gestureNavigationEnabled; + final bool? gestureNavigationEnabled; @override String toString() { @@ -428,7 +436,7 @@ class CreationParams { CreationParams({ this.initialUrl, this.webSettings, - this.javascriptChannelNames, + this.javascriptChannelNames = const {}, this.userAgent, this.autoMediaPlaybackPolicy = AutoMediaPlaybackPolicy.require_user_action_for_all_media_types, @@ -437,12 +445,12 @@ class CreationParams { /// The initialUrl to load in the webview. /// /// When null the webview will be created without loading any page. - final String initialUrl; + final String? initialUrl; /// The initial [WebSettings] for the new webview. /// /// This can later be updated with [WebViewPlatformController.updateSettings]. - final WebSettings webSettings; + final WebSettings? webSettings; /// The initial set of JavaScript channels that are configured for this webview. /// @@ -460,7 +468,7 @@ class CreationParams { /// The value used for the HTTP User-Agent: request header. /// /// When null the platform's webview default is used for the User-Agent header. - final String userAgent; + final String? userAgent; /// Which restrictions apply on automatic media playback. final AutoMediaPlaybackPolicy autoMediaPlaybackPolicy; @@ -475,7 +483,7 @@ class CreationParams { /// /// See also the `onWebViewPlatformCreated` argument for [WebViewPlatform.build]. typedef WebViewPlatformCreatedCallback = void Function( - WebViewPlatformController webViewPlatformController); + WebViewPlatformController? webViewPlatformController); /// Interface for a platform implementation of a WebView. /// @@ -505,14 +513,14 @@ abstract class WebViewPlatform { /// /// `webViewPlatformHandler` must not be null. Widget build({ - BuildContext context, + required BuildContext context, // TODO(amirh): convert this to be the actual parameters. // I'm starting without it as the PR is starting to become pretty big. // I'll followup with the conversion PR. - CreationParams creationParams, - @required WebViewPlatformCallbacksHandler webViewPlatformCallbacksHandler, - WebViewPlatformCreatedCallback onWebViewPlatformCreated, - Set> gestureRecognizers, + required CreationParams creationParams, + required WebViewPlatformCallbacksHandler webViewPlatformCallbacksHandler, + WebViewPlatformCreatedCallback? onWebViewPlatformCreated, + Set>? gestureRecognizers, }); /// Clears all cookies for all [WebView] instances. diff --git a/packages/webview_flutter/lib/src/webview_android.dart b/packages/webview_flutter/lib/src/webview_android.dart index f7afcc0637a3..cba9e1b698b8 100644 --- a/packages/webview_flutter/lib/src/webview_android.dart +++ b/packages/webview_flutter/lib/src/webview_android.dart @@ -20,11 +20,11 @@ import 'webview_method_channel.dart'; class AndroidWebView implements WebViewPlatform { @override Widget build({ - BuildContext context, - CreationParams creationParams, - @required WebViewPlatformCallbacksHandler webViewPlatformCallbacksHandler, - WebViewPlatformCreatedCallback onWebViewPlatformCreated, - Set> gestureRecognizers, + required BuildContext context, + required CreationParams creationParams, + required WebViewPlatformCallbacksHandler webViewPlatformCallbacksHandler, + WebViewPlatformCreatedCallback? onWebViewPlatformCreated, + Set>? gestureRecognizers, }) { assert(webViewPlatformCallbacksHandler != null); return GestureDetector( diff --git a/packages/webview_flutter/lib/src/webview_cupertino.dart b/packages/webview_flutter/lib/src/webview_cupertino.dart index 0e84908261e4..e6816555f73b 100644 --- a/packages/webview_flutter/lib/src/webview_cupertino.dart +++ b/packages/webview_flutter/lib/src/webview_cupertino.dart @@ -20,11 +20,11 @@ import 'webview_method_channel.dart'; class CupertinoWebView implements WebViewPlatform { @override Widget build({ - BuildContext context, - CreationParams creationParams, - @required WebViewPlatformCallbacksHandler webViewPlatformCallbacksHandler, - WebViewPlatformCreatedCallback onWebViewPlatformCreated, - Set> gestureRecognizers, + required BuildContext context, + required CreationParams creationParams, + required WebViewPlatformCallbacksHandler webViewPlatformCallbacksHandler, + WebViewPlatformCreatedCallback? onWebViewPlatformCreated, + Set>? gestureRecognizers, }) { return UiKitView( viewType: 'plugins.flutter.io/webview', diff --git a/packages/webview_flutter/lib/src/webview_method_channel.dart b/packages/webview_flutter/lib/src/webview_method_channel.dart index 348b225bb257..1c666d7686ef 100644 --- a/packages/webview_flutter/lib/src/webview_method_channel.dart +++ b/packages/webview_flutter/lib/src/webview_method_channel.dart @@ -25,31 +25,31 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { static const MethodChannel _cookieManagerChannel = MethodChannel('plugins.flutter.io/cookie_manager'); - Future _onMethodCall(MethodCall call) async { + Future _onMethodCall(MethodCall call) async { switch (call.method) { case 'javascriptChannelMessage': - final String channel = call.arguments['channel']; - final String message = call.arguments['message']; + final String channel = call.arguments['channel']!; + final String message = call.arguments['message']!; _platformCallbacksHandler.onJavaScriptChannelMessage(channel, message); return true; case 'navigationRequest': return await _platformCallbacksHandler.onNavigationRequest( - url: call.arguments['url'], - isForMainFrame: call.arguments['isForMainFrame'], + url: call.arguments['url']!, + isForMainFrame: call.arguments['isForMainFrame']!, ); case 'onPageFinished': - _platformCallbacksHandler.onPageFinished(call.arguments['url']); + _platformCallbacksHandler.onPageFinished(call.arguments['url']!); return null; case 'onPageStarted': - _platformCallbacksHandler.onPageStarted(call.arguments['url']); + _platformCallbacksHandler.onPageStarted(call.arguments['url']!); return null; case 'onWebResourceError': _platformCallbacksHandler.onWebResourceError( WebResourceError( - errorCode: call.arguments['errorCode'], - description: call.arguments['description'], + errorCode: call.arguments['errorCode']!, + description: call.arguments['description']!, + failingUrl: call.arguments['failingUrl']!, domain: call.arguments['domain'], - failingUrl: call.arguments['failingUrl'], errorType: call.arguments['errorType'] == null ? null : WebResourceErrorType.values.firstWhere( @@ -71,7 +71,7 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { @override Future loadUrl( String url, - Map headers, + Map? headers, ) async { assert(url != null); return _channel.invokeMethod('loadUrl', { @@ -81,13 +81,15 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { } @override - Future currentUrl() => _channel.invokeMethod('currentUrl'); + Future currentUrl() => _channel.invokeMethod('currentUrl'); @override - Future canGoBack() => _channel.invokeMethod("canGoBack"); + Future canGoBack() => + _channel.invokeMethod("canGoBack").then((result) => result!); @override - Future canGoForward() => _channel.invokeMethod("canGoForward"); + Future canGoForward() => + _channel.invokeMethod("canGoForward").then((result) => result!); @override Future goBack() => _channel.invokeMethod("goBack"); @@ -102,18 +104,18 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { Future clearCache() => _channel.invokeMethod("clearCache"); @override - Future updateSettings(WebSettings settings) { + Future updateSettings(WebSettings settings) async { final Map updatesMap = _webSettingsToMap(settings); - if (updatesMap.isEmpty) { - return null; + if (updatesMap.isNotEmpty) { + await _channel.invokeMethod('updateSettings', updatesMap); } - return _channel.invokeMethod('updateSettings', updatesMap); } @override Future evaluateJavascript(String javascriptString) { - return _channel.invokeMethod( - 'evaluateJavascript', javascriptString); + return _channel + .invokeMethod('evaluateJavascript', javascriptString) + .then((result) => result!); } @override @@ -129,7 +131,7 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { } @override - Future getTitle() => _channel.invokeMethod("getTitle"); + Future getTitle() => _channel.invokeMethod("getTitle"); @override Future scrollTo(int x, int y) { @@ -148,19 +150,21 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { } @override - Future getScrollX() => _channel.invokeMethod("getScrollX"); + Future getScrollX() => + _channel.invokeMethod("getScrollX").then((result) => result!); @override - Future getScrollY() => _channel.invokeMethod("getScrollY"); + Future getScrollY() => + _channel.invokeMethod("getScrollY").then((result) => result!); /// Method channel implementation for [WebViewPlatform.clearCookies]. static Future clearCookies() { return _cookieManagerChannel .invokeMethod('clearCookies') - .then((dynamic result) => result); + .then((dynamic result) => result!); } - static Map _webSettingsToMap(WebSettings settings) { + static Map _webSettingsToMap(WebSettings? settings) { final Map map = {}; void _addIfNonNull(String key, dynamic value) { if (value == null) { @@ -176,7 +180,7 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { map[key] = setting.value; } - _addIfNonNull('jsMode', settings.javascriptMode?.index); + _addIfNonNull('jsMode', settings!.javascriptMode?.index); _addIfNonNull('hasNavigationDelegate', settings.hasNavigationDelegate); _addIfNonNull('debuggingEnabled', settings.debuggingEnabled); _addIfNonNull( diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart index 2fdf639180a7..4327c789afbe 100644 --- a/packages/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/lib/webview_flutter.dart @@ -44,7 +44,7 @@ typedef void JavascriptMessageHandler(JavascriptMessage message); /// Information about a navigation action that is about to be executed. class NavigationRequest { - NavigationRequest._({this.url, this.isForMainFrame}); + NavigationRequest._({required this.url, required this.isForMainFrame}); /// The URL that will be loaded if the navigation is executed. final String url; @@ -79,11 +79,11 @@ enum NavigationDecision { class SurfaceAndroidWebView extends AndroidWebView { @override Widget build({ - BuildContext context, - CreationParams creationParams, - WebViewPlatformCreatedCallback onWebViewPlatformCreated, - Set> gestureRecognizers, - @required WebViewPlatformCallbacksHandler webViewPlatformCallbacksHandler, + required BuildContext context, + required CreationParams creationParams, + WebViewPlatformCreatedCallback? onWebViewPlatformCreated, + Set>? gestureRecognizers, + required WebViewPlatformCallbacksHandler webViewPlatformCallbacksHandler, }) { assert(webViewPlatformCallbacksHandler != null); return PlatformViewLink( @@ -93,7 +93,7 @@ class SurfaceAndroidWebView extends AndroidWebView { PlatformViewController controller, ) { return AndroidViewSurface( - controller: controller, + controller: controller as AndroidViewController, gestureRecognizers: gestureRecognizers ?? const >{}, hitTestBehavior: PlatformViewHitTestBehavior.opaque, @@ -172,9 +172,9 @@ class JavascriptChannel { /// /// The parameters `name` and `onMessageReceived` must not be null. JavascriptChannel({ - @required this.name, - @required this.onMessageReceived, - }) : assert(name != null), + required this.name, + required this.onMessageReceived, + }) : assert(name != null), assert(onMessageReceived != null), assert(_validChannelNames.hasMatch(name)); @@ -208,7 +208,7 @@ class WebView extends StatefulWidget { /// /// The `javascriptMode` and `autoMediaPlaybackPolicy` parameters must not be null. const WebView({ - Key key, + Key? key, this.onWebViewCreated, this.initialUrl, this.javascriptMode = JavascriptMode.disabled, @@ -227,7 +227,7 @@ class WebView extends StatefulWidget { assert(initialMediaPlaybackPolicy != null), super(key: key); - static WebViewPlatform _platform; + static WebViewPlatform? _platform; /// Sets a custom [WebViewPlatform]. /// @@ -236,7 +236,7 @@ class WebView extends StatefulWidget { /// Setting `platform` doesn't affect [WebView]s that were already created. /// /// The default value is [AndroidWebView] on Android and [CupertinoWebView] on iOS. - static set platform(WebViewPlatform platform) { + static set platform(WebViewPlatform? platform) { _platform = platform; } @@ -257,11 +257,11 @@ class WebView extends StatefulWidget { "Trying to use the default webview implementation for $defaultTargetPlatform but there isn't a default one"); } } - return _platform; + return _platform!; } /// If not null invoked once the web view is created. - final WebViewCreatedCallback onWebViewCreated; + final WebViewCreatedCallback? onWebViewCreated; /// Which gestures should be consumed by the web view. /// @@ -272,10 +272,10 @@ class WebView extends StatefulWidget { /// /// When this set is empty or null, the web view will only handle pointer events for gestures that /// were not claimed by any other gesture recognizer. - final Set> gestureRecognizers; + final Set>? gestureRecognizers; /// The initial URL to load. - final String initialUrl; + final String? initialUrl; /// Whether Javascript execution is enabled. final JavascriptMode javascriptMode; @@ -307,7 +307,7 @@ class WebView extends StatefulWidget { /// channels in the list. /// /// A null value is equivalent to an empty set. - final Set javascriptChannels; + final Set? javascriptChannels; /// A delegate function that decides how to handle navigation actions. /// @@ -331,10 +331,10 @@ class WebView extends StatefulWidget { /// * When a navigationDelegate is set pages with frames are not properly handled by the /// webview, and frames will be opened in the main frame. /// * When a navigationDelegate is set HTTP requests do not include the HTTP referer header. - final NavigationDelegate navigationDelegate; + final NavigationDelegate? navigationDelegate; /// Invoked when a page starts loading. - final PageStartedCallback onPageStarted; + final PageStartedCallback? onPageStarted; /// Invoked when a page has finished loading. /// @@ -346,13 +346,13 @@ class WebView extends StatefulWidget { /// When invoked on iOS or Android, any Javascript code that is embedded /// directly in the HTML has been loaded and code injected with /// [WebViewController.evaluateJavascript] can assume this. - final PageFinishedCallback onPageFinished; + final PageFinishedCallback? onPageFinished; /// Invoked when a web resource has failed to load. /// /// This can be called for any resource (iframe, image, etc.), not just for /// the main page. - final WebResourceErrorCallback onWebResourceError; + final WebResourceErrorCallback? onWebResourceError; /// Controls whether WebView debugging is enabled. /// @@ -386,7 +386,7 @@ class WebView extends StatefulWidget { /// user agent. /// /// By default `userAgent` is null. - final String userAgent; + final String? userAgent; /// Which restrictions apply on automatic media playback. /// @@ -404,7 +404,7 @@ class _WebViewState extends State { final Completer _controller = Completer(); - _PlatformCallbacksHandler _platformCallbacksHandler; + late _PlatformCallbacksHandler _platformCallbacksHandler; @override Widget build(BuildContext context) { @@ -434,22 +434,22 @@ class _WebViewState extends State { }); } - void _onWebViewPlatformCreated(WebViewPlatformController webViewPlatform) { - final WebViewController controller = - WebViewController._(widget, webViewPlatform, _platformCallbacksHandler); + void _onWebViewPlatformCreated(WebViewPlatformController? webViewPlatform) { + final WebViewController controller = WebViewController._( + widget, webViewPlatform!, _platformCallbacksHandler); _controller.complete(controller); if (widget.onWebViewCreated != null) { - widget.onWebViewCreated(controller); + widget.onWebViewCreated!(controller); } } void _assertJavascriptChannelNamesAreUnique() { if (widget.javascriptChannels == null || - widget.javascriptChannels.isEmpty) { + widget.javascriptChannels!.isEmpty) { return; } assert(_extractChannelNames(widget.javascriptChannels).length == - widget.javascriptChannels.length); + widget.javascriptChannels!.length); } } @@ -469,7 +469,7 @@ WebSettings _webSettingsFromWidget(WebView widget) { hasNavigationDelegate: widget.navigationDelegate != null, debuggingEnabled: widget.debuggingEnabled, gestureNavigationEnabled: widget.gestureNavigationEnabled, - userAgent: WebSetting.of(widget.userAgent), + userAgent: WebSetting.of(widget.userAgent), ); } @@ -479,16 +479,16 @@ WebSettings _clearUnchangedWebSettings( assert(currentValue.javascriptMode != null); assert(currentValue.hasNavigationDelegate != null); assert(currentValue.debuggingEnabled != null); - assert(currentValue.userAgent.isPresent); + assert(currentValue.userAgent != null); assert(newValue.javascriptMode != null); assert(newValue.hasNavigationDelegate != null); assert(newValue.debuggingEnabled != null); - assert(newValue.userAgent.isPresent); + assert(newValue.userAgent != null); - JavascriptMode javascriptMode; - bool hasNavigationDelegate; - bool debuggingEnabled; - WebSetting userAgent = WebSetting.absent(); + JavascriptMode? javascriptMode; + bool? hasNavigationDelegate; + bool? debuggingEnabled; + WebSetting userAgent = WebSetting.absent(); if (currentValue.javascriptMode != newValue.javascriptMode) { javascriptMode = newValue.javascriptMode; } @@ -510,7 +510,7 @@ WebSettings _clearUnchangedWebSettings( ); } -Set _extractChannelNames(Set channels) { +Set _extractChannelNames(Set? channels) { final Set channelNames = channels == null ? {} : channels.map((JavascriptChannel channel) => channel.name).toSet(); @@ -530,15 +530,18 @@ class _PlatformCallbacksHandler implements WebViewPlatformCallbacksHandler { @override void onJavaScriptChannelMessage(String channel, String message) { - _javascriptChannels[channel].onMessageReceived(JavascriptMessage(message)); + _javascriptChannels[channel]!.onMessageReceived(JavascriptMessage(message)); } @override - FutureOr onNavigationRequest({String url, bool isForMainFrame}) async { + FutureOr onNavigationRequest({ + required String url, + required bool isForMainFrame, + }) async { final NavigationRequest request = NavigationRequest._(url: url, isForMainFrame: isForMainFrame); final bool allowNavigation = _widget.navigationDelegate == null || - await _widget.navigationDelegate(request) == + await _widget.navigationDelegate!(request) == NavigationDecision.navigate; return allowNavigation; } @@ -546,25 +549,25 @@ class _PlatformCallbacksHandler implements WebViewPlatformCallbacksHandler { @override void onPageStarted(String url) { if (_widget.onPageStarted != null) { - _widget.onPageStarted(url); + _widget.onPageStarted!(url); } } @override void onPageFinished(String url) { if (_widget.onPageFinished != null) { - _widget.onPageFinished(url); + _widget.onPageFinished!(url); } } @override void onWebResourceError(WebResourceError error) { if (_widget.onWebResourceError != null) { - _widget.onWebResourceError(error); + _widget.onWebResourceError!(error); } } - void _updateJavascriptChannelsFromSet(Set channels) { + void _updateJavascriptChannelsFromSet(Set? channels) { _javascriptChannels.clear(); if (channels == null) { return; @@ -592,7 +595,7 @@ class WebViewController { final _PlatformCallbacksHandler _platformCallbacksHandler; - WebSettings _settings; + late WebSettings _settings; WebView _widget; @@ -606,7 +609,7 @@ class WebViewController { /// Throws an ArgumentError if `url` is not a valid URL string. Future loadUrl( String url, { - Map headers, + Map? headers, }) async { assert(url != null); _validateUrlString(url); @@ -620,7 +623,7 @@ class WebViewController { /// current URL changes again by the time this function returns (in other /// words, by the time this future completes, the WebView may be displaying a /// different URL). - Future currentUrl() { + Future currentUrl() { return _webViewPlatformController.currentUrl(); } @@ -688,7 +691,7 @@ class WebViewController { } Future _updateJavascriptChannels( - Set newChannels) async { + Set? newChannels) async { final Set currentChannels = _platformCallbacksHandler._javascriptChannels.keys.toSet(); final Set newChannelNames = _extractChannelNames(newChannels); @@ -727,10 +730,6 @@ class WebViewController { return Future.error(FlutterError( 'JavaScript mode must be enabled/unrestricted when calling evaluateJavascript.')); } - if (javascriptString == null) { - return Future.error( - ArgumentError('The argument javascriptString must not be null.')); - } // TODO(amirh): remove this on when the invokeMethod update makes it to stable Flutter. // https://github.com/flutter/flutter/issues/26431 // ignore: strong_mode_implicit_dynamic_method @@ -738,7 +737,7 @@ class WebViewController { } /// Returns the title of the currently loaded page. - Future getTitle() { + Future getTitle() { return _webViewPlatformController.getTitle(); } @@ -780,7 +779,7 @@ class CookieManager { CookieManager._(); - static CookieManager _instance; + static CookieManager? _instance; /// Clears all cookies for all [WebView] instances. /// diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml index de99c4b7cdb8..de62a50ada17 100644 --- a/packages/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/pubspec.yaml @@ -1,10 +1,10 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. -version: 1.0.8 +version: 2.0.0-nullsafety homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter environment: - sdk: ">=2.7.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.22.0" dependencies: @@ -16,7 +16,7 @@ dev_dependencies: sdk: flutter flutter_driver: sdk: flutter - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 flutter: plugin: diff --git a/packages/webview_flutter/test/webview_flutter_test.dart b/packages/webview_flutter/test/webview_flutter_test.dart index c7cf46a080d7..662a2f7f976a 100644 --- a/packages/webview_flutter/test/webview_flutter_test.dart +++ b/packages/webview_flutter/test/webview_flutter_test.dart @@ -40,7 +40,7 @@ void main() { }); testWidgets('Initial url', (WidgetTester tester) async { - WebViewController controller; + late WebViewController controller; await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', @@ -60,7 +60,7 @@ void main() { )); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(platformWebView.javascriptMode, JavascriptMode.unrestricted); @@ -72,7 +72,7 @@ void main() { }); testWidgets('Load url', (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( onWebViewCreated: (WebViewController webViewController) { @@ -83,13 +83,13 @@ void main() { expect(controller, isNotNull); - await controller.loadUrl('https://flutter.io'); + await controller!.loadUrl('https://flutter.io'); - expect(await controller.currentUrl(), 'https://flutter.io'); + expect(await controller!.currentUrl(), 'https://flutter.io'); }); testWidgets('Invalid urls', (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( onWebViewCreated: (WebViewController webViewController) { @@ -100,19 +100,18 @@ void main() { expect(controller, isNotNull); - expect(() => controller.loadUrl(null), throwsA(anything)); - expect(await controller.currentUrl(), isNull); + expect(await controller!.currentUrl(), isNull); - expect(() => controller.loadUrl(''), throwsA(anything)); - expect(await controller.currentUrl(), isNull); + expect(() => controller!.loadUrl(''), throwsA(anything)); + expect(await controller!.currentUrl(), isNull); // Missing schema. - expect(() => controller.loadUrl('flutter.io'), throwsA(anything)); - expect(await controller.currentUrl(), isNull); + expect(() => controller!.loadUrl('flutter.io'), throwsA(anything)); + expect(await controller!.currentUrl(), isNull); }); testWidgets('Headers in loadUrl', (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( onWebViewCreated: (WebViewController webViewController) { @@ -126,13 +125,13 @@ void main() { final Map headers = { 'CACHE-CONTROL': 'ABC' }; - await controller.loadUrl('https://flutter.io', headers: headers); - expect(await controller.currentUrl(), equals('https://flutter.io')); + await controller!.loadUrl('https://flutter.io', headers: headers); + expect(await controller!.currentUrl(), equals('https://flutter.io')); }); testWidgets("Can't go back before loading a page", (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( onWebViewCreated: (WebViewController webViewController) { @@ -143,13 +142,13 @@ void main() { expect(controller, isNotNull); - final bool canGoBackNoPageLoaded = await controller.canGoBack(); + final bool canGoBackNoPageLoaded = await controller!.canGoBack(); expect(canGoBackNoPageLoaded, false); }); testWidgets("Clear Cache", (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( onWebViewCreated: (WebViewController webViewController) { @@ -159,15 +158,15 @@ void main() { ); expect(controller, isNotNull); - expect(fakePlatformViewsController.lastCreatedView.hasCache, true); + expect(fakePlatformViewsController.lastCreatedView!.hasCache, true); - await controller.clearCache(); + await controller!.clearCache(); - expect(fakePlatformViewsController.lastCreatedView.hasCache, false); + expect(fakePlatformViewsController.lastCreatedView!.hasCache, false); }); testWidgets("Can't go back with no history", (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( initialUrl: 'https://flutter.io', @@ -178,13 +177,13 @@ void main() { ); expect(controller, isNotNull); - final bool canGoBackFirstPageLoaded = await controller.canGoBack(); + final bool canGoBackFirstPageLoaded = await controller!.canGoBack(); expect(canGoBackFirstPageLoaded, false); }); testWidgets('Can go back', (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( initialUrl: 'https://flutter.io', @@ -196,15 +195,15 @@ void main() { expect(controller, isNotNull); - await controller.loadUrl('https://www.google.com'); - final bool canGoBackSecondPageLoaded = await controller.canGoBack(); + await controller!.loadUrl('https://www.google.com'); + final bool canGoBackSecondPageLoaded = await controller!.canGoBack(); expect(canGoBackSecondPageLoaded, true); }); testWidgets("Can't go forward before loading a page", (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( onWebViewCreated: (WebViewController webViewController) { @@ -215,13 +214,13 @@ void main() { expect(controller, isNotNull); - final bool canGoForwardNoPageLoaded = await controller.canGoForward(); + final bool canGoForwardNoPageLoaded = await controller!.canGoForward(); expect(canGoForwardNoPageLoaded, false); }); testWidgets("Can't go forward with no history", (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( initialUrl: 'https://flutter.io', @@ -232,13 +231,13 @@ void main() { ); expect(controller, isNotNull); - final bool canGoForwardFirstPageLoaded = await controller.canGoForward(); + final bool canGoForwardFirstPageLoaded = await controller!.canGoForward(); expect(canGoForwardFirstPageLoaded, false); }); testWidgets('Can go forward', (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( initialUrl: 'https://flutter.io', @@ -250,15 +249,15 @@ void main() { expect(controller, isNotNull); - await controller.loadUrl('https://youtube.com'); - await controller.goBack(); - final bool canGoForwardFirstPageBacked = await controller.canGoForward(); + await controller!.loadUrl('https://youtube.com'); + await controller!.goBack(); + final bool canGoForwardFirstPageBacked = await controller!.canGoForward(); expect(canGoForwardFirstPageBacked, true); }); testWidgets('Go back', (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', @@ -270,19 +269,19 @@ void main() { expect(controller, isNotNull); - expect(await controller.currentUrl(), 'https://youtube.com'); + expect(await controller!.currentUrl(), 'https://youtube.com'); - await controller.loadUrl('https://flutter.io'); + await controller!.loadUrl('https://flutter.io'); - expect(await controller.currentUrl(), 'https://flutter.io'); + expect(await controller!.currentUrl(), 'https://flutter.io'); - await controller.goBack(); + await controller!.goBack(); - expect(await controller.currentUrl(), 'https://youtube.com'); + expect(await controller!.currentUrl(), 'https://youtube.com'); }); testWidgets('Go forward', (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', @@ -294,23 +293,23 @@ void main() { expect(controller, isNotNull); - expect(await controller.currentUrl(), 'https://youtube.com'); + expect(await controller!.currentUrl(), 'https://youtube.com'); - await controller.loadUrl('https://flutter.io'); + await controller!.loadUrl('https://flutter.io'); - expect(await controller.currentUrl(), 'https://flutter.io'); + expect(await controller!.currentUrl(), 'https://flutter.io'); - await controller.goBack(); + await controller!.goBack(); - expect(await controller.currentUrl(), 'https://youtube.com'); + expect(await controller!.currentUrl(), 'https://youtube.com'); - await controller.goForward(); + await controller!.goForward(); - expect(await controller.currentUrl(), 'https://flutter.io'); + expect(await controller!.currentUrl(), 'https://flutter.io'); }); testWidgets('Current URL', (WidgetTester tester) async { - WebViewController controller; + WebViewController? controller; await tester.pumpWidget( WebView( onWebViewCreated: (WebViewController webViewController) { @@ -322,20 +321,20 @@ void main() { expect(controller, isNotNull); // Test a WebView without an explicitly set first URL. - expect(await controller.currentUrl(), isNull); + expect(await controller!.currentUrl(), isNull); - await controller.loadUrl('https://youtube.com'); - expect(await controller.currentUrl(), 'https://youtube.com'); + await controller!.loadUrl('https://youtube.com'); + expect(await controller!.currentUrl(), 'https://youtube.com'); - await controller.loadUrl('https://flutter.io'); - expect(await controller.currentUrl(), 'https://flutter.io'); + await controller!.loadUrl('https://flutter.io'); + expect(await controller!.currentUrl(), 'https://flutter.io'); - await controller.goBack(); - expect(await controller.currentUrl(), 'https://youtube.com'); + await controller!.goBack(); + expect(await controller!.currentUrl(), 'https://youtube.com'); }); testWidgets('Reload url', (WidgetTester tester) async { - WebViewController controller; + late WebViewController controller; await tester.pumpWidget( WebView( initialUrl: 'https://flutter.io', @@ -346,7 +345,7 @@ void main() { ); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(platformWebView.currentUrl, 'https://flutter.io'); expect(platformWebView.amountOfReloadsOnCurrentUrl, 0); @@ -362,7 +361,7 @@ void main() { }); testWidgets('evaluate Javascript', (WidgetTester tester) async { - WebViewController controller; + late WebViewController controller; await tester.pumpWidget( WebView( initialUrl: 'https://flutter.io', @@ -375,15 +374,11 @@ void main() { expect( await controller.evaluateJavascript("fake js string"), "fake js string", reason: 'should get the argument'); - expect( - () => controller.evaluateJavascript(null), - throwsA(anything), - ); }); testWidgets('evaluate Javascript with JavascriptMode disabled', (WidgetTester tester) async { - WebViewController controller; + late WebViewController controller; await tester.pumpWidget( WebView( initialUrl: 'https://flutter.io', @@ -397,10 +392,6 @@ void main() { () => controller.evaluateJavascript('fake js string'), throwsA(anything), ); - expect( - () => controller.evaluateJavascript(null), - throwsA(anything), - ); }); testWidgets('Cookies can be cleared once', (WidgetTester tester) async { @@ -444,7 +435,7 @@ void main() { ); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(platformWebView.javascriptChannelNames, unorderedEquals(['Tts', 'Alarm'])); @@ -517,7 +508,7 @@ void main() { ); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(platformWebView.javascriptChannelNames, unorderedEquals(['Tts', 'Alarm2', 'Alarm3'])); @@ -560,7 +551,7 @@ void main() { ); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(platformWebView.javascriptChannelNames, unorderedEquals(['Tts'])); @@ -590,7 +581,7 @@ void main() { ); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(ttsMessagesReceived, isEmpty); expect(alarmMessagesReceived, isEmpty); @@ -603,7 +594,7 @@ void main() { group('$PageStartedCallback', () { testWidgets('onPageStarted is not null', (WidgetTester tester) async { - String returnedUrl; + String? returnedUrl; await tester.pumpWidget(WebView( initialUrl: 'https://youtube.com', @@ -613,7 +604,7 @@ void main() { )); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; platformWebView.fakeOnPageStartedCallback(); @@ -627,7 +618,7 @@ void main() { )); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; // The platform side will always invoke a call for onPageStarted. This is // to test that it does not crash on a null callback. @@ -635,7 +626,7 @@ void main() { }); testWidgets('onPageStarted changed', (WidgetTester tester) async { - String returnedUrl; + String? returnedUrl; await tester.pumpWidget(WebView( initialUrl: 'https://youtube.com', @@ -650,7 +641,7 @@ void main() { )); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; platformWebView.fakeOnPageStartedCallback(); @@ -660,7 +651,7 @@ void main() { group('$PageFinishedCallback', () { testWidgets('onPageFinished is not null', (WidgetTester tester) async { - String returnedUrl; + String? returnedUrl; await tester.pumpWidget(WebView( initialUrl: 'https://youtube.com', @@ -670,7 +661,7 @@ void main() { )); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; platformWebView.fakeOnPageFinishedCallback(); @@ -684,7 +675,7 @@ void main() { )); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; // The platform side will always invoke a call for onPageFinished. This is // to test that it does not crash on a null callback. @@ -692,7 +683,7 @@ void main() { }); testWidgets('onPageFinished changed', (WidgetTester tester) async { - String returnedUrl; + String? returnedUrl; await tester.pumpWidget(WebView( initialUrl: 'https://youtube.com', @@ -707,7 +698,7 @@ void main() { )); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; platformWebView.fakeOnPageFinishedCallback(); @@ -722,13 +713,14 @@ void main() { )); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(platformWebView.hasNavigationDelegate, false); await tester.pumpWidget(WebView( initialUrl: 'https://youtube.com', - navigationDelegate: (NavigationRequest r) => null, + navigationDelegate: (NavigationRequest r) => + NavigationDecision.navigate, )); expect(platformWebView.hasNavigationDelegate, true); @@ -748,7 +740,7 @@ void main() { })); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(platformWebView.hasNavigationDelegate, true); @@ -773,7 +765,7 @@ void main() { )); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(platformWebView.debuggingEnabled, true); }); @@ -782,7 +774,7 @@ void main() { await tester.pumpWidget(const WebView()); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(platformWebView.debuggingEnabled, false); }); @@ -792,7 +784,7 @@ void main() { await tester.pumpWidget(WebView(key: key)); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; await tester.pumpWidget(WebView( key: key, @@ -826,8 +818,8 @@ void main() { ), ); - final MyWebViewPlatform builder = WebView.platform; - final MyWebViewPlatformController platform = builder.lastPlatformBuilt; + final MyWebViewPlatform builder = WebView.platform as MyWebViewPlatform; + final MyWebViewPlatformController platform = builder.lastPlatformBuilt!; expect( platform.creationParams, @@ -837,17 +829,14 @@ void main() { javascriptMode: JavascriptMode.disabled, hasNavigationDelegate: false, debuggingEnabled: false, - userAgent: WebSetting.of(null), + userAgent: WebSetting.of(null), gestureNavigationEnabled: true, ), - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannelNames: Set(), ))); }); testWidgets('loadUrl', (WidgetTester tester) async { - WebViewController controller; + late WebViewController controller; await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', @@ -857,8 +846,8 @@ void main() { ), ); - final MyWebViewPlatform builder = WebView.platform; - final MyWebViewPlatformController platform = builder.lastPlatformBuilt; + final MyWebViewPlatform builder = WebView.platform as MyWebViewPlatform; + final MyWebViewPlatformController platform = builder.lastPlatformBuilt!; final Map headers = { 'header': 'value', @@ -877,7 +866,7 @@ void main() { )); final FakePlatformWebView platformWebView = - fakePlatformViewsController.lastCreatedView; + fakePlatformViewsController.lastCreatedView!; expect(platformWebView.userAgent, isNull); @@ -892,9 +881,9 @@ void main() { } class FakePlatformWebView { - FakePlatformWebView(int id, Map params) { + FakePlatformWebView(int? id, Map params) { if (params.containsKey('initialUrl')) { - final String initialUrl = params['initialUrl']; + final String? initialUrl = params['initialUrl']; if (initialUrl != null) { history.add(initialUrl); currentPosition++; @@ -914,20 +903,20 @@ class FakePlatformWebView { channel.setMockMethodCallHandler(onMethodCall); } - MethodChannel channel; + late MethodChannel channel; - List history = []; + List history = []; int currentPosition = -1; int amountOfReloadsOnCurrentUrl = 0; bool hasCache = true; - String get currentUrl => history.isEmpty ? null : history[currentPosition]; - JavascriptMode javascriptMode; - List javascriptChannelNames; + String? get currentUrl => history.isEmpty ? null : history[currentPosition]; + JavascriptMode? javascriptMode; + List? javascriptChannelNames; - bool hasNavigationDelegate; - bool debuggingEnabled; - String userAgent; + bool? hasNavigationDelegate; + bool? debuggingEnabled; + String? userAgent; Future onMethodCall(MethodCall call) { switch (call.method) { @@ -949,34 +938,28 @@ class FakePlatformWebView { break; case 'canGoBack': return Future.sync(() => currentPosition > 0); - break; case 'canGoForward': return Future.sync(() => currentPosition < history.length - 1); - break; case 'goBack': currentPosition = max(-1, currentPosition - 1); return Future.sync(() {}); - break; case 'goForward': currentPosition = min(history.length - 1, currentPosition + 1); return Future.sync(() {}); case 'reload': amountOfReloadsOnCurrentUrl++; return Future.sync(() {}); - break; case 'currentUrl': - return Future.value(currentUrl); - break; + return Future.value(currentUrl); case 'evaluateJavascript': return Future.value(call.arguments); - break; case 'addJavascriptChannels': final List channelNames = List.from(call.arguments); - javascriptChannelNames.addAll(channelNames); + javascriptChannelNames!.addAll(channelNames); break; case 'removeJavascriptChannels': final List channelNames = List.from(call.arguments); - javascriptChannelNames + javascriptChannelNames! .removeWhere((String channel) => channelNames.contains(channel)); break; case 'clearCache': @@ -994,14 +977,14 @@ class FakePlatformWebView { }; final ByteData data = codec .encodeMethodCall(MethodCall('javascriptChannelMessage', arguments)); - ServicesBinding.instance.defaultBinaryMessenger - .handlePlatformMessage(channel.name, data, (ByteData data) {}); + ServicesBinding.instance!.defaultBinaryMessenger + .handlePlatformMessage(channel.name, data, (ByteData? data) {}); } // Fakes a main frame navigation that was initiated by the webview, e.g when // the user clicks a link in the currently loaded page. void fakeNavigate(String url) { - if (!hasNavigationDelegate) { + if (!hasNavigationDelegate!) { print('no navigation delegate'); _loadUrl(url); return; @@ -1013,9 +996,9 @@ class FakePlatformWebView { }; final ByteData data = codec.encodeMethodCall(MethodCall('navigationRequest', arguments)); - ServicesBinding.instance.defaultBinaryMessenger - .handlePlatformMessage(channel.name, data, (ByteData data) { - final bool allow = codec.decodeEnvelope(data); + ServicesBinding.instance!.defaultBinaryMessenger + .handlePlatformMessage(channel.name, data, (ByteData? data) { + final bool allow = codec.decodeEnvelope(data!); if (allow) { _loadUrl(url); } @@ -1030,10 +1013,10 @@ class FakePlatformWebView { {'url': currentUrl}, )); - ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage( + ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage( channel.name, data, - (ByteData data) {}, + (ByteData? data) {}, ); } @@ -1045,14 +1028,14 @@ class FakePlatformWebView { {'url': currentUrl}, )); - ServicesBinding.instance.defaultBinaryMessenger.handlePlatformMessage( + ServicesBinding.instance!.defaultBinaryMessenger.handlePlatformMessage( channel.name, data, - (ByteData data) {}, + (ByteData? data) {}, ); } - void _loadUrl(String url) { + void _loadUrl(String? url) { history = history.sublist(0, currentPosition + 1); history.add(url); currentPosition++; @@ -1061,13 +1044,13 @@ class FakePlatformWebView { } class _FakePlatformViewsController { - FakePlatformWebView lastCreatedView; + FakePlatformWebView? lastCreatedView; Future fakePlatformViewsMethodHandler(MethodCall call) { switch (call.method) { case 'create': final Map args = call.arguments; - final Map params = _decodeParams(args['params']); + final Map params = _decodeParams(args['params'])!; lastCreatedView = FakePlatformWebView( args['id'], params, @@ -1083,7 +1066,7 @@ class _FakePlatformViewsController { } } -Map _decodeParams(Uint8List paramsMessage) { +Map? _decodeParams(Uint8List paramsMessage) { final ByteBuffer buffer = paramsMessage.buffer; final ByteData messageBytes = buffer.asByteData( paramsMessage.offsetInBytes, @@ -1114,9 +1097,8 @@ class _FakeCookieManager { return Future.sync(() { return hadCookies; }); - break; } - return Future.sync(() => null); + return Future.sync(() => true); } void reset() { @@ -1125,26 +1107,26 @@ class _FakeCookieManager { } class MyWebViewPlatform implements WebViewPlatform { - MyWebViewPlatformController lastPlatformBuilt; + MyWebViewPlatformController? lastPlatformBuilt; @override Widget build({ - BuildContext context, - CreationParams creationParams, - @required WebViewPlatformCallbacksHandler webViewPlatformCallbacksHandler, - @required WebViewPlatformCreatedCallback onWebViewPlatformCreated, - Set> gestureRecognizers, + BuildContext? context, + CreationParams? creationParams, + required WebViewPlatformCallbacksHandler webViewPlatformCallbacksHandler, + WebViewPlatformCreatedCallback? onWebViewPlatformCreated, + Set>? gestureRecognizers, }) { assert(onWebViewPlatformCreated != null); lastPlatformBuilt = MyWebViewPlatformController( creationParams, gestureRecognizers, webViewPlatformCallbacksHandler); - onWebViewPlatformCreated(lastPlatformBuilt); + onWebViewPlatformCreated!(lastPlatformBuilt); return Container(); } @override Future clearCookies() { - return Future.sync(() => null); + return Future.sync(() => true); } } @@ -1153,25 +1135,24 @@ class MyWebViewPlatformController extends WebViewPlatformController { WebViewPlatformCallbacksHandler platformHandler) : super(platformHandler); - CreationParams creationParams; - Set> gestureRecognizers; + CreationParams? creationParams; + Set>? gestureRecognizers; - String lastUrlLoaded; - Map lastRequestHeaders; + String? lastUrlLoaded; + Map? lastRequestHeaders; @override - Future loadUrl(String url, Map headers) { + Future loadUrl(String url, Map? headers) async { equals(1, 1); lastUrlLoaded = url; lastRequestHeaders = headers; - return null; } } class MatchesWebSettings extends Matcher { MatchesWebSettings(this._webSettings); - final WebSettings _webSettings; + final WebSettings? _webSettings; @override Description describe(Description description) => @@ -1180,13 +1161,13 @@ class MatchesWebSettings extends Matcher { @override bool matches( covariant WebSettings webSettings, Map matchState) { - return _webSettings.javascriptMode == webSettings.javascriptMode && - _webSettings.hasNavigationDelegate == + return _webSettings!.javascriptMode == webSettings.javascriptMode && + _webSettings!.hasNavigationDelegate == webSettings.hasNavigationDelegate && - _webSettings.debuggingEnabled == webSettings.debuggingEnabled && - _webSettings.gestureNavigationEnabled == + _webSettings!.debuggingEnabled == webSettings.debuggingEnabled && + _webSettings!.gestureNavigationEnabled == webSettings.gestureNavigationEnabled && - _webSettings.userAgent == webSettings.userAgent; + _webSettings!.userAgent == webSettings.userAgent; } } @@ -1204,7 +1185,7 @@ class MatchesCreationParams extends Matcher { Map matchState) { return _creationParams.initialUrl == creationParams.initialUrl && MatchesWebSettings(_creationParams.webSettings) - .matches(creationParams.webSettings, matchState) && + .matches(creationParams.webSettings!, matchState) && orderedEquals(_creationParams.javascriptChannelNames) .matches(creationParams.javascriptChannelNames, matchState); } diff --git a/script/nnbd_plugins.sh b/script/nnbd_plugins.sh index 8b73ecc24e99..6e08c72df4bf 100644 --- a/script/nnbd_plugins.sh +++ b/script/nnbd_plugins.sh @@ -15,6 +15,7 @@ readonly NNBD_PLUGINS_LIST=( "plugin_platform_interface" "url_launcher" "video_player" + "webview_flutter" ) export EXCLUDED_PLUGINS_FROM_STABLE=$(IFS=, ; echo "${NNBD_PLUGINS_LIST[*]}") From 88466ff7325a112dd6158ab3a3f8f21a9ff66b80 Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Tue, 15 Dec 2020 08:29:06 -0800 Subject: [PATCH 11/24] [share] Migrate to null-safety (#3311) --- packages/share/CHANGELOG.md | 4 ++++ packages/share/lib/share.dart | 12 ++++++------ packages/share/pubspec.yaml | 17 +++++++---------- packages/share/test/share_test.dart | 18 +----------------- script/nnbd_plugins.sh | 1 + 5 files changed, 19 insertions(+), 33 deletions(-) diff --git a/packages/share/CHANGELOG.md b/packages/share/CHANGELOG.md index 8a3806209c1c..86906bbd56be 100644 --- a/packages/share/CHANGELOG.md +++ b/packages/share/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety + +* Migrate to null safety. + ## 0.6.5+5 * Update Flutter SDK constraint. diff --git a/packages/share/lib/share.dart b/packages/share/lib/share.dart index 4a3ff6f1de09..f15566714857 100644 --- a/packages/share/lib/share.dart +++ b/packages/share/lib/share.dart @@ -33,8 +33,8 @@ class Share { /// from [MethodChannel]. static Future share( String text, { - String subject, - Rect sharePositionOrigin, + String? subject, + Rect? sharePositionOrigin, }) { assert(text != null); assert(text.isNotEmpty); @@ -67,10 +67,10 @@ class Share { /// from [MethodChannel]. static Future shareFiles( List paths, { - List mimeTypes, - String subject, - String text, - Rect sharePositionOrigin, + List? mimeTypes, + String? subject, + String? text, + Rect? sharePositionOrigin, }) { assert(paths != null); assert(paths.isNotEmpty); diff --git a/packages/share/pubspec.yaml b/packages/share/pubspec.yaml index 23644d290473..69d0fdbd5eb8 100644 --- a/packages/share/pubspec.yaml +++ b/packages/share/pubspec.yaml @@ -2,10 +2,7 @@ name: share description: Flutter plugin for sharing content via the platform share UI, using the ACTION_SEND intent on Android and UIActivityViewController on iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/share -# 0.6.y+z is compatible with 1.0.0, if you land a breaking change bump -# the version to 2.0.0. -# See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.6.5+5 +version: 2.0.0-nullsafety flutter: plugin: @@ -17,20 +14,20 @@ flutter: pluginClass: FLTSharePlugin dependencies: - meta: ^1.0.5 - mime: ^0.9.7 + meta: ^1.3.0-nullsafety.6 + mime: ^1.0.0-nullsafety.0 flutter: sdk: flutter dev_dependencies: - test: ^1.3.0 - mockito: ^3.0.0 + test: ^1.16.0-nullsafety.13 + mockito: ^4.1.3 flutter_test: sdk: flutter integration_test: path: ../integration_test - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.3 environment: - sdk: ">=2.1.0 <3.0.0" flutter: ">=1.12.13+hotfix.5" + sdk: ">=2.12.0-0 <3.0.0" diff --git a/packages/share/test/share_test.dart b/packages/share/test/share_test.dart index e862d1baf579..fa9f980beae3 100644 --- a/packages/share/test/share_test.dart +++ b/packages/share/test/share_test.dart @@ -15,7 +15,7 @@ import 'package:flutter/services.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); - MockMethodChannel mockChannel; + late MockMethodChannel mockChannel; setUp(() { mockChannel = MockMethodChannel(); @@ -26,14 +26,6 @@ void main() { }); }); - test('sharing null fails', () { - expect( - () => Share.share(null), - throwsA(const TypeMatcher()), - ); - verifyZeroInteractions(mockChannel); - }); - test('sharing empty fails', () { expect( () => Share.share(''), @@ -58,14 +50,6 @@ void main() { })); }); - test('sharing null file fails', () { - expect( - () => Share.shareFiles([null]), - throwsA(const TypeMatcher()), - ); - verifyZeroInteractions(mockChannel); - }); - test('sharing empty file fails', () { expect( () => Share.shareFiles(['']), diff --git a/script/nnbd_plugins.sh b/script/nnbd_plugins.sh index 6e08c72df4bf..5e671c23d5fd 100644 --- a/script/nnbd_plugins.sh +++ b/script/nnbd_plugins.sh @@ -13,6 +13,7 @@ readonly NNBD_PLUGINS_LIST=( "local_auth" "path_provider" "plugin_platform_interface" + "share" "url_launcher" "video_player" "webview_flutter" From f8a53a5f27f3f6eeb58e4ae0cfedcc362e8950b9 Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Tue, 15 Dec 2020 09:54:42 -0800 Subject: [PATCH 12/24] [android_intent] Migrate to nnbd (#3328) --- packages/android_intent/CHANGELOG.md | 4 +++ .../android_intent/lib/android_intent.dart | 27 ++++++++++--------- packages/android_intent/pubspec.yaml | 17 +++++------- .../test/android_intent_test.dart | 4 ++- script/nnbd_plugins.sh | 1 + 5 files changed, 29 insertions(+), 24 deletions(-) diff --git a/packages/android_intent/CHANGELOG.md b/packages/android_intent/CHANGELOG.md index f3534982a971..65c991c6f7b2 100644 --- a/packages/android_intent/CHANGELOG.md +++ b/packages/android_intent/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety + +* Migrate to null safety. + ## 0.3.7+8 * Update Flutter SDK constraint. diff --git a/packages/android_intent/lib/android_intent.dart b/packages/android_intent/lib/android_intent.dart index 9d701979b392..0ab2d7bee420 100644 --- a/packages/android_intent/lib/android_intent.dart +++ b/packages/android_intent/lib/android_intent.dart @@ -36,7 +36,7 @@ class AndroidIntent { this.arguments, this.package, this.componentName, - Platform platform, + Platform? platform, this.type, }) : assert(action != null || componentName != null, 'action or component (or both) must be specified'), @@ -47,8 +47,8 @@ class AndroidIntent { /// app code, it may break without warning. @visibleForTesting AndroidIntent.private({ - @required Platform platform, - @required MethodChannel channel, + required Platform platform, + required MethodChannel channel, this.action, this.flags, this.category, @@ -66,47 +66,47 @@ class AndroidIntent { /// includes constants like `ACTION_VIEW`. /// /// See https://developer.android.com/reference/android/content/Intent.html#intent-structure. - final String action; + final String? action; /// Constants that can be set on an intent to tweak how it is finally handled. /// Some of the constants are mirrored to Dart via [Flag]. /// /// See https://developer.android.com/reference/android/content/Intent.html#setFlags(int). - final List flags; + final List? flags; /// An optional additional constant qualifying the given [action]. /// /// See https://developer.android.com/reference/android/content/Intent.html#intent-structure. - final String category; + final String? category; /// The Uri that the [action] is pointed towards. /// /// See https://developer.android.com/reference/android/content/Intent.html#intent-structure. - final String data; + final String? data; /// The equivalent of `extras`, a generic `Bundle` of data that the Intent can /// carry. This is a slot for extraneous data that the listener may use. /// /// See https://developer.android.com/reference/android/content/Intent.html#intent-structure. - final Map arguments; + final Map? arguments; /// Sets the [data] to only resolve within this given package. /// /// See https://developer.android.com/reference/android/content/Intent.html#setPackage(java.lang.String). - final String package; + final String? package; /// Set the exact `ComponentName` that should handle the intent. If this is /// set [package] should also be non-null. /// /// See https://developer.android.com/reference/android/content/Intent.html#setComponent(android.content.ComponentName). - final String componentName; + final String? componentName; final MethodChannel _channel; final Platform _platform; /// Set an explicit MIME data type. /// /// See https://developer.android.com/reference/android/content/Intent.html#intent-structure. - final String type; + final String? type; bool _isPowerOfTwo(int x) { /* First x in the below expression is for the case when x is 0 */ @@ -146,17 +146,18 @@ class AndroidIntent { return false; } - return await _channel.invokeMethod( + final result = await _channel.invokeMethod( 'canResolveActivity', _buildArguments(), ); + return result!; } /// Constructs the map of arguments which is passed to the plugin. Map _buildArguments() { return { if (action != null) 'action': action, - if (flags != null) 'flags': convertFlags(flags), + if (flags != null) 'flags': convertFlags(flags!), if (category != null) 'category': category, if (data != null) 'data': data, if (arguments != null) 'arguments': arguments, diff --git a/packages/android_intent/pubspec.yaml b/packages/android_intent/pubspec.yaml index 1b63371e488c..aec7ad0d5a18 100644 --- a/packages/android_intent/pubspec.yaml +++ b/packages/android_intent/pubspec.yaml @@ -1,10 +1,7 @@ name: android_intent description: Flutter plugin for launching Android Intents. Not supported on iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/android_intent -# 0.3.y+z is compatible with 1.0.0, if you land a breaking change bump -# the version to 2.0.0. -# See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.3.7+8 +version: 2.0.0-nullsafety flutter: plugin: @@ -16,15 +13,15 @@ flutter: dependencies: flutter: sdk: flutter - platform: ">=2.0.0 <4.0.0" - meta: ^1.0.5 + platform: ^3.0.0-nullsafety.4 + meta: ^1.3.0-nullsafety.6 dev_dependencies: - test: ^1.3.0 - mockito: ^3.0.0 + test: ^1.16.0-nullsafety.13 + mockito: ^4.1.3 flutter_test: sdk: flutter - pedantic: ^1.8.0 + pedantic: ^1.10.0-nullsafety.1 environment: - sdk: ">=2.3.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13+hotfix.5" diff --git a/packages/android_intent/test/android_intent_test.dart b/packages/android_intent/test/android_intent_test.dart index 311628853159..b0fa48e22fee 100644 --- a/packages/android_intent/test/android_intent_test.dart +++ b/packages/android_intent/test/android_intent_test.dart @@ -11,9 +11,11 @@ import 'package:platform/platform.dart'; void main() { AndroidIntent androidIntent; - MockMethodChannel mockChannel; + late MockMethodChannel mockChannel; setUp(() { mockChannel = MockMethodChannel(); + when(mockChannel.invokeMethod('canResolveActivity', any)) + .thenAnswer((realInvocation) async => true); }); group('AndroidIntent', () { diff --git a/script/nnbd_plugins.sh b/script/nnbd_plugins.sh index 5e671c23d5fd..0cab28abe2ab 100644 --- a/script/nnbd_plugins.sh +++ b/script/nnbd_plugins.sh @@ -5,6 +5,7 @@ # null-safe is available on stable. readonly NNBD_PLUGINS_LIST=( + "android_intent" "connectivity" "device_info" "flutter_plugin_android_lifecycle" From bad9fd1578ad66db6a5559baef2ad21a6286992a Mon Sep 17 00:00:00 2001 From: Febry Ardiansyah Date: Wed, 16 Dec 2020 02:07:13 +0700 Subject: [PATCH 13/24] [wifi_info_flutter] Edit sample wifi_info_flutter plugin (#3271) --- packages/wifi_info_flutter/wifi_info_flutter/CHANGELOG.md | 4 ++++ packages/wifi_info_flutter/wifi_info_flutter/README.md | 6 +++--- packages/wifi_info_flutter/wifi_info_flutter/pubspec.yaml | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/wifi_info_flutter/wifi_info_flutter/CHANGELOG.md b/packages/wifi_info_flutter/wifi_info_flutter/CHANGELOG.md index 9073486aa601..5c3ea32e8ef9 100644 --- a/packages/wifi_info_flutter/wifi_info_flutter/CHANGELOG.md +++ b/packages/wifi_info_flutter/wifi_info_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.3 + +* Fix README example. + ## 1.0.2 * Update Flutter SDK constraint. diff --git a/packages/wifi_info_flutter/wifi_info_flutter/README.md b/packages/wifi_info_flutter/wifi_info_flutter/README.md index 0c2eff383c16..e1c0c84dc04b 100644 --- a/packages/wifi_info_flutter/wifi_info_flutter/README.md +++ b/packages/wifi_info_flutter/wifi_info_flutter/README.md @@ -24,9 +24,9 @@ You can get wi-fi related information using: ```dart import 'package:wifi_info_flutter/wifi_info_flutter.dart'; -var wifiBSSID = await WifiFlutter().getWifiBSSID(); -var wifiIP = await WifiFlutter().getWifiIP(); -var wifiName = await WifiFlutter().getWifiName(); +var wifiBSSID = await WifiInfo().getWifiBSSID(); +var wifiIP = await WifiInfo().getWifiIP(); +var wifiName = await WifiInfo().getWifiName(); ``` ### iOS 12 diff --git a/packages/wifi_info_flutter/wifi_info_flutter/pubspec.yaml b/packages/wifi_info_flutter/wifi_info_flutter/pubspec.yaml index 09dff3a48104..4f5ecafb50b4 100644 --- a/packages/wifi_info_flutter/wifi_info_flutter/pubspec.yaml +++ b/packages/wifi_info_flutter/wifi_info_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: wifi_info_flutter description: A new flutter plugin project. -version: 1.0.2 +version: 1.0.3 homepage: https://github.com/flutter/plugins/tree/master/packages/wifi_info_flutter/wifi_info_flutter environment: From b85d8eb326a6f197fd613966c94ae69f8278c552 Mon Sep 17 00:00:00 2001 From: Maurits van Beusekom Date: Wed, 16 Dec 2020 08:45:03 +0100 Subject: [PATCH 14/24] [camera_platform_interface] Add torch definition to the FlashModes enum (#3326) * Fix formatting issues * Make sure torch value is serialized correctly --- packages/camera/camera_platform_interface/CHANGELOG.md | 4 ++++ .../lib/src/method_channel/method_channel_camera.dart | 2 ++ .../lib/src/platform_interface/camera_platform.dart | 2 +- .../camera_platform_interface/lib/src/types/flash_mode.dart | 3 +++ packages/camera/camera_platform_interface/pubspec.yaml | 2 +- .../test/types/flash_mode_test.dart | 5 +++-- 6 files changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/camera/camera_platform_interface/CHANGELOG.md b/packages/camera/camera_platform_interface/CHANGELOG.md index 500e8d67a6e4..ea9821e841f9 100644 --- a/packages/camera/camera_platform_interface/CHANGELOG.md +++ b/packages/camera/camera_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.4 + +- Added the torch option to the FlashMode enum, which when implemented indicates the flash light should be turned on continuously. + ## 1.0.3 - Update Flutter SDK constraint. diff --git a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart index bc836b0ac98e..3bf996fedb19 100644 --- a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart +++ b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart @@ -226,6 +226,8 @@ class MethodChannelCamera extends CameraPlatform { return 'auto'; case FlashMode.always: return 'always'; + case FlashMode.torch: + return 'torch'; default: throw ArgumentError('Unknown FlashMode value'); } diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart index c398e9e9ef17..6f96079dc55c 100644 --- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart +++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart @@ -108,7 +108,7 @@ abstract class CameraPlatform extends PlatformInterface { throw UnimplementedError('resumeVideoRecording() is not implemented.'); } - /// Sets the flash mode for taking pictures. + /// Sets the flash mode for the selected camera. Future setFlashMode(int cameraId, FlashMode mode) { throw UnimplementedError('setFlashMode() is not implemented.'); } diff --git a/packages/camera/camera_platform_interface/lib/src/types/flash_mode.dart b/packages/camera/camera_platform_interface/lib/src/types/flash_mode.dart index 6ed92e4801eb..7feb59caeab8 100644 --- a/packages/camera/camera_platform_interface/lib/src/types/flash_mode.dart +++ b/packages/camera/camera_platform_interface/lib/src/types/flash_mode.dart @@ -12,4 +12,7 @@ enum FlashMode { /// Always use the flash when taking a picture. always, + + /// Turns on the flash light and keeps it on until switched off. + torch, } diff --git a/packages/camera/camera_platform_interface/pubspec.yaml b/packages/camera/camera_platform_interface/pubspec.yaml index 9349c5536ff2..8cb643e84ca6 100644 --- a/packages/camera/camera_platform_interface/pubspec.yaml +++ b/packages/camera/camera_platform_interface/pubspec.yaml @@ -3,7 +3,7 @@ description: A common platform interface for the camera plugin. homepage: https://github.com/flutter/plugins/tree/master/packages/camera/camera_platform_interface # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 1.0.3 +version: 1.0.4 dependencies: flutter: diff --git a/packages/camera/camera_platform_interface/test/types/flash_mode_test.dart b/packages/camera/camera_platform_interface/test/types/flash_mode_test.dart index 59726acf7873..c9df64152cef 100644 --- a/packages/camera/camera_platform_interface/test/types/flash_mode_test.dart +++ b/packages/camera/camera_platform_interface/test/types/flash_mode_test.dart @@ -6,10 +6,10 @@ import 'package:camera_platform_interface/camera_platform_interface.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { - test('FlashMode should contain 3 options', () { + test('FlashMode should contain 4 options', () { final values = FlashMode.values; - expect(values.length, 3); + expect(values.length, 4); }); test("FlashMode enum should have items in correct index", () { @@ -18,5 +18,6 @@ void main() { expect(values[0], FlashMode.off); expect(values[1], FlashMode.auto); expect(values[2], FlashMode.always); + expect(values[3], FlashMode.torch); }); } From aa8fcb4b758f65b8968c427b4e18694ffd9d530d Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Wed, 16 Dec 2020 09:51:19 -0800 Subject: [PATCH 15/24] [webview_flutter] Added 'allowsInlineMediaPlayback' property (#3334) --- packages/webview_flutter/CHANGELOG.md | 4 + .../webviewflutter/FlutterWebView.java | 3 + .../example/assets/sample_video.mp4 | Bin 0 -> 1053651 bytes .../webview_flutter_test.dart | 225 +++++++++++++++++- .../webview_flutter/example/lib/main.dart | 6 +- packages/webview_flutter/example/pubspec.yaml | 1 + .../ios/Classes/FlutterWebView.m | 3 + .../lib/platform_interface.dart | 8 +- .../lib/src/webview_method_channel.dart | 2 + .../webview_flutter/lib/webview_flutter.dart | 10 + packages/webview_flutter/pubspec.yaml | 2 +- .../test/webview_flutter_test.dart | 42 ++-- 12 files changed, 263 insertions(+), 43 deletions(-) create mode 100644 packages/webview_flutter/example/assets/sample_video.mp4 diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md index 352613997aa0..a10c28dc20b7 100644 --- a/packages/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety.1 + +* Added `allowsInlineMediaPlayback` property. + ## 2.0.0-nullsafety * Migration to null-safety. diff --git a/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java b/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java index bfb79a39e8ba..ef9f006f6e5b 100644 --- a/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java +++ b/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java @@ -372,6 +372,9 @@ private void applySettings(Map settings) { case "userAgent": updateUserAgent((String) settings.get(key)); break; + case "allowsInlineMediaPlayback": + // no-op inline media playback is always allowed on Android. + break; default: throw new IllegalArgumentException("Unknown WebView setting: " + key); } diff --git a/packages/webview_flutter/example/assets/sample_video.mp4 b/packages/webview_flutter/example/assets/sample_video.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..a203d0cdf13ea5106cdb8c98b52301f0e3719bac GIT binary patch literal 1053651 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%0A0_A2BB?T)i~ z4N2W5nUMXhn#m5ZjZ%8r@Zo^*hAJ$sW*4*wd7e z-^TSy`GRU+6j(e{#3C)$=TSoCvXhQ~i^5G`ofJ5H1Z3HM)UsT1Coa+z;Y7uEc0L$+P?b`&$h#6;Yn%gIcBF+k7a&xe@o$Bh~szTL@SG zT)$gE=cK;ka@n3^lyUynKCW8B-PT8qelkZD(p2E)OHfV`|IC)anf? zXHgh~dn(MW&9GyMCugeU#Cy||Bqd}VgD9hSYV51>!eh1?d3T5-#)3}6ZJUinQXnP^ z;*${1{1F^$7KNfuI$E)L=5yDpAh4BNO+c5$1xW7x#OG3owTv)i_)h!cjohtgw6V

Jbq-814NPd$TYkZAM*DuEbPgkd!5Mv&pQs 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%0A$ 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

F^h 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�L$2-vNN2qd&Na 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%0D@5 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%0Ar{$@$bdoE3f zl+)Mctbu8+cf2|ZjG4pJdASDk3rIyAtP$Vil5r_2J=$ajGZKuZ(6c+qweFga?LnP& z$B9ce!%KXsjXq5SRfiPXswS-iY((b=Cco(GpJg%HS)DkqdeAqujLe#wR1zIZXdXP{ z{tH_2aQ2**7FUgJ)s3-;>kvl}STp0|mAA_vm-_%l7@!GoQnEZj3wN(80xE$qG2{SZ zIMDDIsc1tgV(E1RH4YJVhAu$OSF2jgifS7B-^nsAh0uNyKAFA00E3gW={GK;j+f~h zohq|x14})MW>4@JUmZX(s#ELWl|&eClZa?zxfeI^w{P$BU}>beL!G4Rep3Q0XhY|# zxX-5XZ-SNl@9g(p$H;TR8^d%KYV;`5n>Y_aoKvj|F~_3CwYLL;Zix|MBKN2Gc{jQ^juMuW*km>*!flJ3%IgUW|mpYG8n(BlD(= zYaIL2*Z$588bvRM9b$(#z4=TEXV9>co`${%P2`k7B7-~6>N(aHVi(&XpuZ-pXx}8J%at2o*u<+f=PXCZey2HqS=mzo{*yq2fLiL}*XZ zFZeeaaI|A3?OjRz)Z6fr<&iM{;EgKuw)kJtQnzdIf=Lz8g5bD!>Ia zdi`-EPy%YiqM4s6@-AJS@SL0+)PksAdKJAS&*Ey};Xakz&^z;~{8{gTcy=q3YYClv zekUcJ%~sr=N{K9hX!$%3c3!|GFk!pb^G}j!x71<{nI&QBJUn2ymOZw%1&_z{D#Qo< z2$?==`s+b@XX*7fe2!fCvwA{W`$X9{i$w*gsz#xQ>Y{}mFMjgCOEcAfXwK!9Sp-=Z z9Usy4Z)(`b$B#j76y_&2ic<4cA7>hWa6R18Pl|eS%{#6@R=(Vqn!n)X_uW$mKnCW> z-*d;?76M%O1oGjbbt%9pej*EB^N1_ObjuI1Zh4YOKs@ncY-7 z2q=(=jyXe)u=tLTJ3$7Qzr*VJkHf9v#IOz>-5mCkOJz9fJ6>I0PLu7>h~29nGp1bc z8WiO5fOo6hUK4?w{!!hGwh^=aI}NAkma6QANzyC+1_`9i7#!|pW&6^cChdHbS5!S- zH!Ul?HZGc4CHp;M^{4EU@Olj=Bd$d*Z}RFF+fef(Zm?`MYCk7|d`lPn!FWqnQ`AA@ z4IU0gubhAd5BZBo`LAS86*b{r+#st5zw7dilQAoUbQ}twfKkI+qFZQi#`)^;o%Ru2 z^`^CM5Ohh6b9B)zbsa008rLxbYPmm=%ERRw~S9bM$Y0wsrahI#{GgU}6$>h<`*GDSby=9`8*n?2Yz8fw^8tTIp z^;e{gUf#2x;_5Dd#V9R@4JRhisFtJp!mXO!JUJxBWdF~6fNCq36aD{VKFHf$goW8; zT%)x&-uAMS6^e8$<9x{7((ihXPIjHt$77YB`Rek-MQUO+U^;GZ_nlOJ@z7=OISFHx z#^;?KyE;~DK58rpLf2Vm6az0E_wR4dR9h@t$)d*z2RLDaG_rYAX1k%auZNovLX;45 zJi)jrGgyF$L<3rvz=5k~dK zvFg1cs&u-v(42YX^B;@Ie*C`pjq+UIHhg;~EMiC1aF)SLYc}a-XDSlqQ7+o;qZhq8YUzO!c{RRD4xm>%0;ACrnaQ=0 zK)ht{r19Q3{cHDA6-qWhSpg�IeT~@r?-xXXpbi!xq0(h5wcR4zyG}?;yV7-{-lT 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�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 z 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

^$ywdz$5hK=ZG`Afn0K9XJjIQXceAoppq9T@ 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 OVI?aqAtfUr_5T3)u@DIW literal 0 HcmV?d00001 diff --git a/packages/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/example/integration_test/webview_flutter_test.dart index 2a17c53a4c3f..86cf8ab73e05 100644 --- a/packages/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -120,16 +120,14 @@ void main() { controllerCompleter.complete(controller); }, javascriptMode: JavascriptMode.unrestricted, - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannels: [ + javascriptChannels: { JavascriptChannel( name: 'Echo', onMessageReceived: (JavascriptMessage message) { messagesReceived.add(message.message); }, ), - ].toSet(), + }, onPageStarted: (String url) { pageStarted.complete(null); }, @@ -180,16 +178,14 @@ void main() { onWebViewCreated: (WebViewController controller) { controllerCompleter.complete(controller); }, - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannels: [ + javascriptChannels: { JavascriptChannel( name: 'Resize', onMessageReceived: (JavascriptMessage message) { resizeCompleter.complete(true); }, ), - ].toSet(), + }, onPageStarted: (String url) { pageStarted.complete(null); }, @@ -327,7 +323,218 @@ void main() { expect(customUserAgent2, defaultPlatformUserAgent); }); - group('Media playback policy', () { + group('Video playback policy', () { + String videoTestBase64; + setUpAll(() async { + final ByteData videoData = + await rootBundle.load('assets/sample_video.mp4'); + final String base64VideoData = + base64Encode(Uint8List.view(videoData.buffer)); + final String videoTest = ''' + + Codestin Search App + + + + + + + '''; + videoTestBase64 = base64Encode(const Utf8Encoder().convert(videoTest)); + }); + + test('Auto media playback', () async { + Completer controllerCompleter = + Completer(); + Completer pageLoaded = Completer(); + + await pumpWidget( + Directionality( + textDirection: TextDirection.ltr, + child: WebView( + key: GlobalKey(), + initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64', + onWebViewCreated: (WebViewController controller) { + controllerCompleter.complete(controller); + }, + javascriptMode: JavascriptMode.unrestricted, + onPageFinished: (String url) { + pageLoaded.complete(null); + }, + initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow, + ), + ), + ); + WebViewController controller = await controllerCompleter.future; + await pageLoaded.future; + + String isPaused = await controller.evaluateJavascript('isPaused();'); + expect(isPaused, _webviewBool(false)); + + controllerCompleter = Completer(); + pageLoaded = Completer(); + + // We change the key to re-create a new webview as we change the initialMediaPlaybackPolicy + await pumpWidget( + Directionality( + textDirection: TextDirection.ltr, + child: WebView( + key: GlobalKey(), + initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64', + onWebViewCreated: (WebViewController controller) { + controllerCompleter.complete(controller); + }, + javascriptMode: JavascriptMode.unrestricted, + onPageFinished: (String url) { + pageLoaded.complete(null); + }, + initialMediaPlaybackPolicy: + AutoMediaPlaybackPolicy.require_user_action_for_all_media_types, + ), + ), + ); + + controller = await controllerCompleter.future; + await pageLoaded.future; + + isPaused = await controller.evaluateJavascript('isPaused();'); + expect(isPaused, _webviewBool(true)); + }); + + test('Changes to initialMediaPlaybackPolicy are ignored', () async { + final Completer controllerCompleter = + Completer(); + Completer pageLoaded = Completer(); + + final GlobalKey key = GlobalKey(); + await pumpWidget( + Directionality( + textDirection: TextDirection.ltr, + child: WebView( + key: key, + initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64', + onWebViewCreated: (WebViewController controller) { + controllerCompleter.complete(controller); + }, + javascriptMode: JavascriptMode.unrestricted, + onPageFinished: (String url) { + pageLoaded.complete(null); + }, + initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow, + ), + ), + ); + final WebViewController controller = await controllerCompleter.future; + await pageLoaded.future; + + String isPaused = await controller.evaluateJavascript('isPaused();'); + expect(isPaused, _webviewBool(false)); + + pageLoaded = Completer(); + + await pumpWidget( + Directionality( + textDirection: TextDirection.ltr, + child: WebView( + key: key, + initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64', + onWebViewCreated: (WebViewController controller) { + controllerCompleter.complete(controller); + }, + javascriptMode: JavascriptMode.unrestricted, + onPageFinished: (String url) { + pageLoaded.complete(null); + }, + initialMediaPlaybackPolicy: + AutoMediaPlaybackPolicy.require_user_action_for_all_media_types, + ), + ), + ); + + await controller.reload(); + + await pageLoaded.future; + + isPaused = await controller.evaluateJavascript('isPaused();'); + expect(isPaused, _webviewBool(false)); + }); + + test('Video plays inline when allowsInlineMediaPlayback is true', () async { + Completer controllerCompleter = + Completer(); + Completer pageLoaded = Completer(); + + await pumpWidget( + Directionality( + textDirection: TextDirection.ltr, + child: WebView( + key: GlobalKey(), + initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64', + onWebViewCreated: (WebViewController controller) { + controllerCompleter.complete(controller); + }, + javascriptMode: JavascriptMode.unrestricted, + onPageFinished: (String url) { + pageLoaded.complete(null); + }, + initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow, + allowsInlineMediaPlayback: true, + ), + ), + ); + WebViewController controller = await controllerCompleter.future; + await pageLoaded.future; + + String isFullScreen = + await controller.evaluateJavascript('isFullScreen();'); + expect(isFullScreen, _webviewBool(false)); + + controllerCompleter = Completer(); + pageLoaded = Completer(); + + await pumpWidget( + Directionality( + textDirection: TextDirection.ltr, + child: WebView( + key: GlobalKey(), + initialUrl: 'data:text/html;charset=utf-8;base64,$videoTestBase64', + onWebViewCreated: (WebViewController controller) { + controllerCompleter.complete(controller); + }, + javascriptMode: JavascriptMode.unrestricted, + onPageFinished: (String url) { + pageLoaded.complete(null); + }, + initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow, + allowsInlineMediaPlayback: false, + ), + ), + ); + + controller = await controllerCompleter.future; + await pageLoaded.future; + + isFullScreen = await controller.evaluateJavascript('isFullScreen();'); + expect(isFullScreen, _webviewBool(true)); + }); + }); + + group('Audio playback policy', () { String audioTestBase64; setUpAll(() async { final ByteData audioData = diff --git a/packages/webview_flutter/example/lib/main.dart b/packages/webview_flutter/example/lib/main.dart index 7ec3008337d8..2a4b652d2658 100644 --- a/packages/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/example/lib/main.dart @@ -62,11 +62,9 @@ class _WebViewExampleState extends State { onWebViewCreated: (WebViewController webViewController) { _controller.complete(webViewController); }, - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannels: [ + javascriptChannels: { _toasterJavascriptChannel(context), - ].toSet(), + }, navigationDelegate: (NavigationRequest request) { if (request.url.startsWith('https://www.youtube.com/')) { print('blocking navigation to $request}'); diff --git a/packages/webview_flutter/example/pubspec.yaml b/packages/webview_flutter/example/pubspec.yaml index 44c740ae9739..543e7fd86971 100644 --- a/packages/webview_flutter/example/pubspec.yaml +++ b/packages/webview_flutter/example/pubspec.yaml @@ -23,3 +23,4 @@ flutter: uses-material-design: true assets: - assets/sample_audio.ogg + - assets/sample_video.mp4 diff --git a/packages/webview_flutter/ios/Classes/FlutterWebView.m b/packages/webview_flutter/ios/Classes/FlutterWebView.m index 969e010913f3..ed3cf44424e8 100644 --- a/packages/webview_flutter/ios/Classes/FlutterWebView.m +++ b/packages/webview_flutter/ios/Classes/FlutterWebView.m @@ -332,6 +332,9 @@ - (NSString*)applySettings:(NSDictionary*)settings { } else if ([key isEqualToString:@"userAgent"]) { NSString* userAgent = settings[key]; [self updateUserAgent:[userAgent isEqual:[NSNull null]] ? nil : userAgent]; + } else if ([key isEqualToString:@"allowsInlineMediaPlayback"]) { + NSNumber* allowsInlineMediaPlayback = settings[key]; + _webView.configuration.allowsInlineMediaPlayback = [allowsInlineMediaPlayback boolValue]; } else { [unknownKeys addObject:key]; } diff --git a/packages/webview_flutter/lib/platform_interface.dart b/packages/webview_flutter/lib/platform_interface.dart index f162e58cf0f9..a840c0036fb3 100644 --- a/packages/webview_flutter/lib/platform_interface.dart +++ b/packages/webview_flutter/lib/platform_interface.dart @@ -390,6 +390,7 @@ class WebSettings { this.hasNavigationDelegate, this.debuggingEnabled, this.gestureNavigationEnabled, + this.allowsInlineMediaPlayback, required this.userAgent, }) : assert(userAgent != null); @@ -404,6 +405,11 @@ class WebSettings { /// See also: [WebView.debuggingEnabled]. final bool? debuggingEnabled; + /// Whether to play HTML5 videos inline or use the native full-screen controller on iOS. + /// + /// This will have no effect on Android. + final bool? allowsInlineMediaPlayback; + /// The value used for the HTTP `User-Agent:` request header. /// /// If [userAgent.value] is null the platform's default user agent should be used. @@ -421,7 +427,7 @@ class WebSettings { @override String toString() { - return 'WebSettings(javascriptMode: $javascriptMode, hasNavigationDelegate: $hasNavigationDelegate, debuggingEnabled: $debuggingEnabled, gestureNavigationEnabled: $gestureNavigationEnabled, userAgent: $userAgent)'; + return 'WebSettings(javascriptMode: $javascriptMode, hasNavigationDelegate: $hasNavigationDelegate, debuggingEnabled: $debuggingEnabled, gestureNavigationEnabled: $gestureNavigationEnabled, userAgent: $userAgent, allowsInlineMediaPlayback: $allowsInlineMediaPlayback)'; } } diff --git a/packages/webview_flutter/lib/src/webview_method_channel.dart b/packages/webview_flutter/lib/src/webview_method_channel.dart index 1c666d7686ef..b38d65acb486 100644 --- a/packages/webview_flutter/lib/src/webview_method_channel.dart +++ b/packages/webview_flutter/lib/src/webview_method_channel.dart @@ -185,6 +185,8 @@ class MethodChannelWebViewPlatform implements WebViewPlatformController { _addIfNonNull('debuggingEnabled', settings.debuggingEnabled); _addIfNonNull( 'gestureNavigationEnabled', settings.gestureNavigationEnabled); + _addIfNonNull( + 'allowsInlineMediaPlayback', settings.allowsInlineMediaPlayback); _addSettingIfPresent('userAgent', settings.userAgent); return map; } diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart index 4327c789afbe..6853d39555c3 100644 --- a/packages/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/lib/webview_flutter.dart @@ -223,8 +223,10 @@ class WebView extends StatefulWidget { this.userAgent, this.initialMediaPlaybackPolicy = AutoMediaPlaybackPolicy.require_user_action_for_all_media_types, + this.allowsInlineMediaPlayback = false, }) : assert(javascriptMode != null), assert(initialMediaPlaybackPolicy != null), + assert(allowsInlineMediaPlayback != null), super(key: key); static WebViewPlatform? _platform; @@ -333,6 +335,13 @@ class WebView extends StatefulWidget { /// * When a navigationDelegate is set HTTP requests do not include the HTTP referer header. final NavigationDelegate? navigationDelegate; + /// Controls whether inline playback of HTML5 videos is allowed on iOS. + /// + /// This field is ignored on Android because Android allows it by default. + /// + /// By default `allowsInlineMediaPlayback` is false. + final bool allowsInlineMediaPlayback; + /// Invoked when a page starts loading. final PageStartedCallback? onPageStarted; @@ -469,6 +478,7 @@ WebSettings _webSettingsFromWidget(WebView widget) { hasNavigationDelegate: widget.navigationDelegate != null, debuggingEnabled: widget.debuggingEnabled, gestureNavigationEnabled: widget.gestureNavigationEnabled, + allowsInlineMediaPlayback: widget.allowsInlineMediaPlayback, userAgent: WebSetting.of(widget.userAgent), ); } diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml index de62a50ada17..75910dfe02aa 100644 --- a/packages/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. -version: 2.0.0-nullsafety +version: 2.0.0-nullsafety.1 homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter environment: diff --git a/packages/webview_flutter/test/webview_flutter_test.dart b/packages/webview_flutter/test/webview_flutter_test.dart index 662a2f7f976a..162b1932e49d 100644 --- a/packages/webview_flutter/test/webview_flutter_test.dart +++ b/packages/webview_flutter/test/webview_flutter_test.dart @@ -423,14 +423,12 @@ void main() { await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannels: [ + javascriptChannels: { JavascriptChannel( name: 'Tts', onMessageReceived: (JavascriptMessage msg) {}), JavascriptChannel( name: 'Alarm', onMessageReceived: (JavascriptMessage msg) {}), - ].toSet(), + }, ), ); @@ -463,14 +461,12 @@ void main() { await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannels: [ + javascriptChannels: { JavascriptChannel( name: 'Alarm', onMessageReceived: (JavascriptMessage msg) {}), JavascriptChannel( name: 'Alarm', onMessageReceived: (JavascriptMessage msg) {}), - ].toSet(), + }, ), ); expect(tester.takeException(), isNot(null)); @@ -480,30 +476,26 @@ void main() { await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannels: [ + javascriptChannels: { JavascriptChannel( name: 'Tts', onMessageReceived: (JavascriptMessage msg) {}), JavascriptChannel( name: 'Alarm', onMessageReceived: (JavascriptMessage msg) {}), - ].toSet(), + }, ), ); await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannels: [ + javascriptChannels: { JavascriptChannel( name: 'Tts', onMessageReceived: (JavascriptMessage msg) {}), JavascriptChannel( name: 'Alarm2', onMessageReceived: (JavascriptMessage msg) {}), JavascriptChannel( name: 'Alarm3', onMessageReceived: (JavascriptMessage msg) {}), - ].toSet(), + }, ), ); @@ -523,12 +515,10 @@ void main() { await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannels: [ + javascriptChannels: { JavascriptChannel( name: 'Tts', onMessageReceived: (JavascriptMessage msg) {}), - ].toSet(), + }, ), ); @@ -541,12 +531,10 @@ void main() { await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannels: [ + javascriptChannels: { JavascriptChannel( name: 'Tts', onMessageReceived: (JavascriptMessage msg) {}), - ].toSet(), + }, ), ); @@ -563,9 +551,7 @@ void main() { await tester.pumpWidget( WebView( initialUrl: 'https://youtube.com', - // TODO(iskakaushik): Remove this when collection literals makes it to stable. - // ignore: prefer_collection_literals - javascriptChannels: [ + javascriptChannels: { JavascriptChannel( name: 'Tts', onMessageReceived: (JavascriptMessage msg) { @@ -576,7 +562,7 @@ void main() { onMessageReceived: (JavascriptMessage msg) { alarmMessagesReceived.add(msg.message); }), - ].toSet(), + }, ), ); From 5482d9a4cb2d172dadb767888be978493675b987 Mon Sep 17 00:00:00 2001 From: Amir Hardon Date: Wed, 16 Dec 2020 11:33:04 -0800 Subject: [PATCH 16/24] Remove custom null safety analysis_options files (#3339) --- .../connectivity/analysis_options.yaml | 4 ---- .../connectivity/example/pubspec.yaml | 2 +- .../test_driver/test/integration_test.dart | 4 ++++ .../analysis_options.yaml | 4 ---- .../device_info/analysis_options.yaml | 4 ---- .../analysis_options.yaml | 4 ---- .../analysis_options.yaml | 4 ---- .../ios/Runner.xcodeproj/project.pbxproj | 19 ------------------- .../url_launcher/analysis_options.yaml | 4 ---- .../url_launcher/example/pubspec.yaml | 2 +- .../analysis_options.yaml | 4 ---- .../video_player/analysis_options.yaml | 4 ---- .../integration_test/video_player_test.dart | 7 ++++++- .../video_player/example/pubspec.yaml | 2 +- .../analysis_options.yaml | 4 ---- .../video_player_web/analysis_options.yaml | 12 ------------ script/incremental_build.sh | 11 +---------- 17 files changed, 14 insertions(+), 81 deletions(-) delete mode 100644 packages/connectivity/connectivity/analysis_options.yaml delete mode 100644 packages/connectivity/connectivity_platform_interface/analysis_options.yaml delete mode 100644 packages/device_info/device_info/analysis_options.yaml delete mode 100644 packages/device_info/device_info_platform_interface/analysis_options.yaml delete mode 100644 packages/plugin_platform_interface/analysis_options.yaml delete mode 100644 packages/url_launcher/url_launcher/analysis_options.yaml delete mode 100644 packages/url_launcher/url_launcher_platform_interface/analysis_options.yaml delete mode 100644 packages/video_player/video_player/analysis_options.yaml delete mode 100644 packages/video_player/video_player_platform_interface/analysis_options.yaml delete mode 100644 packages/video_player/video_player_web/analysis_options.yaml diff --git a/packages/connectivity/connectivity/analysis_options.yaml b/packages/connectivity/connectivity/analysis_options.yaml deleted file mode 100644 index 3d64bb57fe49..000000000000 --- a/packages/connectivity/connectivity/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: ../../../analysis_options.yaml -analyzer: - enable-experiment: - - non-nullable diff --git a/packages/connectivity/connectivity/example/pubspec.yaml b/packages/connectivity/connectivity/example/pubspec.yaml index 94c8505c8096..682f0a2dd08a 100644 --- a/packages/connectivity/connectivity/example/pubspec.yaml +++ b/packages/connectivity/connectivity/example/pubspec.yaml @@ -19,5 +19,5 @@ flutter: uses-material-design: true environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13+hotfix.5 <2.0.0" diff --git a/packages/connectivity/connectivity/example/test_driver/test/integration_test.dart b/packages/connectivity/connectivity/example/test_driver/test/integration_test.dart index c0cbdcab2fb6..33421c335bdd 100644 --- a/packages/connectivity/connectivity/example/test_driver/test/integration_test.dart +++ b/packages/connectivity/connectivity/example/test_driver/test/integration_test.dart @@ -2,6 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(amirh): Remove this once flutter_driver supports null safety. +// https://github.com/flutter/flutter/issues/71379 +// @dart = 2.9 + import 'dart:convert'; import 'dart:io'; import 'package:flutter_driver/flutter_driver.dart'; diff --git a/packages/connectivity/connectivity_platform_interface/analysis_options.yaml b/packages/connectivity/connectivity_platform_interface/analysis_options.yaml deleted file mode 100644 index 3d64bb57fe49..000000000000 --- a/packages/connectivity/connectivity_platform_interface/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: ../../../analysis_options.yaml -analyzer: - enable-experiment: - - non-nullable diff --git a/packages/device_info/device_info/analysis_options.yaml b/packages/device_info/device_info/analysis_options.yaml deleted file mode 100644 index 3d64bb57fe49..000000000000 --- a/packages/device_info/device_info/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: ../../../analysis_options.yaml -analyzer: - enable-experiment: - - non-nullable diff --git a/packages/device_info/device_info_platform_interface/analysis_options.yaml b/packages/device_info/device_info_platform_interface/analysis_options.yaml deleted file mode 100644 index 3d64bb57fe49..000000000000 --- a/packages/device_info/device_info_platform_interface/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: ../../../analysis_options.yaml -analyzer: - enable-experiment: - - non-nullable diff --git a/packages/plugin_platform_interface/analysis_options.yaml b/packages/plugin_platform_interface/analysis_options.yaml deleted file mode 100644 index f4819cd5c313..000000000000 --- a/packages/plugin_platform_interface/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: ../../analysis_options.yaml -analyzer: - enable-experiment: - - non-nullable diff --git a/packages/share/example/ios/Runner.xcodeproj/project.pbxproj b/packages/share/example/ios/Runner.xcodeproj/project.pbxproj index 639666b2865c..d03ef3e65776 100644 --- a/packages/share/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/share/example/ios/Runner.xcodeproj/project.pbxproj @@ -197,7 +197,6 @@ 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 12A149CFB1B2610A83692801 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -268,24 +267,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 12A149CFB1B2610A83692801 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", - "${PODS_ROOT}/../Flutter/Flutter.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/packages/url_launcher/url_launcher/analysis_options.yaml b/packages/url_launcher/url_launcher/analysis_options.yaml deleted file mode 100644 index 3d64bb57fe49..000000000000 --- a/packages/url_launcher/url_launcher/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: ../../../analysis_options.yaml -analyzer: - enable-experiment: - - non-nullable diff --git a/packages/url_launcher/url_launcher/example/pubspec.yaml b/packages/url_launcher/url_launcher/example/pubspec.yaml index 1fdb73cef666..7caea27744db 100644 --- a/packages/url_launcher/url_launcher/example/pubspec.yaml +++ b/packages/url_launcher/url_launcher/example/pubspec.yaml @@ -20,5 +20,5 @@ flutter: uses-material-design: true environment: - sdk: ">=2.1.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13+hotfix.5 <2.0.0" diff --git a/packages/url_launcher/url_launcher_platform_interface/analysis_options.yaml b/packages/url_launcher/url_launcher_platform_interface/analysis_options.yaml deleted file mode 100644 index 3d64bb57fe49..000000000000 --- a/packages/url_launcher/url_launcher_platform_interface/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: ../../../analysis_options.yaml -analyzer: - enable-experiment: - - non-nullable diff --git a/packages/video_player/video_player/analysis_options.yaml b/packages/video_player/video_player/analysis_options.yaml deleted file mode 100644 index 3d64bb57fe49..000000000000 --- a/packages/video_player/video_player/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: ../../../analysis_options.yaml -analyzer: - enable-experiment: - - non-nullable diff --git a/packages/video_player/video_player/example/integration_test/video_player_test.dart b/packages/video_player/video_player/example/integration_test/video_player_test.dart index d2f38367ce9a..7ef1cf64065c 100644 --- a/packages/video_player/video_player/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player/example/integration_test/video_player_test.dart @@ -2,6 +2,11 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. + +// TODO(amirh): Remove this once flutter_driver supports null safety. +// https://github.com/flutter/flutter/issues/71379 +// @dart = 2.9 + import 'package:flutter/material.dart'; import 'package:integration_test/integration_test.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -11,7 +16,7 @@ const Duration _playDuration = Duration(seconds: 1); void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - late VideoPlayerController _controller; + VideoPlayerController _controller; tearDown(() async => _controller.dispose()); group('asset videos', () { diff --git a/packages/video_player/video_player/example/pubspec.yaml b/packages/video_player/video_player/example/pubspec.yaml index 6cfa93213afb..fb18d8b75efa 100644 --- a/packages/video_player/video_player/example/pubspec.yaml +++ b/packages/video_player/video_player/example/pubspec.yaml @@ -27,5 +27,5 @@ flutter: - assets/bumble_bee_captions.srt environment: - sdk: ">=2.8.0 <3.0.0" + sdk: ">=2.12.0-0 <3.0.0" flutter: ">=1.12.13+hotfix.5 <2.0.0" diff --git a/packages/video_player/video_player_platform_interface/analysis_options.yaml b/packages/video_player/video_player_platform_interface/analysis_options.yaml deleted file mode 100644 index 3d64bb57fe49..000000000000 --- a/packages/video_player/video_player_platform_interface/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: ../../../analysis_options.yaml -analyzer: - enable-experiment: - - non-nullable diff --git a/packages/video_player/video_player_web/analysis_options.yaml b/packages/video_player/video_player_web/analysis_options.yaml deleted file mode 100644 index 7e5b7b306a83..000000000000 --- a/packages/video_player/video_player_web/analysis_options.yaml +++ /dev/null @@ -1,12 +0,0 @@ -# This is a temporary file to allow us to unblock the flutter/plugins repo CI. -# It disables some of lints that were disabled inline. Disabling lints inline -# is no longer possible, so this file is required. -# TODO(ditman) https://github.com/flutter/flutter/issues/55000 (clean this up) - -include: ../../../analysis_options.yaml - -analyzer: - enable-experiment: - - non-nullable - errors: - undefined_prefixed_name: ignore diff --git a/script/incremental_build.sh b/script/incremental_build.sh index 95e42c4cfcee..f54f90b0669c 100755 --- a/script/incremental_build.sh +++ b/script/incremental_build.sh @@ -29,17 +29,8 @@ fi # # TODO(mklim): Remove everything from this list. https://github.com/flutter/flutter/issues/45440 CUSTOM_ANALYSIS_PLUGINS=( - "plugin_platform_interface" - "video_player/video_player" - "video_player/video_player_platform_interface" - "video_player/video_player_web" - "url_launcher/url_launcher_platform_interface" - "url_launcher/url_launcher" - "device_info/device_info_platform_interface" - "device_info/device_info" - "connectivity/connectivity_platform_interface" - "connectivity/connectivity" ) + # Comma-separated string of the list above readonly CUSTOM_FLAG=$(IFS=, ; echo "${CUSTOM_ANALYSIS_PLUGINS[*]}") # Set some default actions if run without arguments. From 05879a3a4d8e582702227731ccdcf8b115f6b83d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl?= <32639467+danielroek@users.noreply.github.com> Date: Wed, 16 Dec 2020 20:34:18 +0100 Subject: [PATCH 17/24] [camera] Ios support documentation (#3335) * updated README.md to notify about no < iOS10 support * Version bump * Improved explanation Co-authored-by: Maurits van Beusekom Co-authored-by: Maurits van Beusekom --- packages/camera/camera/CHANGELOG.md | 4 ++++ packages/camera/camera/README.md | 2 ++ packages/camera/camera/pubspec.yaml | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index cb8dfedd1d9a..8a7c979c3b72 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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**: diff --git a/packages/camera/camera/README.md b/packages/camera/camera/README.md index 39d3ed88abea..f8a4b05211fd 100644 --- a/packages/camera/camera/README.md +++ b/packages/camera/camera/README.md @@ -19,6 +19,8 @@ First, add `camera` as a [dependency in your pubspec.yaml file](https://flutter. ### iOS +iOS 10.0 of higher is needed to use the camera plugin. If compiling for any version lower than 10.0 make sure to check the iOS version before using the camera plugin. For example, using the [device_info](https://pub.dev/packages/device_info) plugin. + Add two rows to the `ios/Runner/Info.plist`: * one with the key `Privacy - Camera Usage Description` and a usage description. diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index 64d5bba61159..cc25133f95f9 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -2,7 +2,7 @@ name: camera description: A Flutter plugin for getting information about and controlling the camera on Android and iOS. Supports previewing the camera feed, capturing images, capturing video, and streaming image buffers to dart. -version: 0.6.0 +version: 0.6.0+1 homepage: https://github.com/flutter/plugins/tree/master/packages/camera/camera dependencies: From b2e9ca5c52995edea0d32b045a0df831d1aca192 Mon Sep 17 00:00:00 2001 From: Harry Cheng Date: Fri, 18 Dec 2020 03:34:05 +0800 Subject: [PATCH 18/24] fix(video_player): buffering state events missing on Android & Web (fixes flutter/flutter#28494) (#2563) --- .../video_player/video_player/CHANGELOG.md | 4 ++ .../plugins/videoplayer/VideoPlayer.java | 16 ++++++ .../integration_test/video_player_test.dart | 56 ++++++++++++++++++- .../video_player/video_player/pubspec.yaml | 2 +- .../video_player_web/CHANGELOG.md | 4 ++ .../lib/video_player_web.dart | 27 +++++++++ .../video_player_web/pubspec.yaml | 2 +- 7 files changed, 107 insertions(+), 4 deletions(-) diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md index 14eaae381756..e2bca40531da 100644 --- a/packages/video_player/video_player/CHANGELOG.md +++ b/packages/video_player/video_player/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety.4 + +* Fixed an issue where `isBuffering` was not updating on Android. + ## 2.0.0-nullsafety.3 * Dart null safety requires `2.12`. diff --git a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java index 33c2f42afe1e..65657509b49f 100644 --- a/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java +++ b/packages/video_player/video_player/android/src/main/java/io/flutter/plugins/videoplayer/VideoPlayer.java @@ -169,10 +169,21 @@ public void onCancel(Object o) { exoPlayer.addListener( new EventListener() { + private boolean isBuffering = false; + + public void setBuffering(boolean buffering) { + if (isBuffering != buffering) { + isBuffering = buffering; + Map event = new HashMap<>(); + event.put("event", isBuffering ? "bufferingStart" : "bufferingEnd"); + eventSink.success(event); + } + } @Override public void onPlaybackStateChanged(final int playbackState) { if (playbackState == Player.STATE_BUFFERING) { + setBuffering(true); sendBufferingUpdate(); } else if (playbackState == Player.STATE_READY) { if (!isInitialized) { @@ -184,10 +195,15 @@ public void onPlaybackStateChanged(final int playbackState) { event.put("event", "completed"); eventSink.success(event); } + + if (playbackState != Player.STATE_BUFFERING) { + setBuffering(false); + } } @Override public void onPlayerError(final ExoPlaybackException error) { + setBuffering(false); if (eventSink != null) { eventSink.error("VideoError", "Video player had error " + error, null); } diff --git a/packages/video_player/video_player/example/integration_test/video_player_test.dart b/packages/video_player/video_player/example/integration_test/video_player_test.dart index 7ef1cf64065c..9e273e02dc4d 100644 --- a/packages/video_player/video_player/example/integration_test/video_player_test.dart +++ b/packages/video_player/video_player/example/integration_test/video_player_test.dart @@ -2,11 +2,12 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. - // TODO(amirh): Remove this once flutter_driver supports null safety. // https://github.com/flutter/flutter/issues/71379 // @dart = 2.9 +import 'dart:async'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:integration_test/integration_test.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -34,10 +35,58 @@ void main() { const Duration(seconds: 7, milliseconds: 540)); }); + testWidgets( + 'reports buffering status', + (WidgetTester tester) async { + VideoPlayerController networkController = VideoPlayerController.network( + 'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4', + ); + await networkController.initialize(); + // Mute to allow playing without DOM interaction on Web. + // See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes + await networkController.setVolume(0); + final Completer started = Completer(); + final Completer ended = Completer(); + bool startedBuffering = false; + bool endedBuffering = false; + networkController.addListener(() { + if (networkController.value.isBuffering && !startedBuffering) { + startedBuffering = true; + started.complete(); + } + if (startedBuffering && + !networkController.value.isBuffering && + !endedBuffering) { + endedBuffering = true; + ended.complete(); + } + }); + + await networkController.play(); + await networkController.seekTo(const Duration(seconds: 5)); + await tester.pumpAndSettle(_playDuration); + await networkController.pause(); + + expect(networkController.value.isPlaying, false); + expect(networkController.value.position, + (Duration position) => position > const Duration(seconds: 0)); + + await started; + expect(startedBuffering, true); + + await ended; + expect(endedBuffering, true); + }, + skip: !(kIsWeb || defaultTargetPlatform == TargetPlatform.android), + ); + testWidgets( 'can be played', (WidgetTester tester) async { await _controller.initialize(); + // Mute to allow playing without DOM interaction on Web. + // See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes + await _controller.setVolume(0); await _controller.play(); await tester.pumpAndSettle(_playDuration); @@ -63,6 +112,9 @@ void main() { 'can be paused', (WidgetTester tester) async { await _controller.initialize(); + // Mute to allow playing without DOM interaction on Web. + // See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes + await _controller.setVolume(0); // Play for a second, then pause, and then wait a second. await _controller.play(); @@ -109,6 +161,6 @@ void main() { await tester.pumpAndSettle(); expect(_controller.value.isPlaying, true); - }); + }, skip: kIsWeb); // Web does not support local assets. }); } diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index cfbc4c65c1de..6e483324e499 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -4,7 +4,7 @@ description: Flutter plugin for displaying inline video with other Flutter # 0.10.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 2.0.0-nullsafety.3 +version: 2.0.0-nullsafety.4 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player flutter: diff --git a/packages/video_player/video_player_web/CHANGELOG.md b/packages/video_player/video_player_web/CHANGELOG.md index 52c2042d1e95..2becf5b85e0a 100644 --- a/packages/video_player/video_player_web/CHANGELOG.md +++ b/packages/video_player/video_player_web/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety.2 + +* Fixed an issue where `isBuffering` was not updating on Web. + ## 2.0.0-nullsafety.1 * Bump Dart SDK to support null safety. diff --git a/packages/video_player/video_player_web/lib/video_player_web.dart b/packages/video_player/video_player_web/lib/video_player_web.dart index de8f6a7e4cf7..9132a08437da 100644 --- a/packages/video_player/video_player_web/lib/video_player_web.dart +++ b/packages/video_player/video_player_web/lib/video_player_web.dart @@ -156,6 +156,17 @@ class _VideoPlayer { final int textureId; late VideoElement videoElement; bool isInitialized = false; + bool isBuffering = false; + + void setBuffering(bool buffering) { + if (isBuffering != buffering) { + isBuffering = buffering; + eventController.add(VideoEvent( + eventType: isBuffering + ? VideoEventType.bufferingStart + : VideoEventType.bufferingEnd)); + } + } void initialize() { videoElement = VideoElement() @@ -176,10 +187,25 @@ class _VideoPlayer { isInitialized = true; sendInitialized(); } + setBuffering(false); + }); + + videoElement.onCanPlayThrough.listen((dynamic _) { + setBuffering(false); + }); + + videoElement.onPlaying.listen((dynamic _) { + setBuffering(false); + }); + + videoElement.onWaiting.listen((dynamic _) { + setBuffering(true); + sendBufferingUpdate(); }); // The error event fires when some form of error occurs while attempting to load or perform the media. videoElement.onError.listen((Event _) { + setBuffering(false); // The Event itself (_) doesn't contain info about the actual error. // We need to look at the HTMLMediaElement.error. // See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/error @@ -192,6 +218,7 @@ class _VideoPlayer { }); videoElement.onEnded.listen((dynamic _) { + setBuffering(false); eventController.add(VideoEvent(eventType: VideoEventType.completed)); }); } diff --git a/packages/video_player/video_player_web/pubspec.yaml b/packages/video_player/video_player_web/pubspec.yaml index dc1af16c5d94..9333ac0ac6f0 100644 --- a/packages/video_player/video_player_web/pubspec.yaml +++ b/packages/video_player/video_player_web/pubspec.yaml @@ -4,7 +4,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/v # 0.1.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 2.0.0-nullsafety.1 +version: 2.0.0-nullsafety.2 flutter: plugin: From 41b4486333507e48fec7677e6344f81898f42d2e Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Thu, 17 Dec 2020 16:39:29 -0800 Subject: [PATCH 19/24] Upgrade CocoaPods in Cirrus (#3347) --- .cirrus.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.cirrus.yml b/.cirrus.yml index 98cd6276e0e6..453a2ce0ac2c 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -132,6 +132,7 @@ task: osx_instance: image: catalina-xcode-11.3.1-flutter upgrade_script: + - sudo gem install cocoapods - flutter channel stable - flutter upgrade - flutter channel master @@ -190,6 +191,7 @@ task: setup_script: - flutter config --enable-macos-desktop upgrade_script: + - sudo gem install cocoapods - flutter channel master - flutter upgrade - git fetch origin master From 73eeb30c9819ab8f88109c1de232f47830ab7966 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Thu, 17 Dec 2020 18:16:56 -0800 Subject: [PATCH 20/24] [image_picker] use LocalizedString to fix lint error. (#3349) --- packages/image_picker/image_picker/CHANGELOG.md | 4 ++++ .../image_picker/ios/Classes/FLTImagePickerPlugin.m | 6 +++--- packages/image_picker/image_picker/pubspec.yaml | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/image_picker/image_picker/CHANGELOG.md b/packages/image_picker/image_picker/CHANGELOG.md index 70a1cb21b354..a1f7608ac7ac 100644 --- a/packages/image_picker/image_picker/CHANGELOG.md +++ b/packages/image_picker/image_picker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.7+17 + +* iOS: fix `User-facing text should use localized string macro` warning. + ## 0.6.7+16 * Update Flutter SDK constraint. diff --git a/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m b/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m index 00fdec245aaf..8d260f31b055 100644 --- a/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m +++ b/packages/image_picker/image_picker/ios/Classes/FLTImagePickerPlugin.m @@ -146,10 +146,10 @@ - (void)showCamera { animated:YES completion:nil]; } else { - [[[UIAlertView alloc] initWithTitle:@"Error" - message:@"Camera not available." + [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error", nil) + message:NSLocalizedString(@"Camera not available.", nil) delegate:nil - cancelButtonTitle:@"OK" + cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil] show]; self.result(nil); self.result = nil; diff --git a/packages/image_picker/image_picker/pubspec.yaml b/packages/image_picker/image_picker/pubspec.yaml index 4eb16beec641..7b4972578e98 100755 --- a/packages/image_picker/image_picker/pubspec.yaml +++ b/packages/image_picker/image_picker/pubspec.yaml @@ -2,7 +2,7 @@ name: image_picker description: Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker/image_picker -version: 0.6.7+16 +version: 0.6.7+17 flutter: plugin: From b6af039a969bbb5a0d68fd407fc608d4e1313c5b Mon Sep 17 00:00:00 2001 From: Sebastian Roth Date: Fri, 18 Dec 2020 18:35:32 +0000 Subject: [PATCH 21/24] [connectivity] Clear networkCallback object as soon as stream is cancelled (#3303) Set networkCallback back to null when event stream is cancelled --- packages/connectivity/connectivity/CHANGELOG.md | 4 ++++ .../plugins/connectivity/ConnectivityBroadcastReceiver.java | 1 + packages/connectivity/connectivity/pubspec.yaml | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/connectivity/connectivity/CHANGELOG.md b/packages/connectivity/connectivity/CHANGELOG.md index 60765d14c080..f215449eb72f 100644 --- a/packages/connectivity/connectivity/CHANGELOG.md +++ b/packages/connectivity/connectivity/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.0.0-nullsafety.2 + +* Android: Cleanup the NetworkCallback object when a connectivity stream is cancelled + ## 3.0.0-nullsafety.1 * Bump Dart SDK to support null safety. diff --git a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java index ca3ccff82d2d..dbf96bda9fe8 100644 --- a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java +++ b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java @@ -64,6 +64,7 @@ public void onCancel(Object arguments) { if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (networkCallback != null) { connectivity.getConnectivityManager().unregisterNetworkCallback(networkCallback); + networkCallback = null; } } else { context.unregisterReceiver(this); diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml index 2f6d78134796..916fa08908b5 100644 --- a/packages/connectivity/connectivity/pubspec.yaml +++ b/packages/connectivity/connectivity/pubspec.yaml @@ -2,7 +2,7 @@ name: connectivity description: Flutter plugin for discovering the state of the network (WiFi & mobile/cellular) connectivity on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity -version: 3.0.0-nullsafety.1 +version: 3.0.0-nullsafety.2 flutter: plugin: From b1ab21a63152cb6769e8c1b09056ffaa6357aaff Mon Sep 17 00:00:00 2001 From: David Iglesias Date: Fri, 18 Dec 2020 13:04:02 -0800 Subject: [PATCH 22/24] [local_auth] Update README for Android Integration (#3348) --- packages/local_auth/CHANGELOG.md | 6 ++++- packages/local_auth/README.md | 38 +++++++++++++++++++++++++++++++- packages/local_auth/pubspec.yaml | 2 +- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/packages/local_auth/CHANGELOG.md b/packages/local_auth/CHANGELOG.md index d83798ad4889..48d8df4f0fd9 100644 --- a/packages/local_auth/CHANGELOG.md +++ b/packages/local_auth/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.0-nullsafety.1 + +* Update README for Android Integration. + ## 1.0.0-nullsafety * Migrate to null safety. @@ -182,4 +186,4 @@ ## 0.0.1 -* Initial release of local authentication plugin. +* Initial release of local authentication plugin. \ No newline at end of file diff --git a/packages/local_auth/README.md b/packages/local_auth/README.md index ca2aa49bed23..98dcdcf0bffa 100644 --- a/packages/local_auth/README.md +++ b/packages/local_auth/README.md @@ -142,6 +142,42 @@ opposed to Activity. This can be easily done by switching to use `FlutterFragmentActivity` as opposed to `FlutterActivity` in your manifest (or your own Activity class if you are extending the base class). +Update your MainActivity.java: + +```java +import android.os.Bundle; +import io.flutter.app.FlutterFragmentActivity; +import io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin; +import io.flutter.plugins.localauth.LocalAuthPlugin; + +public class MainActivity extends FlutterFragmentActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + FlutterAndroidLifecyclePlugin.registerWith( + registrarFor( + "io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin")); + LocalAuthPlugin.registerWith(registrarFor("io.flutter.plugins.localauth.LocalAuthPlugin")); + } +} +``` + +OR + +Update your MainActivity.kt: + +```kotlin +import io.flutter.embedding.android.FlutterFragmentActivity +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.plugins.GeneratedPluginRegistrant + +class MainActivity: FlutterFragmentActivity() { + override fun configureFlutterEngine(flutterEngine: FlutterEngine) { + GeneratedPluginRegistrant.registerWith(flutterEngine) + } +} +``` + Update your project's `AndroidManifest.xml` file to include the `USE_FINGERPRINT` permissions: @@ -172,4 +208,4 @@ app resumes. For help getting started with Flutter, view our online [documentation](http://flutter.io/). -For help on editing plugin code, view the [documentation](https://flutter.io/platform-plugins/#edit-code). +For help on editing plugin code, view the [documentation](https://flutter.io/platform-plugins/#edit-code). \ No newline at end of file diff --git a/packages/local_auth/pubspec.yaml b/packages/local_auth/pubspec.yaml index f61f8b3ca4a7..30acd7264314 100644 --- a/packages/local_auth/pubspec.yaml +++ b/packages/local_auth/pubspec.yaml @@ -2,7 +2,7 @@ name: local_auth description: Flutter plugin for Android and iOS device authentication sensors such as Fingerprint Reader and Touch ID. homepage: https://github.com/flutter/plugins/tree/master/packages/local_auth -version: 1.0.0-nullsafety +version: 1.0.0-nullsafety.1 flutter: plugin: From debfbecb53a556013e77195272c8a12a3fafa0da Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Fri, 18 Dec 2020 14:49:03 -0800 Subject: [PATCH 23/24] Fix outdated links across a number of markdown files (#3276) --- CONTRIBUTING.md | 9 ++++----- packages/android_alarm_manager/CHANGELOG.md | 4 ++++ packages/android_alarm_manager/README.md | 6 +++--- packages/android_alarm_manager/pubspec.yaml | 2 +- packages/android_intent/CHANGELOG.md | 4 ++++ packages/android_intent/README.md | 8 ++++---- packages/android_intent/pubspec.yaml | 2 +- packages/battery/battery/CHANGELOG.md | 4 ++++ packages/battery/battery/README.md | 4 ++-- packages/battery/battery/pubspec.yaml | 2 +- packages/camera/camera/CHANGELOG.md | 4 ++++ packages/camera/camera/README.md | 4 ++-- packages/camera/camera/pubspec.yaml | 2 +- packages/connectivity/connectivity/CHANGELOG.md | 4 ++++ packages/connectivity/connectivity/README.md | 4 ++-- packages/connectivity/connectivity/pubspec.yaml | 2 +- packages/cross_file/CHANGELOG.md | 4 ++++ packages/cross_file/README.md | 2 +- packages/cross_file/pubspec.yaml | 2 +- packages/device_info/device_info/CHANGELOG.md | 4 ++++ packages/device_info/device_info/README.md | 6 +++--- packages/device_info/device_info/pubspec.yaml | 2 +- packages/flutter_plugin_android_lifecycle/CHANGELOG.md | 4 ++++ packages/flutter_plugin_android_lifecycle/README.md | 4 ++-- packages/flutter_plugin_android_lifecycle/pubspec.yaml | 2 +- .../google_maps_flutter/google_maps_flutter/CHANGELOG.md | 4 ++++ .../google_maps_flutter/google_maps_flutter/README.md | 4 ++-- .../google_maps_flutter/google_maps_flutter/pubspec.yaml | 2 +- .../CHANGELOG.md | 4 ++++ .../example/README.md | 2 +- .../pubspec.yaml | 2 +- packages/google_sign_in/google_sign_in/CHANGELOG.md | 4 ++++ packages/google_sign_in/google_sign_in/README.md | 4 ++-- packages/google_sign_in/google_sign_in/pubspec.yaml | 2 +- packages/image_picker/image_picker/CHANGELOG.md | 4 ++++ packages/image_picker/image_picker/README.md | 4 ++-- packages/image_picker/image_picker/pubspec.yaml | 2 +- packages/in_app_purchase/CHANGELOG.md | 4 ++++ packages/in_app_purchase/README.md | 2 +- packages/in_app_purchase/pubspec.yaml | 2 +- packages/local_auth/CHANGELOG.md | 4 ++++ packages/local_auth/README.md | 4 ++-- packages/local_auth/pubspec.yaml | 2 +- packages/path_provider/path_provider/CHANGELOG.md | 4 ++++ packages/path_provider/path_provider/README.md | 4 ++-- packages/path_provider/path_provider/pubspec.yaml | 2 +- packages/quick_actions/CHANGELOG.md | 4 ++++ packages/quick_actions/README.md | 4 ++-- packages/quick_actions/pubspec.yaml | 2 +- packages/sensors/CHANGELOG.md | 4 ++++ packages/sensors/README.md | 2 +- packages/sensors/pubspec.yaml | 2 +- packages/share/CHANGELOG.md | 4 ++++ packages/share/README.md | 4 ++-- packages/share/pubspec.yaml | 2 +- .../shared_preferences/shared_preferences/CHANGELOG.md | 4 ++++ packages/shared_preferences/shared_preferences/README.md | 4 ++-- .../shared_preferences/shared_preferences/pubspec.yaml | 2 +- packages/url_launcher/url_launcher/CHANGELOG.md | 4 ++++ packages/url_launcher/url_launcher/README.md | 6 +++--- packages/url_launcher/url_launcher/pubspec.yaml | 2 +- packages/url_launcher/url_launcher_linux/CHANGELOG.md | 4 ++++ .../url_launcher/url_launcher_linux/example/README.md | 2 +- packages/url_launcher/url_launcher_linux/pubspec.yaml | 2 +- packages/video_player/video_player/CHANGELOG.md | 4 ++++ packages/video_player/video_player/README.md | 4 ++-- packages/video_player/video_player/pubspec.yaml | 2 +- packages/webview_flutter/CHANGELOG.md | 4 ++++ packages/webview_flutter/README.md | 4 ++-- packages/webview_flutter/pubspec.yaml | 2 +- 70 files changed, 165 insertions(+), 74 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b278b43e524f..b763320b67c9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,7 +3,7 @@ [![Build Status](https://api.cirrus-ci.com/github/flutter/plugins.svg)](https://cirrus-ci.com/github/flutter/plugins/master) -_See also: [Flutter's code of conduct](https://flutter.io/design-principles/#code-of-conduct)_ +_See also: [Flutter's code of conduct](https://github.com/flutter/flutter/blob/master/CODE_OF_CONDUCT.md)_ ## Things you will need @@ -131,9 +131,8 @@ pub global run flutter_plugin_tools xctest --target RunnerUITests --skip ` * Hack away. - * Verify changes with [flutter_plugin_tools](https://pub.dartlang.org/packages/flutter_plugin_tools) + * Verify changes with [flutter_plugin_tools](https://pub.dev/packages/flutter_plugin_tools) ``` pub global activate flutter_plugin_tools pub global run flutter_plugin_tools format --plugins plugin_name diff --git a/packages/android_alarm_manager/CHANGELOG.md b/packages/android_alarm_manager/CHANGELOG.md index e0c436d79eea..1b6a7b749e66 100644 --- a/packages/android_alarm_manager/CHANGELOG.md +++ b/packages/android_alarm_manager/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.5+19 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 0.4.5+18 * Update Flutter SDK constraint. diff --git a/packages/android_alarm_manager/README.md b/packages/android_alarm_manager/README.md index 9d245e5edc20..cf02bf66ff11 100644 --- a/packages/android_alarm_manager/README.md +++ b/packages/android_alarm_manager/README.md @@ -1,6 +1,6 @@ # android_alarm_manager -[![pub package](https://img.shields.io/pub/v/android_alarm_manager.svg)](https://pub.dartlang.org/packages/android_alarm_manager) +[![pub package](https://img.shields.io/pub/v/android_alarm_manager.svg)](https://pub.dev/packages/android_alarm_manager) A Flutter plugin for accessing the Android AlarmManager service, and running Dart code in the background when alarms fire. @@ -121,6 +121,6 @@ register plugins. This can be resolved by running `flutter upgrade` to upgrade to the latest Flutter version.** For help getting started with Flutter, view our online -[documentation](http://flutter.io/). +[documentation](https://flutter.dev/). -For help on editing plugin code, view the [documentation](https://flutter.io/platform-plugins/#edit-code). +For help on editing plugin code, view the [documentation](https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin). diff --git a/packages/android_alarm_manager/pubspec.yaml b/packages/android_alarm_manager/pubspec.yaml index 5b6780b4b14a..b055823c2db3 100644 --- a/packages/android_alarm_manager/pubspec.yaml +++ b/packages/android_alarm_manager/pubspec.yaml @@ -4,7 +4,7 @@ description: Flutter plugin for accessing the Android AlarmManager service, and # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.4.5+18 +version: 0.4.5+19 homepage: https://github.com/flutter/plugins/tree/master/packages/android_alarm_manager dependencies: diff --git a/packages/android_intent/CHANGELOG.md b/packages/android_intent/CHANGELOG.md index 65c991c6f7b2..113e4464c947 100644 --- a/packages/android_intent/CHANGELOG.md +++ b/packages/android_intent/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety.1 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 2.0.0-nullsafety * Migrate to null safety. diff --git a/packages/android_intent/README.md b/packages/android_intent/README.md index f7dfdfed9860..aabf059ea336 100644 --- a/packages/android_intent/README.md +++ b/packages/android_intent/README.md @@ -53,13 +53,13 @@ if (platform.isAndroid) { Feel free to add support for additional Android intents. The Dart values supported for the arguments parameter, and their corresponding -Android values, are listed [here](https://flutter.io/platform-channels/#codec). +Android values, are listed [here](https://flutter.dev/docs/development/platform-integration/platform-channels#codec). On the Android side, the arguments are used to populate an Android `Bundle` instance. This process currently restricts the use of lists to homogeneous lists of integers or strings. > Note that a similar method does not currently exist for iOS. Instead, the -[url_launcher](https://pub.dartlang.org/packages/url_launcher) plugin +[url_launcher](https://pub.dev/packages/url_launcher) plugin can be used for deep linking. Url launcher can also be used for creating ACTION_VIEW intents for Android, however this intent plugin also allows clients to set extra parameters for the intent. @@ -67,6 +67,6 @@ clients to set extra parameters for the intent. ## Getting Started For help getting started with Flutter, view our online -[documentation](http://flutter.io/). +[documentation](https://flutter.dev/). -For help on editing plugin code, view the [documentation](https://flutter.io/platform-plugins/#edit-code). +For help on editing plugin code, view the [documentation](https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin). diff --git a/packages/android_intent/pubspec.yaml b/packages/android_intent/pubspec.yaml index aec7ad0d5a18..52928f08093f 100644 --- a/packages/android_intent/pubspec.yaml +++ b/packages/android_intent/pubspec.yaml @@ -1,7 +1,7 @@ name: android_intent description: Flutter plugin for launching Android Intents. Not supported on iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/android_intent -version: 2.0.0-nullsafety +version: 2.0.0-nullsafety.1 flutter: plugin: diff --git a/packages/battery/battery/CHANGELOG.md b/packages/battery/battery/CHANGELOG.md index c9bf41a81baf..c9268d4d4e3c 100644 --- a/packages/battery/battery/CHANGELOG.md +++ b/packages/battery/battery/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.10 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 1.0.9 * Update Flutter SDK constraint. diff --git a/packages/battery/battery/README.md b/packages/battery/battery/README.md index 22ce5007acd7..358dee6f8f27 100644 --- a/packages/battery/battery/README.md +++ b/packages/battery/battery/README.md @@ -1,11 +1,11 @@ # Battery -[![pub package](https://img.shields.io/pub/v/battery.svg)](https://pub.dartlang.org/packages/battery) +[![pub package](https://img.shields.io/pub/v/battery.svg)](https://pub.dev/packages/battery) A Flutter plugin to access various information about the battery of the device the app is running on. ## Usage -To use this plugin, add `battery` as a [dependency in your pubspec.yaml file](https://flutter.io/platform-plugins/). +To use this plugin, add `battery` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels). ### Example diff --git a/packages/battery/battery/pubspec.yaml b/packages/battery/battery/pubspec.yaml index c7d4f0a9f5c2..d3c823d73ad2 100644 --- a/packages/battery/battery/pubspec.yaml +++ b/packages/battery/battery/pubspec.yaml @@ -2,7 +2,7 @@ name: battery description: Flutter plugin for accessing information about the battery state (full, charging, discharging) on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/battery/battery -version: 1.0.9 +version: 1.0.10 flutter: plugin: diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index 8a7c979c3b72..a11579d528a4 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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 diff --git a/packages/camera/camera/README.md b/packages/camera/camera/README.md index f8a4b05211fd..f7163818aae3 100644 --- a/packages/camera/camera/README.md +++ b/packages/camera/camera/README.md @@ -1,6 +1,6 @@ # Camera Plugin -[![pub package](https://img.shields.io/pub/v/camera.svg)](https://pub.dartlang.org/packages/camera) +[![pub package](https://img.shields.io/pub/v/camera.svg)](https://pub.dev/packages/camera) A Flutter plugin for iOS and Android allowing access to the device cameras. @@ -15,7 +15,7 @@ A Flutter plugin for iOS and Android allowing access to the device cameras. ## Installation -First, add `camera` as a [dependency in your pubspec.yaml file](https://flutter.io/using-packages/). +First, add `camera` as a [dependency in your pubspec.yaml file](https://flutter.dev/using-packages/). ### iOS diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index cc25133f95f9..3c3e0cea3565 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -2,7 +2,7 @@ name: camera description: A Flutter plugin for getting information about and controlling the camera on Android and iOS. Supports previewing the camera feed, capturing images, capturing video, and streaming image buffers to dart. -version: 0.6.0+1 +version: 0.6.0+2 homepage: https://github.com/flutter/plugins/tree/master/packages/camera/camera dependencies: diff --git a/packages/connectivity/connectivity/CHANGELOG.md b/packages/connectivity/connectivity/CHANGELOG.md index f215449eb72f..a1d0231a5bd4 100644 --- a/packages/connectivity/connectivity/CHANGELOG.md +++ b/packages/connectivity/connectivity/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.0.0-nullsafety.3 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 3.0.0-nullsafety.2 * Android: Cleanup the NetworkCallback object when a connectivity stream is cancelled diff --git a/packages/connectivity/connectivity/README.md b/packages/connectivity/connectivity/README.md index a6a1dcc2838a..6c608d3d8e16 100644 --- a/packages/connectivity/connectivity/README.md +++ b/packages/connectivity/connectivity/README.md @@ -55,6 +55,6 @@ Note that connectivity changes are no longer communicated to Android apps in the ## Getting Started For help getting started with Flutter, view our online -[documentation](http://flutter.io/). +[documentation](https://flutter.dev/). -For help on editing plugin code, view the [documentation](https://flutter.io/platform-plugins/#edit-code). +For help on editing plugin code, view the [documentation](https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin). diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml index 916fa08908b5..7ae03553a26c 100644 --- a/packages/connectivity/connectivity/pubspec.yaml +++ b/packages/connectivity/connectivity/pubspec.yaml @@ -2,7 +2,7 @@ name: connectivity description: Flutter plugin for discovering the state of the network (WiFi & mobile/cellular) connectivity on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/connectivity -version: 3.0.0-nullsafety.2 +version: 3.0.0-nullsafety.3 flutter: plugin: diff --git a/packages/cross_file/CHANGELOG.md b/packages/cross_file/CHANGELOG.md index b5d8a5695c5e..1716cb5ade7f 100644 --- a/packages/cross_file/CHANGELOG.md +++ b/packages/cross_file/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.0+2 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 0.1.0+1 - Update Flutter SDK constraint. diff --git a/packages/cross_file/README.md b/packages/cross_file/README.md index f1ab89bc52f1..65bd41896184 100644 --- a/packages/cross_file/README.md +++ b/packages/cross_file/README.md @@ -24,7 +24,7 @@ final fileContent = await file.readAsString(); print('Content of the file: ${fileContent}'); // e.g. "Moto G (4)" ``` -You will find links to the API docs on the [pub page](https://pub.dartlang.org/packages/cross_file). +You will find links to the API docs on the [pub page](https://pub.dev/packages/cross_file). ## Getting Started diff --git a/packages/cross_file/pubspec.yaml b/packages/cross_file/pubspec.yaml index 495a0ced5eee..0c7f30677aba 100644 --- a/packages/cross_file/pubspec.yaml +++ b/packages/cross_file/pubspec.yaml @@ -1,7 +1,7 @@ name: cross_file description: An abstraction to allow working with files across multiple platforms. homepage: https://github.com/flutter/plugins/tree/master/packages/cross_file -version: 0.1.0+1 +version: 0.1.0+2 dependencies: flutter: diff --git a/packages/device_info/device_info/CHANGELOG.md b/packages/device_info/device_info/CHANGELOG.md index cee321742843..910d265b7c3e 100644 --- a/packages/device_info/device_info/CHANGELOG.md +++ b/packages/device_info/device_info/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety.2 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 2.0.0-nullsafety.1 * Bump Dart SDK to support null safety. diff --git a/packages/device_info/device_info/README.md b/packages/device_info/device_info/README.md index 128bea5c2a17..98bfc15c7156 100644 --- a/packages/device_info/device_info/README.md +++ b/packages/device_info/device_info/README.md @@ -21,11 +21,11 @@ IosDeviceInfo iosInfo = await deviceInfo.iosInfo; print('Running on ${iosInfo.utsname.machine}'); // e.g. "iPod7,1" ``` -You will find links to the API docs on the [pub page](https://pub.dartlang.org/packages/device_info). +You will find links to the API docs on the [pub page](https://pub.dev/packages/device_info). ## Getting Started For help getting started with Flutter, view our online -[documentation](http://flutter.io/). +[documentation](https://flutter.dev/). -For help on editing plugin code, view the [documentation](https://flutter.io/platform-plugins/#edit-code). +For help on editing plugin code, view the [documentation](https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin). diff --git a/packages/device_info/device_info/pubspec.yaml b/packages/device_info/device_info/pubspec.yaml index 57c1741270c2..1a222869a632 100644 --- a/packages/device_info/device_info/pubspec.yaml +++ b/packages/device_info/device_info/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/device_info # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 2.0.0-nullsafety.1 +version: 2.0.0-nullsafety.2 flutter: plugin: diff --git a/packages/flutter_plugin_android_lifecycle/CHANGELOG.md b/packages/flutter_plugin_android_lifecycle/CHANGELOG.md index 6403638b02d4..e1804c5cc7f5 100644 --- a/packages/flutter_plugin_android_lifecycle/CHANGELOG.md +++ b/packages/flutter_plugin_android_lifecycle/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety.2 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 2.0.0-nullsafety.1 * Fix example app SDK. diff --git a/packages/flutter_plugin_android_lifecycle/README.md b/packages/flutter_plugin_android_lifecycle/README.md index 25f4d9efd056..3290140f4e5e 100644 --- a/packages/flutter_plugin_android_lifecycle/README.md +++ b/packages/flutter_plugin_android_lifecycle/README.md @@ -1,6 +1,6 @@ # Flutter Android Lifecycle Plugin -[![pub package](https://img.shields.io/pub/v/flutter_plugin_android_lifecycle.svg)](https://pub.dartlang.org/packages/flutter_plugin_android_lifecycle) +[![pub package](https://img.shields.io/pub/v/flutter_plugin_android_lifecycle.svg)](https://pub.dev/packages/flutter_plugin_android_lifecycle) A Flutter plugin for Android to allow other Flutter plugins to access Android `Lifecycle` objects in the plugin's binding. @@ -11,7 +11,7 @@ major version of the Android `Lifecycle` API they expect. ## Installation -Add `flutter_plugin_android_lifecycle` as a [dependency in your pubspec.yaml file](https://flutter.io/using-packages/). +Add `flutter_plugin_android_lifecycle` as a [dependency in your pubspec.yaml file](https://flutter.dev/using-packages/). ## Example diff --git a/packages/flutter_plugin_android_lifecycle/pubspec.yaml b/packages/flutter_plugin_android_lifecycle/pubspec.yaml index 66b3eba5cb94..d94237c2101a 100644 --- a/packages/flutter_plugin_android_lifecycle/pubspec.yaml +++ b/packages/flutter_plugin_android_lifecycle/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_plugin_android_lifecycle description: Flutter plugin for accessing an Android Lifecycle within other plugins. -version: 2.0.0-nullsafety.1 +version: 2.0.0-nullsafety.2 homepage: https://github.com/flutter/plugins/tree/master/packages/flutter_plugin_android_lifecycle environment: diff --git a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md index 75788a5d97fe..7783f3042dde 100644 --- a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md +++ b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.9 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 1.0.8 * Update Flutter SDK constraint. diff --git a/packages/google_maps_flutter/google_maps_flutter/README.md b/packages/google_maps_flutter/google_maps_flutter/README.md index cbc0ccbf62b8..6bb11a8da793 100644 --- a/packages/google_maps_flutter/google_maps_flutter/README.md +++ b/packages/google_maps_flutter/google_maps_flutter/README.md @@ -1,12 +1,12 @@ # Google Maps for Flutter -[![pub package](https://img.shields.io/pub/v/google_maps_flutter.svg)](https://pub.dartlang.org/packages/google_maps_flutter) +[![pub package](https://img.shields.io/pub/v/google_maps_flutter.svg)](https://pub.dev/packages/google_maps_flutter) A Flutter plugin that provides a [Google Maps](https://developers.google.com/maps/) widget. ## Usage -To use this plugin, add `google_maps_flutter` as a [dependency in your pubspec.yaml file](https://flutter.io/platform-plugins/). +To use this plugin, add `google_maps_flutter` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels). ## Getting Started diff --git a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml index b2f23805d863..7d480ebf74f2 100644 --- a/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml +++ b/packages/google_maps_flutter/google_maps_flutter/pubspec.yaml @@ -1,7 +1,7 @@ name: google_maps_flutter description: A Flutter plugin for integrating Google Maps in iOS and Android applications. homepage: https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter/google_maps_flutter -version: 1.0.8 +version: 1.0.9 dependencies: flutter: diff --git a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/CHANGELOG.md b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/CHANGELOG.md index b2e5e7920db3..25539436f8fa 100644 --- a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/CHANGELOG.md +++ b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.3 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 1.0.2 * Update Flutter SDK constraint. diff --git a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/README.md b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/README.md index 689071dcfe8d..a7ad235b71d5 100755 --- a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/README.md +++ b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/example/README.md @@ -5,4 +5,4 @@ Demonstrates how to use the google_sign_in plugin with the `googleapis` package. ## Getting Started For help getting started with Flutter, view our online -[documentation](http://flutter.io/). +[documentation](https://flutter.dev/). diff --git a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/pubspec.yaml b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/pubspec.yaml index 39243e719b8a..aecd5a9569be 100644 --- a/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/pubspec.yaml +++ b/packages/google_sign_in/extension_google_sign_in_as_googleapis_auth/pubspec.yaml @@ -6,7 +6,7 @@ name: extension_google_sign_in_as_googleapis_auth description: A bridge package between google_sign_in and googleapis_auth, to create Authenticated Clients from google_sign_in user credentials. -version: 1.0.2 +version: 1.0.3 homepage: https://github.com/flutter/plugins/google_sign_in/extension_google_sign_in_as_googleapis_auth dependencies: diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md index 3c9605eb9752..8a4dd6bc817e 100644 --- a/packages/google_sign_in/google_sign_in/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.5.8 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 4.5.7 * Update Flutter SDK constraint. diff --git a/packages/google_sign_in/google_sign_in/README.md b/packages/google_sign_in/google_sign_in/README.md index fc877171c4d2..61c4380cdcb7 100755 --- a/packages/google_sign_in/google_sign_in/README.md +++ b/packages/google_sign_in/google_sign_in/README.md @@ -1,6 +1,6 @@ # google_sign_in -[![pub package](https://img.shields.io/pub/v/google_sign_in.svg)](https://pub.dartlang.org/packages/google_sign_in) +[![pub package](https://img.shields.io/pub/v/google_sign_in.svg)](https://pub.dev/packages/google_sign_in) A Flutter plugin for [Google Sign In](https://developers.google.com/identity/). @@ -63,7 +63,7 @@ plugin could be an option. ## Usage ### Import the package -To use this plugin, follow the [plugin installation instructions](https://pub.dartlang.org/packages/google_sign_in#pub-pkg-tab-installing). +To use this plugin, follow the [plugin installation instructions](https://pub.dev/packages/google_sign_in#pub-pkg-tab-installing). ### Use the plugin Add the following import to your Dart code: diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml index ea1218543d83..b99b231adb9d 100644 --- a/packages/google_sign_in/google_sign_in/pubspec.yaml +++ b/packages/google_sign_in/google_sign_in/pubspec.yaml @@ -2,7 +2,7 @@ name: google_sign_in description: Flutter plugin for Google Sign-In, a secure authentication system for signing in with a Google account on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in -version: 4.5.7 +version: 4.5.8 flutter: plugin: diff --git a/packages/image_picker/image_picker/CHANGELOG.md b/packages/image_picker/image_picker/CHANGELOG.md index a1f7608ac7ac..4c1553a8ccaf 100644 --- a/packages/image_picker/image_picker/CHANGELOG.md +++ b/packages/image_picker/image_picker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.7+18 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 0.6.7+17 * iOS: fix `User-facing text should use localized string macro` warning. diff --git a/packages/image_picker/image_picker/README.md b/packages/image_picker/image_picker/README.md index 2e062a024597..106d78b630b9 100755 --- a/packages/image_picker/image_picker/README.md +++ b/packages/image_picker/image_picker/README.md @@ -1,13 +1,13 @@ # Image Picker plugin for Flutter -[![pub package](https://img.shields.io/pub/v/image_picker.svg)](https://pub.dartlang.org/packages/image_picker) +[![pub package](https://img.shields.io/pub/v/image_picker.svg)](https://pub.dev/packages/image_picker) A Flutter plugin for iOS and Android for picking images from the image library, and taking new pictures with the camera. ## Installation -First, add `image_picker` as a [dependency in your pubspec.yaml file](https://flutter.io/platform-plugins/). +First, add `image_picker` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels). ### iOS diff --git a/packages/image_picker/image_picker/pubspec.yaml b/packages/image_picker/image_picker/pubspec.yaml index 7b4972578e98..29baaa0de5d5 100755 --- a/packages/image_picker/image_picker/pubspec.yaml +++ b/packages/image_picker/image_picker/pubspec.yaml @@ -2,7 +2,7 @@ name: image_picker description: Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker/image_picker -version: 0.6.7+17 +version: 0.6.7+18 flutter: plugin: diff --git a/packages/in_app_purchase/CHANGELOG.md b/packages/in_app_purchase/CHANGELOG.md index 7b3301cf41cf..0a5794f931a8 100644 --- a/packages/in_app_purchase/CHANGELOG.md +++ b/packages/in_app_purchase/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.4+18 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 0.3.4+17 * Update Flutter SDK constraint. diff --git a/packages/in_app_purchase/README.md b/packages/in_app_purchase/README.md index 021811842b2f..431f2810c165 100644 --- a/packages/in_app_purchase/README.md +++ b/packages/in_app_purchase/README.md @@ -181,7 +181,7 @@ WARNING! Failure to call `InAppPurchaseConnection.completePurchase` and get a su ## Development This plugin uses -[json_serializable](https://pub.dartlang.org/packages/json_serializable) for the +[json_serializable](https://pub.dev/packages/json_serializable) for the many data structs passed between the underlying platform layers and Dart. After editing any of the serialized data structs, rebuild the serializers by running `flutter packages pub run build_runner build --delete-conflicting-outputs`. diff --git a/packages/in_app_purchase/pubspec.yaml b/packages/in_app_purchase/pubspec.yaml index 4b009b1383fd..5e5ef2447278 100644 --- a/packages/in_app_purchase/pubspec.yaml +++ b/packages/in_app_purchase/pubspec.yaml @@ -1,7 +1,7 @@ name: in_app_purchase description: A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play. homepage: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase -version: 0.3.4+17 +version: 0.3.4+18 dependencies: async: ^2.0.8 diff --git a/packages/local_auth/CHANGELOG.md b/packages/local_auth/CHANGELOG.md index 48d8df4f0fd9..863d72ed1da4 100644 --- a/packages/local_auth/CHANGELOG.md +++ b/packages/local_auth/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.0-nullsafety.2 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 1.0.0-nullsafety.1 * Update README for Android Integration. diff --git a/packages/local_auth/README.md b/packages/local_auth/README.md index 98dcdcf0bffa..516561be4230 100644 --- a/packages/local_auth/README.md +++ b/packages/local_auth/README.md @@ -206,6 +206,6 @@ app resumes. ## Getting Started For help getting started with Flutter, view our online -[documentation](http://flutter.io/). +[documentation](https://flutter.dev/). -For help on editing plugin code, view the [documentation](https://flutter.io/platform-plugins/#edit-code). \ No newline at end of file +For help on editing plugin code, view the [documentation](https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin). diff --git a/packages/local_auth/pubspec.yaml b/packages/local_auth/pubspec.yaml index 30acd7264314..444eec2efa53 100644 --- a/packages/local_auth/pubspec.yaml +++ b/packages/local_auth/pubspec.yaml @@ -2,7 +2,7 @@ name: local_auth description: Flutter plugin for Android and iOS device authentication sensors such as Fingerprint Reader and Touch ID. homepage: https://github.com/flutter/plugins/tree/master/packages/local_auth -version: 1.0.0-nullsafety.1 +version: 1.0.0-nullsafety.2 flutter: plugin: diff --git a/packages/path_provider/path_provider/CHANGELOG.md b/packages/path_provider/path_provider/CHANGELOG.md index 551e040f0488..f0e3cd9bfde8 100644 --- a/packages/path_provider/path_provider/CHANGELOG.md +++ b/packages/path_provider/path_provider/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.6.26 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 1.6.25 * Update Flutter SDK constraint. diff --git a/packages/path_provider/path_provider/README.md b/packages/path_provider/path_provider/README.md index e8d97e0106a3..0c80a5b34075 100644 --- a/packages/path_provider/path_provider/README.md +++ b/packages/path_provider/path_provider/README.md @@ -1,13 +1,13 @@ # path_provider -[![pub package](https://img.shields.io/pub/v/path_provider.svg)](https://pub.dartlang.org/packages/path_provider) +[![pub package](https://img.shields.io/pub/v/path_provider.svg)](https://pub.dev/packages/path_provider) A Flutter plugin for finding commonly used locations on the filesystem. Supports iOS, Android, Linux and MacOS. Not all methods are supported on all platforms. ## Usage -To use this plugin, add `path_provider` as a [dependency in your pubspec.yaml file](https://flutter.io/platform-plugins/). +To use this plugin, add `path_provider` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels). ### Example diff --git a/packages/path_provider/path_provider/pubspec.yaml b/packages/path_provider/path_provider/pubspec.yaml index 4be15fad09ff..15f9c57a0c98 100644 --- a/packages/path_provider/path_provider/pubspec.yaml +++ b/packages/path_provider/path_provider/pubspec.yaml @@ -1,7 +1,7 @@ name: path_provider description: Flutter plugin for getting commonly used locations on host platform file systems, such as the temp and app data directories. homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider -version: 1.6.25 +version: 1.6.26 flutter: plugin: diff --git a/packages/quick_actions/CHANGELOG.md b/packages/quick_actions/CHANGELOG.md index 8126f08ae3a8..a0c1b1f43c66 100644 --- a/packages/quick_actions/CHANGELOG.md +++ b/packages/quick_actions/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.0+12 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 0.4.0+11 * Update Flutter SDK constraint. diff --git a/packages/quick_actions/README.md b/packages/quick_actions/README.md index 21e7cfb619cb..4573523a5e36 100644 --- a/packages/quick_actions/README.md +++ b/packages/quick_actions/README.md @@ -43,6 +43,6 @@ quick action. ## Getting Started For help getting started with Flutter, view our online -[documentation](http://flutter.io/). +[documentation](https://flutter.dev/). -For help on editing plugin code, view the [documentation](https://flutter.io/platform-plugins/#edit-code). +For help on editing plugin code, view the [documentation](https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin). diff --git a/packages/quick_actions/pubspec.yaml b/packages/quick_actions/pubspec.yaml index ea363e842f08..e76cd9ce8bd2 100644 --- a/packages/quick_actions/pubspec.yaml +++ b/packages/quick_actions/pubspec.yaml @@ -2,7 +2,7 @@ name: quick_actions description: Flutter plugin for creating shortcuts on home screen, also known as Quick Actions on iOS and App Shortcuts on Android. homepage: https://github.com/flutter/plugins/tree/master/packages/quick_actions -version: 0.4.0+11 +version: 0.4.0+12 flutter: plugin: diff --git a/packages/sensors/CHANGELOG.md b/packages/sensors/CHANGELOG.md index 82500ae4edda..8970f1e76e5d 100644 --- a/packages/sensors/CHANGELOG.md +++ b/packages/sensors/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.2+8 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 0.4.2+7 * Update Flutter SDK constraint. diff --git a/packages/sensors/README.md b/packages/sensors/README.md index e3c80b2b2947..08a9b2ea2b8c 100644 --- a/packages/sensors/README.md +++ b/packages/sensors/README.md @@ -13,7 +13,7 @@ A Flutter plugin to access the accelerometer and gyroscope sensors. ## Usage To use this plugin, add `sensors` as a [dependency in your pubspec.yaml -file](https://flutter.io/platform-plugins/). +file](https://flutter.dev/docs/development/platform-integration/platform-channels). This will expose three classes of sensor events, through three different streams. diff --git a/packages/sensors/pubspec.yaml b/packages/sensors/pubspec.yaml index e1abc05a8496..35feb4b1ed56 100644 --- a/packages/sensors/pubspec.yaml +++ b/packages/sensors/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/sensors # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.4.2+7 +version: 0.4.2+8 flutter: plugin: diff --git a/packages/share/CHANGELOG.md b/packages/share/CHANGELOG.md index 86906bbd56be..eef22bfcc76e 100644 --- a/packages/share/CHANGELOG.md +++ b/packages/share/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety.1 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 2.0.0-nullsafety * Migrate to null safety. diff --git a/packages/share/README.md b/packages/share/README.md index 750fca6a5b18..6ca38b416f03 100644 --- a/packages/share/README.md +++ b/packages/share/README.md @@ -1,6 +1,6 @@ # Share plugin -[![pub package](https://img.shields.io/pub/v/share.svg)](https://pub.dartlang.org/packages/share) +[![pub package](https://img.shields.io/pub/v/share.svg)](https://pub.dev/packages/share) A Flutter plugin to share content from your Flutter app via the platform's share dialog. @@ -17,7 +17,7 @@ For more details see: https://github.com/flutter/flutter/wiki/Package-migration- ## Usage -To use this plugin, add `share` as a [dependency in your pubspec.yaml file](https://flutter.io/platform-plugins/). +To use this plugin, add `share` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels). ## Example diff --git a/packages/share/pubspec.yaml b/packages/share/pubspec.yaml index 69d0fdbd5eb8..07ead8f3f659 100644 --- a/packages/share/pubspec.yaml +++ b/packages/share/pubspec.yaml @@ -2,7 +2,7 @@ name: share description: Flutter plugin for sharing content via the platform share UI, using the ACTION_SEND intent on Android and UIActivityViewController on iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/share -version: 2.0.0-nullsafety +version: 2.0.0-nullsafety.1 flutter: plugin: diff --git a/packages/shared_preferences/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md index 407cf0ccdda4..5e09b3f87fb0 100644 --- a/packages/shared_preferences/shared_preferences/CHANGELOG.md +++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.5.13+2 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 0.5.13+1 * Update Flutter SDK constraint. diff --git a/packages/shared_preferences/shared_preferences/README.md b/packages/shared_preferences/shared_preferences/README.md index 9ccac0ac49ae..516d7a91b848 100644 --- a/packages/shared_preferences/shared_preferences/README.md +++ b/packages/shared_preferences/shared_preferences/README.md @@ -1,6 +1,6 @@ # Shared preferences plugin -[![pub package](https://img.shields.io/pub/v/shared_preferences.svg)](https://pub.dartlang.org/packages/shared_preferences) +[![pub package](https://img.shields.io/pub/v/shared_preferences.svg)](https://pub.dev/packages/shared_preferences) Wraps platform-specific persistent storage for simple data (NSUserDefaults on iOS and macOS, SharedPreferences on Android, etc.). Data may be persisted to disk asynchronously, @@ -16,7 +16,7 @@ Please use `shared_preferences: '>=0.5.y+x <2.0.0'` as your dependency constrain For more details see: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 ## Usage -To use this plugin, add `shared_preferences` as a [dependency in your pubspec.yaml file](https://flutter.io/platform-plugins/). +To use this plugin, add `shared_preferences` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels). ### Example diff --git a/packages/shared_preferences/shared_preferences/pubspec.yaml b/packages/shared_preferences/shared_preferences/pubspec.yaml index 492027ac0e42..69689c738b8e 100644 --- a/packages/shared_preferences/shared_preferences/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/shared_prefere # 0.5.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.5.13+1 +version: 0.5.13+2 flutter: plugin: diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md index aaf958a52624..9df2d27a2b57 100644 --- a/packages/url_launcher/url_launcher/CHANGELOG.md +++ b/packages/url_launcher/url_launcher/CHANGELOG.md @@ -1,3 +1,7 @@ +## 6.0.0-nullsafety.2 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 6.0.0-nullsafety.1 * Bump Dart SDK to support null safety. diff --git a/packages/url_launcher/url_launcher/README.md b/packages/url_launcher/url_launcher/README.md index f29b5327a611..573624fa18eb 100644 --- a/packages/url_launcher/url_launcher/README.md +++ b/packages/url_launcher/url_launcher/README.md @@ -1,6 +1,6 @@ # url_launcher -[![pub package](https://img.shields.io/pub/v/url_launcher.svg)](https://pub.dartlang.org/packages/url_launcher) +[![pub package](https://img.shields.io/pub/v/url_launcher.svg)](https://pub.dev/packages/url_launcher) A Flutter plugin for launching a URL in the mobile platform. Supports iOS, Android, web, Windows, macOS, and Linux. @@ -35,7 +35,7 @@ void _launchURL() async => ## Supported URL schemes -The [`launch`](https://www.dartdocs.org/documentation/url_launcher/latest/url_launcher/launch.html) method +The [`launch`](https://pub.dev/documentation/url_launcher/latest/url_launcher/launch.html) method takes a string argument containing a URL. This URL can be formatted using a number of different URL schemes. The supported URL schemes depend on the underlying platform and installed apps. @@ -80,7 +80,7 @@ launching a URL using the `sms` scheme, or a device may not have an email app and thus no support for launching a URL using the `email` scheme. We recommend checking which URL schemes are supported using the -[`canLaunch`](https://www.dartdocs.org/documentation/url_launcher/latest/url_launcher/canLaunch.html) +[`canLaunch`](https://pub.dev/documentation/url_launcher/latest/url_launcher/canLaunch.html) method prior to calling `launch`. If the `canLaunch` method returns false, as a best practice we suggest adjusting the application UI so that the unsupported URL is never triggered; for example, if the `email` scheme is not supported, a diff --git a/packages/url_launcher/url_launcher/pubspec.yaml b/packages/url_launcher/url_launcher/pubspec.yaml index d0abd941a9c2..e2d7a161e1ea 100644 --- a/packages/url_launcher/url_launcher/pubspec.yaml +++ b/packages/url_launcher/url_launcher/pubspec.yaml @@ -2,7 +2,7 @@ name: url_launcher description: Flutter plugin for launching a URL on Android and iOS. Supports web, phone, SMS, and email schemes. homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher -version: 6.0.0-nullsafety.1 +version: 6.0.0-nullsafety.2 flutter: plugin: diff --git a/packages/url_launcher/url_launcher_linux/CHANGELOG.md b/packages/url_launcher/url_launcher_linux/CHANGELOG.md index bad287a7a744..cc3ee456c938 100644 --- a/packages/url_launcher/url_launcher_linux/CHANGELOG.md +++ b/packages/url_launcher/url_launcher_linux/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.0-nullsafety.2 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 0.1.0-nullsafety.1 * Migrate to null safety. diff --git a/packages/url_launcher/url_launcher_linux/example/README.md b/packages/url_launcher/url_launcher_linux/example/README.md index 28dd90d71700..c200da8974d1 100644 --- a/packages/url_launcher/url_launcher_linux/example/README.md +++ b/packages/url_launcher/url_launcher_linux/example/README.md @@ -5,4 +5,4 @@ Demonstrates how to use the url_launcher plugin. ## Getting Started For help getting started with Flutter, view our online -[documentation](http://flutter.io/). +[documentation](https://flutter.dev/). diff --git a/packages/url_launcher/url_launcher_linux/pubspec.yaml b/packages/url_launcher/url_launcher_linux/pubspec.yaml index e2fb5fc52e69..41366a1d4f1e 100644 --- a/packages/url_launcher/url_launcher_linux/pubspec.yaml +++ b/packages/url_launcher/url_launcher_linux/pubspec.yaml @@ -1,6 +1,6 @@ name: url_launcher_linux description: Linux implementation of the url_launcher plugin. -version: 0.1.0-nullsafety.1 +version: 0.1.0-nullsafety.2 homepage: https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_linux flutter: diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md index e2bca40531da..4e2826262eaf 100644 --- a/packages/video_player/video_player/CHANGELOG.md +++ b/packages/video_player/video_player/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety.5 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 2.0.0-nullsafety.4 * Fixed an issue where `isBuffering` was not updating on Android. diff --git a/packages/video_player/video_player/README.md b/packages/video_player/video_player/README.md index 5eff770b87a2..e64ce152f85b 100644 --- a/packages/video_player/video_player/README.md +++ b/packages/video_player/video_player/README.md @@ -1,6 +1,6 @@ # Video Player plugin for Flutter -[![pub package](https://img.shields.io/pub/v/video_player.svg)](https://pub.dartlang.org/packages/video_player) +[![pub package](https://img.shields.io/pub/v/video_player.svg)](https://pub.dev/packages/video_player) A Flutter plugin for iOS, Android and Web for playing back video on a Widget surface. @@ -12,7 +12,7 @@ A Flutter plugin for iOS, Android and Web for playing back video on a Widget sur ## Installation -First, add `video_player` as a [dependency in your pubspec.yaml file](https://flutter.io/using-packages/). +First, add `video_player` as a [dependency in your pubspec.yaml file](https://flutter.dev/using-packages/). ### iOS diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml index 6e483324e499..603f2358cd55 100644 --- a/packages/video_player/video_player/pubspec.yaml +++ b/packages/video_player/video_player/pubspec.yaml @@ -4,7 +4,7 @@ description: Flutter plugin for displaying inline video with other Flutter # 0.10.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 2.0.0-nullsafety.4 +version: 2.0.0-nullsafety.5 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player/video_player flutter: diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md index a10c28dc20b7..19cacb6a6e90 100644 --- a/packages/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.0.0-nullsafety.2 + +* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276)) + ## 2.0.0-nullsafety.1 * Added `allowsInlineMediaPlayback` property. diff --git a/packages/webview_flutter/README.md b/packages/webview_flutter/README.md index 6852ebb34522..df554eb5123c 100644 --- a/packages/webview_flutter/README.md +++ b/packages/webview_flutter/README.md @@ -1,6 +1,6 @@ # WebView for Flutter -[![pub package](https://img.shields.io/pub/v/webview_flutter.svg)](https://pub.dartlang.org/packages/webview_flutter) +[![pub package](https://img.shields.io/pub/v/webview_flutter.svg)](https://pub.dev/packages/webview_flutter) A Flutter plugin that provides a WebView widget. @@ -8,7 +8,7 @@ On iOS the WebView widget is backed by a [WKWebView](https://developer.apple.com On Android the WebView widget is backed by a [WebView](https://developer.android.com/reference/android/webkit/WebView). ## Usage -Add `webview_flutter` as a [dependency in your pubspec.yaml file](https://flutter.io/platform-plugins/). +Add `webview_flutter` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels). You can now include a WebView widget in your widget tree. See the [WebView](https://pub.dev/documentation/webview_flutter/latest/webview_flutter/WebView-class.html) diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml index 75910dfe02aa..b2fbfc1110c5 100644 --- a/packages/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. -version: 2.0.0-nullsafety.1 +version: 2.0.0-nullsafety.2 homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter environment: From 22422af71d792e62f439fb8a278b1c23fa940993 Mon Sep 17 00:00:00 2001 From: Bodhi Mulders Date: Sat, 19 Dec 2020 11:08:30 +0100 Subject: [PATCH 24/24] [camera] Flash functionality for Android and iOS (#3314) * Move camera to camera/camera * Fix relative path after move * First suggestion for camera platform interface * Remove test coverage folder * Update the version to 1.0.0 * Remove redundant analysis overrides * Renamed onLatestImageAvailableHandler definition * Split CameraEvents into separate streams * Updated platform interface to have recording methods return XFile instances. * Update documentation and unit tests to match platform interface changes * Make file input optional for recording methods in platform interface. Update docs. * Add missing full stop in docs. * Run dartfmt. Wrapped docs after max 80 cols. Added missing full stop. * Implemented & tested first parts of method channel implementation * Remove unused EventChannelMock class * Add missing unit tests * Add availableCameras to method channel implementation * Updated platform interface * Update packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart Co-authored-by: Maurits van Beusekom * Update packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart Co-authored-by: Maurits van Beusekom * Added placeholders in default method channel implementation * Add missing implementations to default method channel implementation * Fix formatting * Fix PR feedback * Add unit test for availableCameras * Expand availableCameras unit test. Added unit test for takePicture. * Add unit test for startVideoRecording * Add unit test for prepareForVideoRecording * Add unit test for stopVideoRecording * Add unit test for pauseVideoRecording * Add unit test for buildView * Remove TODO comment * Update packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart Co-authored-by: Maurits van Beusekom * Update packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart Co-authored-by: Maurits van Beusekom * Update packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart Co-authored-by: Maurits van Beusekom * WIP: Dart and Android implementation * Have resolution stream replay last value on subscription. Replace stream_transform with rxdart. * Added reverse method channel to replace event channel. Updated initialise and takePicture implementations for android. WIP implementation for startVideoRecording * Fixed example app for Android. Removed isRecordingVideo and isStreamingImages from buildView method. * iOS implementation: Removed standard event channel. Added reverse method channel. Updated initialize method. Added resolution changed event. Updated error reporting to use new method channel. * Added some first tests for camera/camera * Started splitting initialize method * More tests and some feedback * Finish splitting up initialize for iOS * Update unit tests * Remove unused listener in plugin * Fix takePicture method on iOS * Fix video recording on iOS. Updated platform interface. * Update unit tests * Update error handling of video methods in iOS code. Make iOS code more consistent. * Split initialize method on Android * Updated startVideoRecording documentation * Make sure file is returned by stopVideoRecording * Change cast * Use correct event-type after initializing * Fix DartMessenger unit-tests * Fix formatting * Fixed tests, formatting and analysis warnings * Added missing documentation public APIs * Added missing license to Dart files * Fix formatting issues * Updated CHANGELOG and version * Added more tests * Formatted code * Added additional unit-tests to platform_interface * Fix formatting issues * Re-added the CameraPreview widget * Refactored CameraException not to use * Use import/export instead of part implementation * fixed formatting * Resolved additional feedback * Resolved additional feedback * Flash WIP * Implement flash modes for Android * Update dependency to git repo * Add missing PictureCaptureRequest class * Add PR feedback * Move enums out of Camera.java * Expanded platform interface so support setting flash mode * Formatted dart code * Manually serialize flash mode enum rather than relying on stringification. * Add default to flash mode serialization * Fix for unit tests and reformatting * Fixed CHANGELOG and remove redundant iOS files * Expose FlashMode through camera package * Add reqeusted unit tests * Clean up new tests * Add unit tests for Android implementation * Update platform interface dependency to point to pub.dev release. Co-authored-by: Maurits van Beusekom Co-authored-by: Maurits van Beusekom Co-authored-by: daniel --- packages/camera/camera/CHANGELOG.md | 4 + .../io/flutter/plugins/camera/Camera.java | 191 ++++++++++++++---- .../flutter/plugins/camera/CameraUtils.java | 2 +- .../plugins/camera/MethodCallHandlerImpl.java | 16 ++ .../plugins/camera/PictureCaptureRequest.java | 49 +++++ .../plugins/camera/types/FlashMode.java | 16 ++ .../camera/types/ResolutionPreset.java | 11 + .../camera/PictureCaptureRequestTest.java | 93 +++++++++ .../plugins/camera/types/FlashModeTest.java | 26 +++ .../android/app/src/main/AndroidManifest.xml | 1 + packages/camera/camera/example/lib/main.dart | 54 +++++ .../camera/camera/ios/Classes/CameraPlugin.m | 48 +++++ packages/camera/camera/lib/camera.dart | 1 + .../camera/lib/src/camera_controller.dart | 20 +- packages/camera/camera/pubspec.yaml | 4 +- packages/camera/camera/test/camera_test.dart | 45 +++++ .../camera/camera/test/camera_value_test.dart | 6 +- 17 files changed, 542 insertions(+), 45 deletions(-) create mode 100644 packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/PictureCaptureRequest.java create mode 100644 packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/types/FlashMode.java create mode 100644 packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/types/ResolutionPreset.java create mode 100644 packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/PictureCaptureRequestTest.java create mode 100644 packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/types/FlashModeTest.java diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md index a11579d528a4..9789e9e80b69 100644 --- a/packages/camera/camera/CHANGELOG.md +++ b/packages/camera/camera/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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)) diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java index 306dd447cfb9..27f1355319c1 100644 --- a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java +++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java @@ -17,6 +17,8 @@ import android.hardware.camera2.CameraMetadata; import android.hardware.camera2.CaptureFailure; import android.hardware.camera2.CaptureRequest; +import android.hardware.camera2.CaptureResult; +import android.hardware.camera2.TotalCaptureResult; import android.hardware.camera2.params.OutputConfiguration; import android.hardware.camera2.params.SessionConfiguration; import android.hardware.camera2.params.StreamConfigurationMap; @@ -34,6 +36,8 @@ import io.flutter.plugin.common.EventChannel; import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.plugins.camera.media.MediaRecorderBuilder; +import io.flutter.plugins.camera.types.FlashMode; +import io.flutter.plugins.camera.types.ResolutionPreset; import io.flutter.view.TextureRegistry.SurfaceTextureEntry; import java.io.File; import java.io.FileOutputStream; @@ -69,16 +73,8 @@ public class Camera { private CamcorderProfile recordingProfile; private int currentOrientation = ORIENTATION_UNKNOWN; private Context applicationContext; - - // Mirrors camera.dart - public enum ResolutionPreset { - low, - medium, - high, - veryHigh, - ultraHigh, - max, - } + private FlashMode flashMode; + private PictureCaptureRequest pictureCaptureRequest; public Camera( final Activity activity, @@ -97,6 +93,7 @@ public Camera( this.dartMessenger = dartMessenger; this.cameraManager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE); this.applicationContext = activity.getApplicationContext(); + this.flashMode = FlashMode.auto; orientationEventListener = new OrientationEventListener(activity.getApplicationContext()) { @Override @@ -220,58 +217,125 @@ SurfaceTextureEntry getFlutterTexture() { } public void takePicture(@NonNull final Result result) { + // Only take 1 picture at a time + if (pictureCaptureRequest != null && !pictureCaptureRequest.isFinished()) { + result.error("captureAlreadyActive", "Picture is currently already being captured", null); + return; + } + // Store the result + this.pictureCaptureRequest = new PictureCaptureRequest(result); + + // Create temporary file final File outputDir = applicationContext.getCacheDir(); final File file; try { file = File.createTempFile("CAP", ".jpg", outputDir); } catch (IOException | SecurityException e) { - result.error("cannotCreateFile", e.getMessage(), null); + pictureCaptureRequest.error("cannotCreateFile", e.getMessage(), null); return; } + // Listen for picture being taken pictureImageReader.setOnImageAvailableListener( reader -> { try (Image image = reader.acquireLatestImage()) { ByteBuffer buffer = image.getPlanes()[0].getBuffer(); writeToFile(buffer, file); - result.success(file.getAbsolutePath()); + pictureCaptureRequest.finish(file.getAbsolutePath()); } catch (IOException e) { - result.error("IOError", "Failed saving image", null); + pictureCaptureRequest.error("IOError", "Failed saving image", null); } }, null); + runPicturePreCapture(); + } + + private final CameraCaptureSession.CaptureCallback pictureCaptureCallback = + new CameraCaptureSession.CaptureCallback() { + @Override + public void onCaptureCompleted( + @NonNull CameraCaptureSession session, + @NonNull CaptureRequest request, + @NonNull TotalCaptureResult result) { + assert (pictureCaptureRequest != null); + switch (pictureCaptureRequest.getState()) { + case awaitingPreCapture: + Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE); + // Some devices might return null here, in which case we will also continue. + if (aeState == null + || aeState == CaptureRequest.CONTROL_AE_STATE_FLASH_REQUIRED + || aeState == CaptureRequest.CONTROL_AE_STATE_CONVERGED) { + runPictureCapture(); + } + break; + } + } + + @Override + public void onCaptureFailed( + @NonNull CameraCaptureSession session, + @NonNull CaptureRequest request, + @NonNull CaptureFailure failure) { + assert (pictureCaptureRequest != null); + String reason; + switch (failure.getReason()) { + case CaptureFailure.REASON_ERROR: + reason = "An error happened in the framework"; + break; + case CaptureFailure.REASON_FLUSHED: + reason = "The capture has failed due to an abortCaptures() call"; + break; + default: + reason = "Unknown reason"; + } + pictureCaptureRequest.error("captureFailure", reason, null); + } + }; + + private void runPicturePreCapture() { + assert (pictureCaptureRequest != null); + pictureCaptureRequest.setState(PictureCaptureRequest.State.awaitingPreCapture); + + captureRequestBuilder.set( + CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, + CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START); + try { + cameraCaptureSession.capture(captureRequestBuilder.build(), pictureCaptureCallback, null); + captureRequestBuilder.set( + CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, + CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_IDLE); + } catch (CameraAccessException e) { + pictureCaptureRequest.error("cameraAccess", e.getMessage(), null); + } + } + + private void runPictureCapture() { + assert (pictureCaptureRequest != null); + pictureCaptureRequest.setState(PictureCaptureRequest.State.capturing); try { final CaptureRequest.Builder captureBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); captureBuilder.addTarget(pictureImageReader.getSurface()); captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, getMediaOrientation()); - - cameraCaptureSession.capture( - captureBuilder.build(), - new CameraCaptureSession.CaptureCallback() { - @Override - public void onCaptureFailed( - @NonNull CameraCaptureSession session, - @NonNull CaptureRequest request, - @NonNull CaptureFailure failure) { - String reason; - switch (failure.getReason()) { - case CaptureFailure.REASON_ERROR: - reason = "An error happened in the framework"; - break; - case CaptureFailure.REASON_FLUSHED: - reason = "The capture has failed due to an abortCaptures() call"; - break; - default: - reason = "Unknown reason"; - } - result.error("captureFailure", reason, null); - } - }, - null); + switch (flashMode) { + case off: + captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON); + captureBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF); + break; + case auto: + captureBuilder.set( + CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH); + break; + case always: + default: + captureBuilder.set( + CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH); + break; + } + cameraCaptureSession.capture(captureBuilder.build(), pictureCaptureCallback, null); } catch (CameraAccessException e) { - result.error("cameraAccess", e.getMessage(), null); + pictureCaptureRequest.error("cameraAccess", e.getMessage(), null); } } @@ -314,8 +378,7 @@ public void onConfigured(@NonNull CameraCaptureSession session) { return; } cameraCaptureSession = session; - captureRequestBuilder.set( - CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO); + initPreviewCaptureBuilder(); cameraCaptureSession.setRepeatingRequest(captureRequestBuilder.build(), null, null); if (onSuccessCallback != null) { onSuccessCallback.run(); @@ -452,6 +515,54 @@ public void resumeVideoRecording(@NonNull final Result result) { result.success(null); } + public void setFlashMode(@NonNull final Result result, FlashMode mode) + throws CameraAccessException { + // Get the flash availability + Boolean flashAvailable; + try { + flashAvailable = + cameraManager + .getCameraCharacteristics(cameraDevice.getId()) + .get(CameraCharacteristics.FLASH_INFO_AVAILABLE); + } catch (CameraAccessException e) { + result.error("setFlashModeFailed", e.getMessage(), null); + return; + } + // Check if flash is available. + if (flashAvailable == null || !flashAvailable) { + result.error("setFlashModeFailed", "Device does not have flash capabilities", null); + return; + } + // Get flash + + this.flashMode = mode; + initPreviewCaptureBuilder(); + this.cameraCaptureSession.setRepeatingRequest(captureRequestBuilder.build(), null, null); + result.success(null); + } + + private void initPreviewCaptureBuilder() { + captureRequestBuilder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO); + switch (flashMode) { + case off: + captureRequestBuilder.set( + CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON); + captureRequestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF); + break; + case auto: + captureRequestBuilder.set( + CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH); + captureRequestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF); + break; + case always: + default: + captureRequestBuilder.set( + CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH); + captureRequestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF); + break; + } + } + public void startPreview() throws CameraAccessException { if (pictureImageReader == null || pictureImageReader.getSurface() == null) return; diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/CameraUtils.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/CameraUtils.java index a7bb3b7d4914..3b665d6b24f2 100644 --- a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/CameraUtils.java +++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/CameraUtils.java @@ -10,7 +10,7 @@ import android.hardware.camera2.params.StreamConfigurationMap; import android.media.CamcorderProfile; import android.util.Size; -import io.flutter.plugins.camera.Camera.ResolutionPreset; +import io.flutter.plugins.camera.types.ResolutionPreset; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/MethodCallHandlerImpl.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/MethodCallHandlerImpl.java index 6c2e65e76f9e..12b99b72f642 100644 --- a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/MethodCallHandlerImpl.java +++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/MethodCallHandlerImpl.java @@ -10,6 +10,7 @@ import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.plugins.camera.CameraPermissions.PermissionsRegistry; +import io.flutter.plugins.camera.types.FlashMode; import io.flutter.view.TextureRegistry; import java.util.HashMap; import java.util.Map; @@ -122,6 +123,21 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull final Result result) camera.resumeVideoRecording(result); break; } + case "setFlashMode": + { + String modeStr = call.argument("mode"); + FlashMode mode = FlashMode.getValueForString(modeStr); + if (mode == null) { + result.error("setFlashModeFailed", "Unknown flash mode " + modeStr, null); + return; + } + try { + camera.setFlashMode(result, mode); + } catch (Exception e) { + handleException(e, result); + } + break; + } case "startImageStream": { try { diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/PictureCaptureRequest.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/PictureCaptureRequest.java new file mode 100644 index 000000000000..e365f071d9a8 --- /dev/null +++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/PictureCaptureRequest.java @@ -0,0 +1,49 @@ +package io.flutter.plugins.camera; + +import androidx.annotation.Nullable; +import io.flutter.plugin.common.MethodChannel; + +class PictureCaptureRequest { + + enum State { + idle, + awaitingPreCapture, + capturing, + finished, + error, + } + + private final MethodChannel.Result result; + private State state; + + public PictureCaptureRequest(MethodChannel.Result result) { + this.result = result; + state = State.idle; + } + + public void setState(State state) { + if (isFinished()) throw new IllegalStateException("Request has already been finished"); + this.state = state; + } + + public State getState() { + return state; + } + + public boolean isFinished() { + return state == State.finished || state == State.error; + } + + public void finish(String absolutePath) { + if (isFinished()) throw new IllegalStateException("Request has already been finished"); + result.success(absolutePath); + state = State.finished; + } + + public void error( + String errorCode, @Nullable String errorMessage, @Nullable Object errorDetails) { + if (isFinished()) throw new IllegalStateException("Request has already been finished"); + result.error(errorCode, errorMessage, errorDetails); + state = State.error; + } +} diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/types/FlashMode.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/types/FlashMode.java new file mode 100644 index 000000000000..eddeddc47eab --- /dev/null +++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/types/FlashMode.java @@ -0,0 +1,16 @@ +package io.flutter.plugins.camera.types; + +// Mirrors flash_mode.dart +public enum FlashMode { + off, + auto, + always; + + public static FlashMode getValueForString(String modeStr) { + try { + return valueOf(modeStr); + } catch (IllegalArgumentException | NullPointerException e) { + return null; + } + } +} diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/types/ResolutionPreset.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/types/ResolutionPreset.java new file mode 100644 index 000000000000..ffbe2e62095d --- /dev/null +++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/types/ResolutionPreset.java @@ -0,0 +1,11 @@ +package io.flutter.plugins.camera.types; + +// Mirrors camera.dart +public enum ResolutionPreset { + low, + medium, + high, + veryHigh, + ultraHigh, + max, +} diff --git a/packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/PictureCaptureRequestTest.java b/packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/PictureCaptureRequestTest.java new file mode 100644 index 000000000000..2b6aa0f25fcf --- /dev/null +++ b/packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/PictureCaptureRequestTest.java @@ -0,0 +1,93 @@ +package io.flutter.plugins.camera; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import io.flutter.plugin.common.MethodChannel; +import org.junit.Test; + +public class PictureCaptureRequestTest { + + @Test + public void state_is_idle_by_default() { + PictureCaptureRequest req = new PictureCaptureRequest(null); + assertEquals("Default state is idle", req.getState(), PictureCaptureRequest.State.idle); + } + + @Test + public void setState_sets_state() { + PictureCaptureRequest req = new PictureCaptureRequest(null); + req.setState(PictureCaptureRequest.State.awaitingPreCapture); + assertEquals( + "State is awaitingPreCapture", + req.getState(), + PictureCaptureRequest.State.awaitingPreCapture); + req.setState(PictureCaptureRequest.State.capturing); + assertEquals( + "State is awaitingPreCapture", req.getState(), PictureCaptureRequest.State.capturing); + } + + @Test + public void finish_sets_result_and_state() { + // Setup + MethodChannel.Result mockResult = mock(MethodChannel.Result.class); + PictureCaptureRequest req = new PictureCaptureRequest(mockResult); + // Act + req.finish("/test/path"); + // Test + verify(mockResult).success("/test/path"); + assertEquals("State is finished", req.getState(), PictureCaptureRequest.State.finished); + } + + @Test + public void isFinished_is_true_When_state_is_finished_or_error() { + // Setup + PictureCaptureRequest req = new PictureCaptureRequest(null); + // Test false states + req.setState(PictureCaptureRequest.State.idle); + assertFalse(req.isFinished()); + req.setState(PictureCaptureRequest.State.awaitingPreCapture); + assertFalse(req.isFinished()); + req.setState(PictureCaptureRequest.State.capturing); + assertFalse(req.isFinished()); + // Test true states + req.setState(PictureCaptureRequest.State.finished); + assertTrue(req.isFinished()); + req = new PictureCaptureRequest(null); // Refresh + req.setState(PictureCaptureRequest.State.error); + assertTrue(req.isFinished()); + } + + @Test(expected = IllegalStateException.class) + public void finish_throws_When_already_finished() { + // Setup + PictureCaptureRequest req = new PictureCaptureRequest(null); + req.setState(PictureCaptureRequest.State.finished); + // Act + req.finish("/test/path"); + } + + @Test + public void error_sets_result_and_state() { + // Setup + MethodChannel.Result mockResult = mock(MethodChannel.Result.class); + PictureCaptureRequest req = new PictureCaptureRequest(mockResult); + // Act + req.error("ERROR_CODE", "Error Message", null); + // Test + verify(mockResult).error("ERROR_CODE", "Error Message", null); + assertEquals("State is error", req.getState(), PictureCaptureRequest.State.error); + } + + @Test(expected = IllegalStateException.class) + public void error_throws_When_already_finished() { + // Setup + PictureCaptureRequest req = new PictureCaptureRequest(null); + req.setState(PictureCaptureRequest.State.finished); + // Act + req.error(null, null, null); + } +} diff --git a/packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/types/FlashModeTest.java b/packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/types/FlashModeTest.java new file mode 100644 index 000000000000..0549e4fc750e --- /dev/null +++ b/packages/camera/camera/android/src/test/java/io/flutter/plugins/camera/types/FlashModeTest.java @@ -0,0 +1,26 @@ +package io.flutter.plugins.camera.types; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class FlashModeTest { + + @Test + public void getValueForString_returns_correct_values() { + assertEquals( + "Returns FlashMode.off for 'off'", FlashMode.getValueForString("off"), FlashMode.off); + assertEquals( + "Returns FlashMode.auto for 'auto'", FlashMode.getValueForString("auto"), FlashMode.auto); + assertEquals( + "Returns FlashMode.always for 'always'", + FlashMode.getValueForString("always"), + FlashMode.always); + } + + @Test + public void getValueForString_returns_null_for_nonexistant_value() { + assertEquals( + "Returns null for 'nonexistant'", FlashMode.getValueForString("nonexistant"), null); + } +} diff --git a/packages/camera/camera/example/android/app/src/main/AndroidManifest.xml b/packages/camera/camera/example/android/app/src/main/AndroidManifest.xml index f37f82306024..f216a7251bcf 100644 --- a/packages/camera/camera/example/android/app/src/main/AndroidManifest.xml +++ b/packages/camera/camera/example/android/app/src/main/AndroidManifest.xml @@ -37,4 +37,5 @@ android:required="true"/> + diff --git a/packages/camera/camera/example/lib/main.dart b/packages/camera/camera/example/lib/main.dart index e1edc1b06386..847779dade09 100644 --- a/packages/camera/camera/example/lib/main.dart +++ b/packages/camera/camera/example/lib/main.dart @@ -101,6 +101,7 @@ class _CameraExampleHomeState extends State ), ), _captureControlRowWidget(), + _flashModeRowWidget(), _toggleAudioWidget(), Padding( padding: const EdgeInsets.all(5.0), @@ -191,6 +192,43 @@ class _CameraExampleHomeState extends State ); } + /// Display a bar with buttons to change the flash mode + Widget _flashModeRowWidget() { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + mainAxisSize: MainAxisSize.max, + children: [ + IconButton( + icon: const Icon(Icons.flash_off), + color: controller?.value?.flashMode == FlashMode.off + ? Colors.orange + : Colors.blue, + onPressed: controller != null + ? () => onFlashModeButtonPressed(FlashMode.off) + : null, + ), + IconButton( + icon: const Icon(Icons.flash_auto), + color: controller?.value?.flashMode == FlashMode.auto + ? Colors.orange + : Colors.blue, + onPressed: controller != null + ? () => onFlashModeButtonPressed(FlashMode.auto) + : null, + ), + IconButton( + icon: const Icon(Icons.flash_on), + color: controller?.value?.flashMode == FlashMode.always + ? Colors.orange + : Colors.blue, + onPressed: controller != null + ? () => onFlashModeButtonPressed(FlashMode.always) + : null, + ), + ], + ); + } + /// Display the control bar with buttons to take pictures and record videos. Widget _captureControlRowWidget() { return Row( @@ -317,6 +355,13 @@ class _CameraExampleHomeState extends State }); } + void onFlashModeButtonPressed(FlashMode mode) { + setFlashMode(mode).then((_) { + if (mounted) setState(() {}); + showInSnackBar('Flash mode set to ${mode.toString().split('.').last}'); + }); + } + void onVideoRecordButtonPressed() { startVideoRecording().then((_) { if (mounted) setState(() {}); @@ -406,6 +451,15 @@ class _CameraExampleHomeState extends State } } + Future setFlashMode(FlashMode mode) async { + try { + await controller.setFlashMode(mode); + } on CameraException catch (e) { + _showCameraException(e); + rethrow; + } + } + Future _startVideoPlayer() async { final VideoPlayerController vController = VideoPlayerController.file(File(videoFile.path)); diff --git a/packages/camera/camera/ios/Classes/CameraPlugin.m b/packages/camera/camera/ios/Classes/CameraPlugin.m index 9455375b8524..cc70ddf209ce 100644 --- a/packages/camera/camera/ios/Classes/CameraPlugin.m +++ b/packages/camera/camera/ios/Classes/CameraPlugin.m @@ -114,6 +114,24 @@ - (UIImageOrientation)getImageRotation { } @end +static AVCaptureFlashMode getFlashModeForString(NSString *mode) { + if ([mode isEqualToString:@"off"]) { + return AVCaptureFlashModeOff; + } else if ([mode isEqualToString:@"auto"]) { + return AVCaptureFlashModeAuto; + } else if ([mode isEqualToString:@"always"]) { + return AVCaptureFlashModeOn; + } else { + NSError *error = [NSError errorWithDomain:NSCocoaErrorDomain + code:NSURLErrorUnknown + userInfo:@{ + NSLocalizedDescriptionKey : [NSString + stringWithFormat:@"Unknown flash mode %@", mode] + }]; + @throw error; + } +} + // Mirrors ResolutionPreset in camera.dart typedef enum { veryLow, @@ -181,6 +199,7 @@ @interface FLTCam : NSObject *)messenger { if (!_isStreamingImages) { FlutterEventChannel *eventChannel = @@ -910,6 +956,8 @@ - (void)handleMethodCallAsync:(FlutterMethodCall *)call result:(FlutterResult)re [_camera pauseVideoRecordingWithResult:result]; } else if ([@"resumeVideoRecording" isEqualToString:call.method]) { [_camera resumeVideoRecordingWithResult:result]; + } else if ([@"setFlashMode" isEqualToString:call.method]) { + [_camera setFlashModeWithResult:result mode:call.arguments[@"mode"]]; } else { result(FlutterMethodNotImplemented); } diff --git a/packages/camera/camera/lib/camera.dart b/packages/camera/camera/lib/camera.dart index 6c6d90b9bcee..6c6214e96951 100644 --- a/packages/camera/camera/lib/camera.dart +++ b/packages/camera/camera/lib/camera.dart @@ -11,5 +11,6 @@ export 'package:camera_platform_interface/camera_platform_interface.dart' CameraDescription, CameraException, CameraLensDirection, + FlashMode, ResolutionPreset, XFile; diff --git a/packages/camera/camera/lib/src/camera_controller.dart b/packages/camera/camera/lib/src/camera_controller.dart index fcf00245ce7f..2c2ce3b633f1 100644 --- a/packages/camera/camera/lib/src/camera_controller.dart +++ b/packages/camera/camera/lib/src/camera_controller.dart @@ -36,6 +36,7 @@ class CameraValue { this.isTakingPicture, this.isStreamingImages, bool isRecordingPaused, + this.flashMode, }) : _isRecordingPaused = isRecordingPaused; /// Creates a new camera controller state for an uninitialized controller. @@ -46,6 +47,7 @@ class CameraValue { isTakingPicture: false, isStreamingImages: false, isRecordingPaused: false, + flashMode: FlashMode.auto, ); /// True after [CameraController.initialize] has completed successfully. @@ -86,6 +88,9 @@ class CameraValue { /// When true [errorDescription] describes the error. bool get hasError => errorDescription != null; + /// The flash mode the camera is currently set to. + final FlashMode flashMode; + /// Creates a modified copy of the object. /// /// Explicitly specified fields get the specified value, all other fields get @@ -98,6 +103,7 @@ class CameraValue { String errorDescription, Size previewSize, bool isRecordingPaused, + FlashMode flashMode, }) { return CameraValue( isInitialized: isInitialized ?? this.isInitialized, @@ -107,6 +113,7 @@ class CameraValue { isTakingPicture: isTakingPicture ?? this.isTakingPicture, isStreamingImages: isStreamingImages ?? this.isStreamingImages, isRecordingPaused: isRecordingPaused ?? _isRecordingPaused, + flashMode: flashMode ?? this.flashMode, ); } @@ -117,7 +124,8 @@ class CameraValue { 'isInitialized: $isInitialized, ' 'errorDescription: $errorDescription, ' 'previewSize: $previewSize, ' - 'isStreamingImages: $isStreamingImages)'; + 'isStreamingImages: $isStreamingImages, ' + 'flashMode: $flashMode)'; } } @@ -468,6 +476,16 @@ class CameraController extends ValueNotifier { } } + /// Sets the flash mode for taking pictures. + Future setFlashMode(FlashMode mode) async { + try { + await CameraPlatform.instance.setFlashMode(_cameraId, mode); + value = value.copyWith(flashMode: mode); + } on PlatformException catch (e) { + throw CameraException(e.code, e.message); + } + } + /// Releases the resources of this camera. @override Future dispose() async { diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml index 3c3e0cea3565..3194fff33684 100644 --- a/packages/camera/camera/pubspec.yaml +++ b/packages/camera/camera/pubspec.yaml @@ -2,13 +2,13 @@ name: camera description: A Flutter plugin for getting information about and controlling the camera on Android and iOS. Supports previewing the camera feed, capturing images, capturing video, and streaming image buffers to dart. -version: 0.6.0+2 +version: 0.6.1 homepage: https://github.com/flutter/plugins/tree/master/packages/camera/camera dependencies: flutter: sdk: flutter - camera_platform_interface: ^1.0.0 + camera_platform_interface: ^1.0.4 dev_dependencies: path_provider: ^0.5.0 diff --git a/packages/camera/camera/test/camera_test.dart b/packages/camera/camera/test/camera_test.dart index b129849cd141..c19aa9718f47 100644 --- a/packages/camera/camera/test/camera_test.dart +++ b/packages/camera/camera/test/camera_test.dart @@ -310,6 +310,51 @@ void main() { 'startVideoRecording was called while a camera was streaming images.', ))); }); + + test('setFlashMode() calls $CameraPlatform', () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + await cameraController.setFlashMode(FlashMode.always); + + verify(CameraPlatform.instance + .setFlashMode(cameraController.cameraId, FlashMode.always)) + .called(1); + }); + + test('setFlashMode() throws $CameraException on $PlatformException', + () async { + CameraController cameraController = CameraController( + CameraDescription( + name: 'cam', + lensDirection: CameraLensDirection.back, + sensorOrientation: 90), + ResolutionPreset.max); + await cameraController.initialize(); + + when(CameraPlatform.instance + .setFlashMode(cameraController.cameraId, FlashMode.always)) + .thenThrow( + PlatformException( + code: 'TEST_ERROR', + message: 'This is a test error message', + details: null, + ), + ); + + expect( + cameraController.setFlashMode(FlashMode.always), + throwsA(isA().having( + (error) => error.description, + 'TEST_ERROR', + 'This is a test error message', + ))); + }); }); } diff --git a/packages/camera/camera/test/camera_value_test.dart b/packages/camera/camera/test/camera_value_test.dart index 28255eb0a568..06b327cb1c29 100644 --- a/packages/camera/camera/test/camera_value_test.dart +++ b/packages/camera/camera/test/camera_value_test.dart @@ -5,6 +5,7 @@ import 'dart:ui'; import 'package:camera/camera.dart'; +import 'package:camera_platform_interface/camera_platform_interface.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -19,6 +20,7 @@ void main() { isRecordingVideo: false, isTakingPicture: false, isStreamingImages: false, + flashMode: FlashMode.auto, ); expect(cameraValue, isA()); @@ -56,6 +58,7 @@ void main() { expect(cameraValue.isRecordingVideo, isFalse); expect(cameraValue.isTakingPicture, isFalse); expect(cameraValue.isStreamingImages, isFalse); + expect(cameraValue.flashMode, FlashMode.auto); }); test('Has aspectRatio after setting size', () { @@ -93,10 +96,11 @@ void main() { isRecordingVideo: false, isTakingPicture: false, isStreamingImages: false, + flashMode: FlashMode.auto, ); expect(cameraValue.toString(), - 'CameraValue(isRecordingVideo: false, isInitialized: false, errorDescription: null, previewSize: Size(10.0, 10.0), isStreamingImages: false)'); + 'CameraValue(isRecordingVideo: false, isInitialized: false, errorDescription: null, previewSize: Size(10.0, 10.0), isStreamingImages: false, flashMode: FlashMode.auto)'); }); }); }