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

[google_sign_in] Migrate to nnbd #3329

Merged
merged 7 commits into from Jan 15, 2021
Merged

[google_sign_in] Migrate to nnbd #3329

merged 7 commits into from Jan 15, 2021

Conversation

mehmetf
Copy link
Contributor

@mehmetf mehmetf commented Dec 14, 2020

Description

Migrate google_sign_in interface and the frontend to nnbd.

This is a draft PR. I have not migrated web and frontend seems to depend on it as such I suspect the pub resolution won't work.

Checklist

Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
  • All existing and new tests are passing.
  • I updated/added relevant documentation (doc comments with ///).
  • The analyzer (flutter analyze) does not report any problems on my PR.
  • I read and followed the Flutter Style Guide.
  • The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
  • I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
  • I updated CHANGELOG.md to add a description of the change.
  • I signed the CLA.
  • I am willing to follow-up on review comments in a timely manner.

Breaking Change

Does your PR require plugin users to manually update their apps to accommodate your change?

  • Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).

Copy link
Contributor

@cyanglaz cyanglaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are some places I think we can make things non-null. I assume we didn't want breaking changes so we made everything nullable? Also since it is already landed internally, we might want to make it in sync.

@blasten Are we ok to land this as is, and introduce a breaking change later?

@mehmetf
Copy link
Contributor Author

mehmetf commented Dec 17, 2020

@cyanglaz In the spirit of tightening things, I will push a change here that I pushed internally: Make id and email non-nullable. Do you agree with that?

@mehmetf
Copy link
Contributor Author

mehmetf commented Dec 17, 2020

Note that in the native implementations, all account parameters are nullable but in practice the plugin widely assumes that those two parameters define what an account is and as such they should be non-null.

@cyanglaz
Copy link
Contributor

@cyanglaz In the spirit of tightening things, I will push a change here that I pushed internally: Make id and email non-nullable. Do you agree with that?

Agreed

@mehmetf
Copy link
Contributor Author

mehmetf commented Dec 19, 2020

All comments have been implemented.

Copy link
Contributor

@cyanglaz cyanglaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! CI seems failing.

Future<void> init({
List<String> scopes = const <String>[],
SignInOption signInOption = SignInOption.standard,
String? hostedDomain,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just to confirm, hostedDomain is now nullable?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it has always been nullable. According to docs:

  /// The [hostedDomain] argument specifies a hosted domain restriction. By
  /// setting this, sign in will be restricted to accounts of the user in the
  /// specified domain. By default, the list of accounts will not be restricted.

The default is "do not restrict" which is null value.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

got it. I was confused by the @required annotation

@@ -5,23 +5,20 @@
import '../google_sign_in_platform_interface.dart';

/// Converts user data coming from native code into the proper platform interface type.
GoogleSignInUserData getUserDataFromMap(Map<String, dynamic> data) {
GoogleSignInUserData? getUserDataFromMap(Map<String, dynamic>? data) {
if (data == null) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should throw since it's used in an async chain

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did make that change for token data... I am less sure about user data. I did a sweep of the android/ios code and saw that they never return null user map but there's a test for it:

    test('can sign in after aborted flow', () async {
      responses['signIn'] = null;
      expect(await googleSignIn.signIn(), isNull);
      responses['signIn'] = kUserData;
      expect(await googleSignIn.signIn(), isNotNull);
    });

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

got it. Yeah, it seems tricky to change.

if (_lastMethodCall == null) {
response = _callMethod(method);
} else {
response = _lastMethodCall.then((_) {
response = _lastMethodCall!.then((_) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the analyzer able to detect the _lastMethodCall == null check earlier?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am a bit annoyed by this as well but I have seen it in many other places. My interpretation is that flow analysis only catches variables that are local to current scope. For instance:

void main() {
  String? foo;
  if (foo == null) {
    print('is null');
  } else {
    print(foo.length);
  }
}

is fine. However:

String? foo;

void main() {
  if (foo == null) {
    print('is null');
  } else {
    print(foo.length);
  }
}

is not. You need the bang operator.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, thanks. I learned something new. I wonder if @munificent has any thoughts about whether this is the intended design or a temporary limitation

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's an intended design but a known pain point that we'd like to improve if we can figure out how. The problem is that promoting fields isn't sound. In many cases, the compiler can't prove that there is not a class elsewhere that implements that class's interface and overrides with the field with a getter. Or there could be some re-entrant method call on the instance that changes the field's value between when it is checked for null and when it is later used.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah. that makes sense. The re-rentrant method call is interesting. Could that occur even if the method that is checking for null isn't async?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah. "Re-entrant" is maybe not the best word, but just consider any case between checking a field for null and accessing it where you could end up running other code on the same instance. This is contrived, but should give you the idea:

class Foo {
  int? field;

  method(Foo someFoo) {
    if (field != null) {
      someFoo.other();
      print(field + 1);
    }
  }

  other() {
    field = null;
  }
}

main() {
  var foo = Foo();
  foo.method(foo);
}

return channel
.invokeMapMethod<String, dynamic>('signIn')
.then(getUserDataFromMap);
}

@override
Future<GoogleSignInTokenData> getTokens(
{String email, bool shouldRecoverAuth = true}) {
{required String email, bool? shouldRecoverAuth = true}) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldRecoverAuth has a default, can it also accept null?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The interface does not define a default. Should it?

Future<GoogleSignInTokenData> getTokens(
      {required String email, bool? shouldRecoverAuth}) async {
    throw UnimplementedError('getTokens() has not been implemented.');
  }

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it. It looks like null is trying to workaround the fact that not all implementations of the interface need this field.

Copy link

@blasten blasten left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@mehmetf
Copy link
Contributor Author

mehmetf commented Jan 8, 2021

Thanks! I am going to resolve the conflicts and submit this. I will then publish the interface and then the main package as null-safe.

@mehmetf
Copy link
Contributor Author

mehmetf commented Jan 9, 2021

I am not able to submit this because there's a problem resolving dependencies.

Because mockito >=4.1.2 depends on code_builder ^3.4.0 which depends on built_value ^7.0.0, mockito >=4.1.2 requires built_value ^7.0.0.
And because built_value >=5.5.5 <8.0.0-nullsafety.0 depends on quiver >=0.21.0 <3.0.0, mockito >=4.1.2 requires quiver >=0.21.0 <3.0.0.
So, because google_sign_in_platform_interface depends on both quiver ^3.0.0-nullsafety.2 and mockito ^5.0.0-nullsafety.1, version solving failed.

I think the mockito dependencies are wrong since it transitively depends on a non-null-safe version of built_value. Or built_value version restrictions are too tight (on quiver).

The proper fix doesn't seem to be in the pubspec of this package but somewhere downstream. @blasten @davidmorgan

@davidmorgan
Copy link

mockito, code_builder and built_value_generator are not yet published for null safety; there's a circular dependency between built_value_generator and build_runner which makes it harder than usual.

We just updated the ranges in build_runner dart-lang/build@0eab40e next step is code_builder ... next step is code_builder, dart-lang/code_builder#306 then it should be possible to publish built_value_generator and mockito.

# 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
google_sign_in_web: ^0.9.1
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This pubspec is declaring a 'default_package: google_sign_in_web' for the 'web' platform (line 16), however it's removing the dependency on the web package here. I don't think this'll work for web users. This should be documented in the CHANGELOG.md entry.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We had discussed this somewhere in this PR and decided to remove the default package. I am not familiar with how that needs to be executed upstream. Could you please help with that David?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not really sure if this is used on-demand or validated somehow; I think the web endorsement should be removed (otherwise we're cheating pub.dev into reporting "web" support for the null-safe version, which is not true)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tracking here: flutter/flutter#72239

yasargil added a commit to yasargil/plugins that referenced this pull request Jan 21, 2021
* master: (114 commits)
  Windows nullsafety prep (flutter#3442)
  Add Labeler Github Action (flutter#3433)
  combine release messages and versions (flutter#3435)
  [plugin_platform_interface] Use Mockito nnbd (flutter#3437)
  [google_sign_in, url_launcher] Document unendorsement of web. (flutter#3436)
  [google_maps_flutter_web] Support for Holes in Polygons (flutter#3412)
  [script] Update build_all_plugins_app to exclude some plugins in `master`. (flutter#3432)
  [google_sign_in] Migrate to nnbd (flutter#3329)
  [local_auth] Allow device authentication (pin/pattern/passcode) (flutter#2489)
  [file_selector_platform_interface] Bump the cross_file version (flutter#3422)
  [camera] Fixes crash when taking a picture on iOS devices without flash (flutter#3411)
  fix to properly place polyline at initial camera position in example app (flutter#2941)
  [camera] Copy zoom settings from preview to final capture builder on Android (flutter#3413)
  [camera] Fixes crash with using inner camera on some Android devices. (flutter#3419)
  [camera] Fix initialization error in camera example on iOS (flutter#3406)
  [camera] Fix picture capture causing a crash on some Huawei devices. (flutter#3414)
  [file_selector_web] Add dummy ios directory. (flutter#3416)
  [google_maps_flutter] Adds support for holes in polygon overlays to the Google Maps plugin (flutter#1721)
  [camera] Implemented capture orientation locking. Fixed preview rotation issues. Fixed video and photo orientation upon save. (flutter#3390)
  [file_selector_web] Add initial implementation (flutter#3141)
  ...
adsonpleal pushed a commit to nubank/plugins that referenced this pull request Feb 26, 2021
tomykho pushed a commit to tomykho/flutter_plugins that referenced this pull request Mar 8, 2021
* [image_picker] use LocalizedString to fix lint error. (flutter#3349)

* [connectivity] Clear networkCallback object as soon as stream is cancelled (flutter#3303)

Set networkCallback back to null when event stream is cancelled

* [local_auth] Update README for Android Integration (flutter#3348)

* Fix outdated links across a number of markdown files (flutter#3276)

* [camera] Flash functionality for Android and iOS (flutter#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 <maurits@vnbskm.nl>

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

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

* 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 <maurits@vnbskm.nl>

* Update packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart

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

* Update packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart

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

* 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 <maurits@baseflow.com>
Co-authored-by: Maurits van Beusekom <maurits@vnbskm.nl>
Co-authored-by: daniel <daniel.roek@gmail.com>

* Add implementation of didFinishProcessingPhoto callback (flutter#3337)

* [camera] Zoom functionality for Android and iOS (flutter#3315)

* Refactored and tested zoom on Android

* Fix merge conflict

* Fix test exclusion logic for nnbd plugins (flutter#3342)

* [video_player] Fix video player test (flutter#3361)

* [image_picker] Do not copy a static field into another static field (flutter#3353)

* [url_launcher] forceSafariVC should be nullable to avoid breaking change (flutter#3354)

* Fix documentation (flutter#3362)

* Make sure saveTo returns a Future (flutter#3363)

* add check for duration is CMTIME_IS_INDEFINITE

* updated changelog and version

* [camera] Add implementations for the torch flash mode. (flutter#3338)

* Added torch mode functionality for Android and iOS.

* Format objective c code

* [camera] Fix flash/torch not working on some Android devices. (flutter#3367)

* Wait pre capture to finish

* Add autofocus stage to capture

* Fixed autofocus stage

* Make sure torch is turned off

* Format & structure improvements

* Update changelog and pubspec

* Update packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java

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

* Update packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/PictureCaptureRequest.java

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

* Update packages/camera/camera/CHANGELOG.md

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

* Update packages/camera/camera/pubspec.yaml

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

* Remove unnecessary import.

* Updated unit tests

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

* [camera] Fix video recording exception on Android (flutter#3375)

* Fixed video recording

* Update changelog and pubspec version

* Update packages/camera/camera/CHANGELOG.md

Co-authored-by: Maurits van Beusekom <maurits@baseflow.com>

Co-authored-by: Maurits van Beusekom <maurits@baseflow.com>

* [camera] Added maxVideoDuration to startVideoRecording (flutter#3365)

* Added maxVideoDuration to startVideoRecording

* updated documentation

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

* updated documentation

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

* Fixed long line in docs

* Formatting

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

* [camera_platform_interface] Add platform interface methods for setting auto exposure. (flutter#3345)

* Added platform interface methods for setting auto exposure.

* Added platform interface methods for setting auto exposure.

* Remove workspace files

* Update camera_platform_interface to 1.2.0 (flutter#3376)

* Change platform interface dependency (flutter#3377)

* [camera] Add iOS and Android implementations for managing auto exposure. (flutter#3346)

* Added platform interface methods for setting auto exposure.

* Added platform interface methods for setting auto exposure.

* Remove workspace files

* Added auto exposure implementations for Android and iOS

* iOS fix for setting the exposure point

* Removed unnecessary check

* Update platform interface dependency

* Implement PR feedback

* Restore test

* Small improvements for exposure point resetting

* Added closeCaptureSession() to stopVideoRecording in Camera.java to fix an Android 6 crash (flutter#3336)

Co-authored-by: Maurits van Beusekom <maurits@baseflow.com>

* [camera_platform_interface] Added imageFormatGroup to initialize (flutter#3364)

* Added imageFormatGroup to initialize

* Apply suggestions from code review

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

* Added period to sentence

* Moved ImageFormatGroup to platform_interface; Added extension to convert ImageFormatGroup to name; Changed int to ImageFormatGroup for initializeCamera

* Fixed test

* Separated Android and iOS in name extension

* Clarified returns on name extension

* Export image_format_group.dart in types.dart

* Changed enum values to lowercase

* Added ImageFormatGroup test

* Fixed formatting

* Removed target platform switch.

* Fixed formatting

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

* [camera] Fixed stale images in imageStream subscriptions (flutter#3344)

* Fixed stale images in imageStream subscriptions

* Implemented feedback

* Fixed format exception

* added null-check for imageStreamReader

* Removed setOnImageAvailableListener from onCancel

* fixed formatting

* [camera] disable auto focus when using front facing camera on Android (flutter#3383)

* Refactured Camera and fix issue front facing camera

* Update FPS range on Android to have correct brightness

* Formatted files

* Fix version conflict

* [camera_platform_interface] Add platform interface methods for setting auto focus. (flutter#3369)

* Added platform interface methods for setting auto exposure.

* Added platform interface methods for setting auto exposure.

* Remove workspace files

* Added auto exposure implementations for Android and iOS

* Added platform interface methods for managing auto focus.

* Formatted code

* Export focus mode

* Update platform interface for changes to autofocus methods

* Revert "Update platform interface for changes to autofocus methods"

This reverts commit bdeed1d.

* iOS fix for setting the exposure point

* Removed unnecessary check

* Updated changelog and pubspec.yaml

* Update platform interface dependency

* Implement PR feedback

* Restore test

* Revert test change

* Update camera pubspec

* Update platform interface to prevent breaking changes with current master

Co-authored-by: Maurits van Beusekom <maurits@baseflow.com>

* [camera_platform_interface] Add platform interface methods for locking capture orientation. (flutter#3389)

* Expand platform interface to support reporting device orientation

* Switch to flutter DeviceOrientation enum

* Add interface methods for (un)locking the capture orientation.

* Update capture orientation interfaces and add unit tests.

* Made device orientation mandatory for locking capture orientation in the platform interface.

* Update comment

* Update comment.

* Update changelog and pubspec version

* Update packages/camera/camera_platform_interface/lib/src/events/device_event.dart

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

* Update packages/camera/camera_platform_interface/lib/src/events/device_event.dart

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

* Update packages/camera/camera_platform_interface/lib/src/events/device_event.dart

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

* Update packages/camera/camera_platform_interface/lib/src/events/device_event.dart

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

* Update packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart

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

* Update packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart

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

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

* [camera] set useAutoFocus to true by default (flutter#3396)

* set useAutoFocus to true by default

there's no way to set useAutoFocus to `true` and it is `false` by default so the auto focus is not working.

* Update pubspec.yaml

* Update CHANGELOG.md

* [image_picker] Update README.md  (flutter#3098)

* [in_app_purchase] Added serviceTimeout code (flutter#3287)

* Update obsolete button refs in plugin examples (flutter#3395)

* Update packages/video_player/video_player/ios/Classes/FLTVideoPlayerPlugin.m

* Update pubspec version

* fix version (flutter#3399)

* Ignore deprecated_member_use analysis lint (flutter#3400)

* [battery] Migrate battery_plugin_interface to null safety (flutter#3366)

* Sync the PR template to the new style (flutter#3397)

* [camera] Implemented ImageStream ImageFormat setting for Dart and Android (flutter#3359)

* Implemented ImageStream ImageFormat setting for Dart and Android

* Fixed formatting and toString test

* Apply suggestions from code review

* Removed imageStreamImageFormat from CameraValue

* Removed imageStreamImageFormat from CameraValue

* Removed imageStreamImageFormat from CameraValue

* fixed formatting

* fixed formatting

* fixed formatting

* WIP: iOS implementation

* Imaplemented suggested changes, added tests.

* iOS switch case videoFormat

* Added imageFormatGroup to initialize

* Apply suggestions from code review

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

* Added period to sentence

* Moved ImageFormatGroup to platform_interface; Added extension to convert ImageFormatGroup to name; Changed int to ImageFormatGroup for initializeCamera

* Fixed test

* Separated Android and iOS in name extension

* Clarified returns on name extension

* updated Android implementation to support String output

* removed getOrDefault

* Updated camera implementation to use ImageFormatGroupName; Updated to Dart 2.7.0 to support extensions;

* removed unused import

* Export image_format_group.dart in types.dart

* Changed enum values to lowercase

* Added ImageFormatGroup test

* Fixed formatting

* made enum strings lowercase

* Removed target platform switch.

* Fixed formatting

* Updated Android implementation

* Updated iOS implementation

* updated log message for unsupported ImageFormatGroup

* Updated Android implementation

* fixed period in docs

* Switch change to if-statement

* Moved switching videoFormat to method in iOS

* Implemented feedback

* fixed formatting

* fixed mistakingly removed bracket

* fixed formatting

* Updated version

* Updated version

* fixed formatting

* Define TAG correctly

Co-authored-by: anniek <anniekvalk@gmail.com>
Co-authored-by: Maurits van Beusekom <maurits@vnbskm.nl>
Co-authored-by: Maurits van Beusekom <maurits@baseflow.com>

* [camera] Add iOS and Android implementations for managing auto focus. (flutter#3370)

* Added platform interface methods for setting auto exposure.

* Added platform interface methods for setting auto exposure.

* Remove workspace files

* Added auto exposure implementations for Android and iOS

* Added platform interface methods for managing auto focus.

* Formatted code

* Export focus mode

* Add Android and iOS implementations (WIP)

* Update platform interface for changes to autofocus methods

* WIP

* Revert "Update platform interface for changes to autofocus methods"

This reverts commit bdeed1d.

* Finish android implementation

* Fix iOS implementation

* iOS fix for setting the exposure point

* Removed unnecessary check

* Updated changelog and pubspec.yaml

* Updated changelog and pubspec.yaml

* Update platform interface dependency

* Implement PR feedback

* Restore test

* Revert test change

* Update camera pubspec

* Update platform interface to prevent breaking changes with current master

* Update test to match platform interface updates

* Code format

* Fixed compilation error

* Fix formatting

* Add missing license headers to java source files.

* Update platform interface dependency

* Change fps range determination

* Fix analysis warnings

Co-authored-by: Maurits van Beusekom <maurits@baseflow.com>

* [google_maps_flutter_platform_interface] Adds support for holes in polygon overlays to the Google Maps plugin (flutter#3135)

* [video_player] Migrate deprecated api (flutter#3409)

* [battery] Migrate battery to null safety (flutter#3380)

* [file_selector_web] Add initial implementation (flutter#3141)

Add the file_selector web implementation

* [camera] Implemented capture orientation locking. Fixed preview rotation issues. Fixed video and photo orientation upon save. (flutter#3390)

* [google_maps_flutter] Adds support for holes in polygon overlays to the Google Maps plugin (flutter#1721)

* [file_selector_web] Add dummy ios directory. (flutter#3416)

This is required so the plugin is publishable.

* [camera] Fix picture capture causing a crash on some Huawei devices. (flutter#3414)

* [camera] Fix initialization error in camera example on iOS (flutter#3406)

* Fix error on first camera initialize in example app

* Improved error handling a bit & updated tests.

* Updated pubspec and changelog

Co-authored-by: Maurits van Beusekom <maurits@baseflow.com>

* [camera] Fixes crash with using inner camera on some Android devices. (flutter#3419)

* [camera] Copy zoom settings from preview to final capture builder on Android (flutter#3413)

* Copy SCALER_CROP_REGION from preview to final capture builder

* Update version number

* Fix formatting

* fix to properly place polyline at initial camera position in example app (flutter#2941)

* [camera] Fixes crash when taking a picture on iOS devices without flash (flutter#3411)

* [file_selector_platform_interface] Bump the cross_file version (flutter#3422)

* [local_auth] Allow device authentication (pin/pattern/passcode) (flutter#2489)

* [google_sign_in] Migrate to nnbd (flutter#3329)

* [script] Update build_all_plugins_app to exclude some plugins in `master`. (flutter#3432)

* [google_maps_flutter_web] Support for Holes in Polygons (flutter#3412)

* [google_sign_in, url_launcher] Document unendorsement of web. (flutter#3436)

Add some documentation to the CHANGELOGs to mention that null-safety is still not supported by web plugins, so they're being un-endorsed.

* [plugin_platform_interface] Use Mockito nnbd (flutter#3437)

* combine release messages and versions (flutter#3435)

* Add Labeler Github Action (flutter#3433)

* Update pubspec version

* Windows nullsafety prep (flutter#3442)

shared_preferences_windows depends on path_provider_windows, and both
use 'ffi'. This relaxes the 'ffi' version constraint on
shared_preferences_windows to allow path_provider_windows to be migrated
to null-safety (which requires updating to the nullsafe version of ffi).

Part of flutter/flutter#70229

* [path_provider] Migrate path_provider_windows to nullsafety (flutter#3410)

Migrates path_provider_windows to null-safety.

Part of flutter/flutter#70229

* [camera] Ensure that channel.invokeMethod runs on the main thread (flutter#3444)

* [google_maps_flutter_web] Reverse Hole winding when needed (flutter#3440)

The Web Version needs the holes in a polygon to be defined in the opposite direction to their parent polygon.

This change automatically reverses the definition of a hole, when needed.

In debug mode, it'll let the user know that the holes need to be wound differently.

Co-authored-by: Anton Borries <anton.borries@2denker.de>

* [google_maps_flutter_platform_interface] add custom tile support (flutter#3418)

* [google_maps_flutter_platform_interface] Fixes for custom tiles (flutter#3449)

* [ci][image_picker]enable xcode 12/iOS 14 for all tasks except lint (flutter#3304)

* Revert "[ci][image_picker]enable xcode 12/iOS 14 for all tasks except lint (flutter#3304)" (flutter#3459)

This reverts commit 712dcc1.

* bump vmservice (flutter#3463)

* [cross_file] Use Uri when calling package:http methods (flutter#3462)

The next version of package:http expects URIs. See dart-lang/http#507

* [path_provider] drop uuid (flutter#3465)

* [cross_file] Migrate to null-safety. (flutter#3452)

Also: skip some packages from the all_plugins app so CI passes.

* [image_picker_platform_interface] fix test asset file location (flutter#3467)

* Revert "[cross_file] Migrate to null-safety. (flutter#3452)" (flutter#3468)

This reverts commit ca99211.

* Reland "[cross_file] Migrate to null-safety. (flutter#3452)" (flutter#3469)

This reverts commit 4aacf97.

* refactor FLTCMTimeToMillis

* update changlog description

* added test

* [ci] fix ci failure on ios builds (flutter#3470)

* [package_info] Register IntegrationTestPlugin in the example app. (flutter#3478)

This change registers the IntegrationTestPlugin in the example app, so test results are correctly reported back to FTL.

The end-to-end firebase tests for package_info haven't passed in a while (nor have been reported as broken before), but after this change, they start passing again.

* [integration_test] Fix tests from changes to `flutter test` machine output (flutter#3480)

* [url_launcher] Update description in pubspec.yaml (flutter#2858)

* [ci][image_picker][webviews_flutter] enable Xcode 12  (flutter#3461)

* [url_launcher_web] Fix Link misalignment issue (flutter#3476)

The Link widget builds a Stack on the web. The Stack by default loosens the constraints passed by the parent. This is what was causing the misalignment.

In order to fix it, we just need to pass fit: StackFit.passthrough to the Stack.

* Remove amirh from CODEOWNERS (flutter#3484)

* [local_auth] Fix incorrect switch fallthrough (flutter#3473)

* [path_provider_windows] Resolve FFI stabilization changes (flutter#3485)

Ensures that path_provider_windows works on current null safety builds.

* Remove Dart stubs from macOS plugins (flutter#3491)

When these federated plugins were created, plugins had to have at least
one Dart file to avoid issues with the analyzer, so were created with a
stub file since all the code is native. The analyzer no longer has this
limitation, so the stub is no longer necesssary.

* Migrate shared_preferences_platform_interfaces to null safety (flutter#3466)

* Automatically add platform labels (flutter#3487)

Tags PRs with platform-* labels based on the platform(s) being edited.
This will allow filtering open PRs by OS (e.g., to allow someone
focusing on a single platform's plugin implementations to easily find
all relevant PRs).

* Add plugin issue query to README (flutter#3493)

* [camera] Fix example reference in camera's doc (flutter#3472)

* Revert compileSdkVersion to 29 (flutter#3496)

* Remove cyanglaz from some package code owners (flutter#3495)

* Run pub global activate before pub global run (flutter#3502)

* Run activate before run (flutter#3506)

* [path_provider] Update macOS for NNBD (flutter#3498)

macOS federated plugin implementations that contain no Dart code just
need their Dart SDK bumped in order to be considered nullsafe.

* [path_provider_linux] Migrate to null safety (flutter#3330)

* fix google_maps_flutter_platform_interface version (flutter#3500)

* [google_maps_flutter] add tile overlays (flutter#3434)

* Merge upcoming camera updates (flutter#3501)

* [shared_preferences] Update macOS for NNBD (flutter#3505)

macOS federated plugin implementations that contain no Dart code just
need their Dart SDK bumped in order to be considered nullsafe.

* Clean up CODEOWNERS (flutter#3438)

* update versino (flutter#3512)

* Add a note about Plus plugins to CONTRIBUTING.md (flutter#3511)

Adds a prominent note to CONTRIBUTING.md about the new policy regarding PRs for plugins for which there is a Flutter Community Plus Plugins equivalent.

* [in_app_purchases] Remove TypeMatcher reference (flutter#3494)

* Remove stray dependency (flutter#3515)

* [image_picker_platform_interface] migrate to nnbd  (flutter#3492)

* [package_info] Migrate to null safety (flutter#3398)

* Migrate path_provider to null safety. (flutter#3460)

* Update to ffi 0.3.0-nullsafety.1 (flutter#3513)

ffi 0.3.0 supports the new memory allocation model in Dart 2.12.0-259 and later.

* [wifi_info_flutter] Check Permissions in Android O or higher (flutter#3234)

* Check Permissions

* Format

* Update packages/wifi_info_flutter/wifi_info_flutter/android/src/main/java/io/flutter/plugins/wifi_info_flutter/WifiInfoFlutter.java

Co-authored-by: Maurice Parrish <bmparr@google.com>

* Update packages/wifi_info_flutter/wifi_info_flutter/android/src/main/java/io/flutter/plugins/wifi_info_flutter/WifiInfoFlutter.java

Co-authored-by: Maurice Parrish <bmparr@google.com>

* Update packages/wifi_info_flutter/wifi_info_flutter/android/src/main/java/io/flutter/plugins/wifi_info_flutter/WifiInfoFlutter.java

Co-authored-by: Maurice Parrish <bmparr@google.com>

* Update packages/wifi_info_flutter/wifi_info_flutter/android/src/main/java/io/flutter/plugins/wifi_info_flutter/WifiInfoFlutter.java

Co-authored-by: Maurice Parrish <bmparr@google.com>

* Update packages/wifi_info_flutter/wifi_info_flutter/android/src/main/java/io/flutter/plugins/wifi_info_flutter/WifiInfoFlutter.java

Co-authored-by: Maurice Parrish <bmparr@google.com>

* Update packages/wifi_info_flutter/wifi_info_flutter/android/src/main/java/io/flutter/plugins/wifi_info_flutter/WifiInfoFlutter.java

Co-authored-by: Maurice Parrish <bmparr@google.com>

* Update packages/wifi_info_flutter/wifi_info_flutter/android/src/main/java/io/flutter/plugins/wifi_info_flutter/WifiInfoFlutter.java

Co-authored-by: Maurice Parrish <bmparr@google.com>

* Update packages/wifi_info_flutter/wifi_info_flutter/android/src/main/java/io/flutter/plugins/wifi_info_flutter/WifiInfoFlutter.java

Co-authored-by: Maurice Parrish <bmparr@google.com>

Co-authored-by: Maurice Parrish <bmparr@google.com>

* [camera_platform_interface] Added stopRecordingVideo (flutter#3518)

* Added stopRecordingVideo

* Removed deprecation and made stopRecordingVideo return void

* Removed unused import

* Revert pubspec change

* Updated documentation

* removed stopRecordingVideo

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

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

* fixed formatting

* Remove coverage folders

* Updated documentation

* updated version

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

* [camera] Clockwise rotation of focus point in android (flutter#3458)

* [shared_preferences_windows]-Migrate to null safety (flutter#3516)

Migrate shared_preferences_windows to null safety

* [image_picker] Migrate to null-safety (flutter#3524)

Migrate image_picker to null-safety

* [file_selector_platform_interface] File selector nnbd (flutter#3509)

Migrating file_selector_interface to null-safety

* [shared_preferences] Migrate platform plugins to null-safety (flutter#3523)

Migrates shared_preferences_linux and shared_preferences_web to null-safety.

* [camera_platform_interface] Migrate to null safety (flutter#3497)

* [ios_platform_images] Migrate to null safety (flutter#3381)

* [file_selector_web] Fix typo in pubspec. (flutter#3528)

(Introduced by mistake in flutter#3509)

* [sensors] Migrate to null safety (flutter#3423)

* [quick_actions] Migrate to null safety (flutter#3421)

* [video_player]: Fix texture unregistration callback signature

Flutter's video plugin can cause crashes after a closing a flutter view on simulator model iPhone X or higher

Co-authored-by: Mike Diarmid <mike.diarmid@gmail.com>

* [wifi_info_flutter] Migrate the platform interface to null safety (flutter#3424)

* [url_launcher] Fix PlatformException introduced in nnbd release (flutter#3333)

* Add section about how to use Material components in an app using WebView (flutter#3521)

* Add plugin tools as a git submodule and depend on it directly (flutter#3527)

* [shared_preferences] Migrate main package to null-safety (flutter#3526)

Migrates shared_preferences to nnbd.

Fixes flutter/flutter#74876.

Note: also recreated the android and macos example applications because the macOS app was apparently a copy of the connectivity app and had connectivity_example as its name, the Android app was using the embedding v1.

* Update video_player_platform_interface to latest pigeon (flutter#3507)

See flutter#3281 for context.

* [share] Update README.md (flutter#3300)

* Update README.md

I just tried to update the links. The old links worked too but redirected to the current links. I just had the idea to put the current links directly.

https://pub.dartlang.org/packages/share to https://pub.dev/packages/share/

and
https://flutter.io/platform-plugins/ to https://flutter.dev/docs/development/packages-and-plugins/using-packages

* Update pubspec.yaml

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md

Co-authored-by: stuartmorgan <stuartmorgan@google.com>

* Removed obsolete example folder from camera root (flutter#3503)

* [camera_platform_interface] Migrate to null safety (flutter#3530)

* Migrate camera_platform_interface to null safety

* Added camera to the NNBD plugin list

* Correct version number

* Convert optional parameters to required for CameraInitializationEvent

* Convert CameraId in test to non-nullable

* Test for null instead of enforcing non-null

* Attempt to fix dependency problem building all plugins

* Mark google_maps_flutter as NNBD

* Depend on correct Dart SDK version

* Attempt to fix dependency problem building all plugins

* Attempt to fix dependency problem building all plugins

* Attempt to fix dependency problem building all plugins

* Attempt to fix dependency problem building all plugins

* Add camera_platform_interface to exclude list

* Exclude camera from nnbd and non-nnbd

* Remove mockito dependency

* Make sure enableAudio is default false

* Include left-hand type definition

* Removed unused import statement

* Update pubspecs (flutter#3534)

* add post merge labeler (flutter#3532)

* [wifi_info_flutter] Migrate to null safety (flutter#3425)

* Bump ffi dependencies (flutter#3540)

* Update to FFI 1.0

* Bump CHANGELOG

* Added comment about path depenendencies (flutter#3542)

* [android_alarm_manager] Migrated android_alarm_manager to support null safety #75233 (flutter#3499)

Migrated android_alarm_manager to support null safety.

Fixes flutter/flutter#75233

* Move plugin tools code (flutter#3544)

* [image_picker_web] Migrate to null-safety (flutter#3535)

* Honor, and scrub, the 1.0 compatibility promise (flutter#3545)

* Update video_player_web to point to new video_player_interface (flutter#3536)

* [google_maps_flutter] Migrate platform interface to null safety (flutter#3539)

Part of flutter/flutter#75236

Includes a significant refactor of the various overlay objects to remove a lot of identical code across the objects.

* Enable CI tests on beta (flutter#3538)

* [camera] Fixes crash on takePicture() (flutter#3537)

* Fixes #75133

* Updated pubspec.yaml and change log

* Fix format

* [camera] NNBD migration of the camera plugin (flutter#3533)

* Migrate camera_platform_interface to null safety

* Exclude camera_platform_interface from all plugins script

* Convert CameraId in test to non-nullable

* Migrate to nullsafety

* Attempt to fix dependency problem building all plugins

* Update version information

* Fix type

* Make exposureMode and focusMode non-nullable

* Mark google_maps_flutter as non-NNBD

* Update dependencies

* Added missing entry to CHANGELOG.md

* Rebased on master

* Fix the build-all exclusion list (flutter#3552)

build_all_plugins_app.sh contains an exclusion list, which currently contains almost all of the non-app-facing plugins. However, the script those exclusions are passed to expects federated plugin exclusions to be of the form plugin_name/plugin_name_subplugin_name, not just plugin_name_subplugin_name, so in practice almost nothing on that list has actually been doing anything.

This fixes the script to allow either mode of exclusion (since clearly people expect using just the name to work), and scrubs everything from the list that clearly wasn't actually needed.

* [path_provider] Update Windows implementation version (flutter#3541)

* [google_maps_flutter] Fix CameraPosition regression (flutter#3547)

The nullability conversion added a type check when recreating a
CameraPosition from JSON that was too restrictive, and regressed the
app-facing package. This relaxes that assertion, and adds a test to
catch the issue.

* [url_launcher_web] Migrate to null-safety (flutter#3522)

This version uses auto-generated Mocks from mockito5 for its tests.

For now, tests only run in the `master` channel.

Co-authored-by: Maurits van Beusekom <maurits@baseflow.com>

* [file_selector_web] update documentation #76067 (flutter#3554)

Fix documentation typo. This package is file_selector, not file_picker!

Co-authored-by: David Iglesias <ditman@gmail.com>

* Remove iOS stubs (flutter#3490)

Plugins that don't actually support iOS are no longer required to have
an iOS stub to prevent build failures. This removes all iOS stubs from
plugins that don't support iOS.

* [url_launcher] Re-endorse web implementation. (flutter#3557)

This change re-endorses url_launcher_web, now that it's been migrated to null-safety.

* Document how to use pigeon and update to the latest version. (flutter#3281)

* Publish check (flutter#3556)

* Update video_player readme to change sample video to https (flutter#3546)

* [camera] Added timeout to Android pre-capture sequence (flutter#3558)

* Added timeout for waiting pre-capture state Android

* Fix analysis warning and bumped version

* Publish check ignores prerelease sdk (flutter#3560)

* Migrate plugin_platform_interface to v2 stable, null-safe (flutter#3543)

* [shared_preferences] fix crash when list type is dynaimc (flutter#3565)

* [webview_flutter] Support for loading progress tracking (flutter#2151)

* [shared_preferences] Migrate examples to NNBD (flutter#3564)

Migrate all examples to NNBD so that the example apps will run in strong mode.

Converts macOS example to use the platform interface to remove circular dependencies (code is based on the Linux and Windows versions which already use essentially that approach).

* [video_player_web] Ignore mixWithOthers option (flutter#3561)

The documentation is updated to note this option will be silently
ignored in web.

Signed-off-by: Leandro Lucarella <luca@llucax.com>

* [path_provider] Migrate examples to null-safety (flutter#3559)

Allows running the examples in strong mode, even though the integration tests can't yet be.

Converts the macOS example to use the platform interface, rather than the app-facing package, to eliminate the circular dependency. Also does some cleanup and simplification of the desktop example pubspecs.

Does not update versions/changelogs since this won't be explicitly published, given that it's example-only.

* [image_picker_for_web] Add doc comments to point out that some arguments aren't supported on the web (flutter#3566)

Re-landing a PR that @ditman messed up!

flutter#3566

Co-authored-by: Jens Becker <jensbecker01@gmx.de>
Co-authored-by: Chris Yang <ychris@google.com>

* [google_maps_flutter] Migrate to NNBD (flutter#3548)

Migrates the full plugin to null safety.

* [url_launcher] Bump platform interface package to stable NNBD (flutter#3570)

Also enables null safety for the unit tests, which had been opted out.

* [in_app_purchase]  Migrate to NNBD (flutter#3555)

* [path_provider] Bump platform interface package to stable NNBD (flutter#3568)

* [flutter_plugin_android_lifecycle] Bump version for NNBD stable (flutter#3569)

* [package_info] Bump version for NNBD stable (flutter#3571)

Includes:
- Migrating the example to NNBD
- Bullet-proofing against null values from the native code; at least the ObjC code can theoretically return nulls.

* [image_picker_platform_interface] Bump NNBD version to stable (flutter#3573)

* [flutter_plugin_android_lifecycle-sdk] Update Flutter SDK constraint

* [path_provider] Bump platform packages to NNBD stable (flutter#3575)

Makes all platform packages stable null-safe releases.

* [image_picker] use nnbd version of deps to resolve ci failure (flutter#3580)

* [image_picker] NNBD stable (flutter#3579)

* [url_launcher] Fix SDK copypasta (flutter#3583)

The lower end of the SDK range was wrong due to a bad copy/paste.

* [camera] Solves delay when using the zoom feature on iOS. (flutter#3562)

* migrate connectivity platform interface to stable (flutter#3585)

* [shared_preferences] Bump version for NNBD stable (flutter#3586)

* [battery] Bump platform version to NNBD stable (flutter#3587)

* [sensors] Update to NNBD stable (flutter#3589)

Includes migrating example to null-safety.

* [connectivity_macos] move NNBD to stable (flutter#3588)

* [cross_file] Stable null safety release (flutter#3593)

* [shared_preferences] Bump platform versions to NNBD stable (flutter#3595)

* [url_launcher] Update platforms to NNBD stable (flutter#3584)

Updates all versions to stable.

Converts all desktop examples to null-safety, and migrates Linux and
macOS to use platform interface for examples rather than app-facing
package to eliminate circular dependencies (implementation copied
directly from Windows).

* [battery] Bump version for NNBD stable (flutter#3594)

Also replaces Mockito with test/Fake since the usage is a simple fake.

* [path_provider] Update to stable NNBD (flutter#3582)

Bumps the versions in the app-facing package to make it stable NNBD.

Changes the interface of four core methods to non-nullable, and adds a new exceptions if they aren't provided by the platform implementations. The list is somewhat arbitrary, but these seem like the four that are core enough that any implementation should either provide them, or explicitly say they don't have such a concept via UnsupportedError, since there isn't an obvious way for a developer to fall back if they are unexpectedly missing.

* [connectivity_macos] fix version (flutter#3599)

* [google_maps_flutter] Bump platform interface version for NNBD stable (flutter#3598)

* [device_info_platform_interface] null safety stable release (flutter#3597)

* [share] Bump version for NNBD stable (flutter#3600)

* [android_intent] Bump version for NNBD stable (flutter#3601)

* [shared_preferences] Bump app-facing version for NNBD stable (flutter#3602)

* [connectivity_macos] fix flutter version constraint (flutter#3604)

* [url_launcher] Bump app-facing version for NNBD stable (flutter#3603)

* [android_intent] Fix Flutter SDK version (flutter#3607)

* [file_selector_platform_interface] null safety stable release (flutter#3605)

* [connectivity] null safety stable release (flutter#3596)

* [video_player_platform_interface] Bump version for NNBD stable (flutter#3578)

* [android_alarm_manager] Bump version for NNBD stable (flutter#3608)

* [local_auth] Bump version for NNBD stable (flutter#3615)

* quick action stable (flutter#3618)

* [ios_platform_images] Bump version for stable NNBD (flutter#3616)

* [espresso] Update SDK requirement for null-safety (flutter#3614)

* [google_maps_flutter] fixed a small bug in example app. (flutter#3590)

in _onMarkerTapped function we were changing markers[markerId] to defaultMarker and than again markers[markerId] to hueGreen marker, while instead we should have changed markers[selectedMarker] to defaultMarker first instead of markers[markerId]

* [google_sign_in_web] Ignore analyzer checks in generated files. (flutter#3622)

These checks are currently breaking the engine/framework rolls.

* [google_sign_in] Bump platform interface version for NNBD stable (flutter#3617)

* [shared_preferences] Removed deprecated AsyncTask API (flutter#3481)

* [webview_flutter] release null safety to stable(flutter#3619)

* [wifi_info_flutter_platform_interface] null safety stable release (flutter#3620)

* [camera] Fix example from README.md (flutter#3592)

* [device_info_platform_interface] handle null value from method channel (flutter#3609)

* [google_maps_flutter] Bump app-facing version for NNBD stable (flutter#3623)

* [video_player_web] Bump version for NNBD stable (flutter#3574)

* [video_player] Bump app-facing version for NNBD stable (flutter#3624)

* [url_launcher] Update result to `True` when the url was loaded successfully. (flutter#3475)

* Update FLTURLLauncherPlugin.m

Update result to `True` when the url was loaded successfully.

* Update pubspec.yaml

* Update CHANGELOG.md

* Undo the re-addition of pre-release changelogs.

Co-authored-by: Ben Li <libe@google.com>
Co-authored-by: stuartmorgan <stuart.morgan@gmail.com>

* [quick_action] fix delegate methods not called on iOS (flutter#3621)

* [file_selector_web] Migrated to null-safety (flutter#3550)


Co-authored-by: David Iglesias Teixeira <ditman@gmail.com>

* [device_info] null safety stable  (flutter#3626)

* [file_selector] Return a non-null value from getSavePath on web (flutter#3630)

* [cross_file] Fix base class nullability (flutter#3629)

Without this, the dummy ("interface") XFile implementation of these properties has different nullability than the others, and the analyzer doesn't match what the runtime actually sees.

* [in_app_purchase] Add support for InApp subscription upgrade/downgrade (flutter#2822)

* [wifi_info_flutter] null safety stable (flutter#3627)

* [camera_platform_interface] Stable null safety release. (flutter#3610)

* Stable null safety release camera_platform_interface

* Update minimum plugin_platform_interface version

* Update version of cross_file to 0.3.1

* [file_selector] Migrate to null safety (flutter#3631)

Migrates the app-facing package to null safety. Includes replacing Mockito with a custom fake/mock.

Fixes an issue where the example didn't handle dialogs being canceled, which was highlighted by the NNBD migration. (Previously, they would cause null assertions at runtime, which wasn't noticed during development. NNBD for the win!)

Fixes flutter/flutter#75235

* embedded_views_preview not required since v1.0.0 (flutter#3625)

`io.flutter.embedded_views_preview` is not required since version `1.0.0`, so doesn't need to be in the example.

* Fix typo in image_picker_for_web README.md (flutter#2835)

* [url_launcher] Added a note to the README (flutter#2031)

The action won't work on the simulator works on physical iOS device which was not mentioned here so it was added

Co-authored-by: Michael Klimushyn <mklim@google.com>
Co-authored-by: Stuart Morgan <stuartmorgan@google.com>

* Make executor an instance property (flutter#3633)

* [google_sign_in_web] Migrate to null-safety (flutter#3628)

* [google_sign_in] Bump app-facing version for NNBD stable (flutter#3637)

* [file_selector] Endorse web (flutter#3643)

* [extension_google_sign_in_as_googleapis_auth] Migrate to null safety (flutter#3642)

Migrates to NNBD.
Replaces Mockito-based fakes with test's Fake.

* Fix Cirrus script for firebase testlab tests (flutter#3634)

* [file_selector_platform_interface]: Verify that extensions don't have leading dots. (flutter#3451)

* [image_picker_for_web] Bump version for NNBD stable (flutter#3635)

* [shared_preferences] Don't create additional Handler when method channel is called. (flutter#3639)

* migrate tests to null safety (flutter#3645)

* Update pull_request_label.yml (flutter#3647)

Co-authored-by: Chris Yang <ychris@google.com>
Co-authored-by: Sebastian Roth <sebastian.roth@gmail.com>
Co-authored-by: David Iglesias <ditman@gmail.com>
Co-authored-by: Kevin Moore <kevmoo@users.noreply.github.com>
Co-authored-by: Bodhi Mulders <info@bemacized.net>
Co-authored-by: Maurits van Beusekom <maurits@baseflow.com>
Co-authored-by: Maurits van Beusekom <maurits@vnbskm.nl>
Co-authored-by: daniel <daniel.roek@gmail.com>
Co-authored-by: Amir Hardon <amirh@users.noreply.github.com>
Co-authored-by: Emmanuel Garcia <egarciad@google.com>
Co-authored-by: Mehmet Fidanboylu <mehmetf@users.noreply.github.com>
Co-authored-by: Nathanael <nathanaelneveux@me.com>
Co-authored-by: Daniël <32639467+danielroek@users.noreply.github.com>
Co-authored-by: Anniek <anniekvalk@gmail.com>
Co-authored-by: Marko Filipović <mrkfilipovic3@gmail.com>
Co-authored-by: Aman Verma <verma1090aman@gmail.com>
Co-authored-by: Andrew Zuo <impure86@gmail.com>
Co-authored-by: Hans Muller <hans.muller@gmail.com>
Co-authored-by: Mike Diarmid <mike.diarmid@gmail.com>
Co-authored-by: Zachary Anderson <zanderso@users.noreply.github.com>
Co-authored-by: Maurice Parrish <bmparr@google.com>
Co-authored-by: Ian Hickson <ian@hixie.ch>
Co-authored-by: Aleksandr Yurkovskiy <sanekyy@gmail.com>
Co-authored-by: Kate Lovett <katelovett@google.com>
Co-authored-by: Juanjo Tugores <tugorez@users.noreply.github.com>
Co-authored-by: najeira <najeira@gmail.com>
Co-authored-by: klaes-ashford <36758008+klaes-ashford@users.noreply.github.com>
Co-authored-by: Kenneth Jones <github@kennethdjones.com>
Co-authored-by: Anton Borries <anton.borries@gmail.com>
Co-authored-by: stuartmorgan <stuartmorgan@google.com>
Co-authored-by: Sander Roest <jsroest@gmail.com>
Co-authored-by: Anton Borries <anton.borries@2denker.de>
Co-authored-by: Dan Field <dnfield@google.com>
Co-authored-by: Gary Roumanis <groumanis@gmail.com>
Co-authored-by: Jia Hao <jiahaog@users.noreply.github.com>
Co-authored-by: Michael Thomsen <mit@google.com>
Co-authored-by: Mouad Debbar <mouad.debbar@gmail.com>
Co-authored-by: Tim Sneath <timsneath@google.com>
Co-authored-by: Alex Li <github@alexv525.com>
Co-authored-by: Yash Johri <yashjohri1200@gmail.com>
Co-authored-by: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com>
Co-authored-by: max <19898639+vimaxwell@users.noreply.github.com>
Co-authored-by: Sameer Kashyap <40424087+Sameerkash@users.noreply.github.com>
Co-authored-by: Darshan Rander <darshandrander@gmail.com>
Co-authored-by: Gaëtan <blaxoujunior@gmail.com>
Co-authored-by: shihchanghsiungsonos <44383755+shihchanghsiungsonos@users.noreply.github.com>
Co-authored-by: nohli <43643339+nohli@users.noreply.github.com>
Co-authored-by: Kabirou Agouda <64534846+kagouda@users.noreply.github.com>
Co-authored-by: Jonas Finnemann Jensen <jopsen@gmail.com>
Co-authored-by: Aman Kumar <thisisamank@gmail.com>
Co-authored-by: hemanthrajdc <49126054+hemanthrajdc@users.noreply.github.com>
Co-authored-by: Bharat Biradar <62872048+bharat-biradar@users.noreply.github.com>
Co-authored-by: Jeremiah Parrack <jeremiahlukus1@gmail.com>
Co-authored-by: Jérémie Vincke <jeremie@movify.com>
Co-authored-by: Leandro Lucarella <luca@llucax.com>
Co-authored-by: Jens Becker <jensbecker01@gmx.de>
Co-authored-by: Vishnu Agarwal <53317018+vishnuagbly@users.noreply.github.com>
Co-authored-by: LI DONGZE <lidongze91@gmail.com>
Co-authored-by: Ben Li <libe@google.com>
Co-authored-by: stuartmorgan <stuart.morgan@gmail.com>
Co-authored-by: Rahul Raj <64.rahulraj@gmail.com>
Co-authored-by: Floris Devreese <florisdevreese@hotmail.com>
Co-authored-by: Lasse R.H. Nielsen <lrn@google.com>
Co-authored-by: K K <kalkotekedar@gmail.com>
Co-authored-by: Michael Klimushyn <mklim@google.com>
Co-authored-by: Petrus Nguyễn Thái Học <hoc081098@gmail.com>
Co-authored-by: Singgih Putra <singgihputrap@gmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
6 participants