From ff52c52e753ca4b9a6b1bee9a180b36c968e1628 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Sat, 5 Dec 2020 11:46:50 +0100 Subject: [PATCH 1/7] null-safety for android_alarm_manager_plus - Removed discontinoued dependencies - plugin is null safe - example and e2e tests are yet not null safe as the integration_test package does not support null safety yet. --- .../example/lib/main.dart | 7 +++- .../example/pubspec.yaml | 6 ++- .../android_alarm_manager_plus_e2e.dart | 4 +- .../android_alarm_manager_plus_e2e_test.dart | 41 ++++--------------- .../lib/android_alarm_manager_plus.dart | 10 +++-- .../android_alarm_manager_plus/pubspec.yaml | 6 +-- .../test/android_alarm_manager_test.dart | 3 +- 7 files changed, 32 insertions(+), 45 deletions(-) diff --git a/packages/android_alarm_manager_plus/example/lib/main.dart b/packages/android_alarm_manager_plus/example/lib/main.dart index 3b9e4542a2..e5a9e8e306 100644 --- a/packages/android_alarm_manager_plus/example/lib/main.dart +++ b/packages/android_alarm_manager_plus/example/lib/main.dart @@ -54,7 +54,10 @@ class AlarmManagerExampleApp extends StatelessWidget { } class _AlarmHomePage extends StatefulWidget { - _AlarmHomePage({Key key, this.title}) : super(key: key); + _AlarmHomePage({ + Key key, + this.title, + }) : super(key: key); final String title; @override @@ -140,7 +143,7 @@ class _AlarmHomePageState extends State<_AlarmHomePage> { await AndroidAlarmManager.oneShot( const Duration(seconds: 5), // Ensure we have a unique alarm ID. - Random().nextInt(pow(2, 31)), + Random().nextInt(pow(2, 31).toInt()), callback, exact: true, wakeup: true, diff --git a/packages/android_alarm_manager_plus/example/pubspec.yaml b/packages/android_alarm_manager_plus/example/pubspec.yaml index 7b09668ce7..f05428a1cc 100644 --- a/packages/android_alarm_manager_plus/example/pubspec.yaml +++ b/packages/android_alarm_manager_plus/example/pubspec.yaml @@ -1,13 +1,17 @@ name: android_alarm_manager_example description: Demonstrates how to use the android_alarm_manager_plus plugin. +environment: + sdk: ">=2.10.0 <3.0.0" + flutter: ">=1.20.0 <2.0.0" + dependencies: flutter: sdk: flutter android_alarm_manager_plus: path: ../ shared_preferences: ^0.5.6 - e2e: 0.3.0 + integration_test: ^1.0.0 path_provider: ^1.3.1 dev_dependencies: diff --git a/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e.dart b/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e.dart index 862be800be..8bebf0b154 100644 --- a/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e.dart +++ b/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e.dart @@ -5,7 +5,7 @@ import 'dart:async'; import 'dart:io'; import 'package:android_alarm_manager_plus/android_alarm_manager_plus.dart'; -import 'package:e2e/e2e.dart'; +import 'package:integration_test/integration_test.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:path_provider/path_provider.dart'; @@ -55,7 +55,7 @@ Future incrementCounter() async { } void main() { - E2EWidgetsFlutterBinding.ensureInitialized(); + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); setUp(() async { await AndroidAlarmManager.initialize(); diff --git a/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e_test.dart b/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e_test.dart index 8373a3afd1..fe8d385c38 100644 --- a/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e_test.dart +++ b/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e_test.dart @@ -3,42 +3,19 @@ // BSD-style license that can be found in the LICENSE file. import 'dart:async'; +import 'dart:convert'; import 'dart:io'; +// ignore: import_of_legacy_library_into_null_safe import 'package:flutter_driver/flutter_driver.dart'; -import 'package:vm_service_client/vm_service_client.dart'; - -Future> resumeIsolatesOnPause( - FlutterDriver driver) async { - final vm = await driver.serviceClient.getVM(); - print('for isolates'); - for (var isolateRef in vm.isolates) { - final isolate = await isolateRef.load(); - if (isolate.isPaused) { - print('isolate.resume'); - await isolate.resume(); - } - } - return driver.serviceClient.onIsolateRunnable - .asBroadcastStream() - .listen((VMIsolateRef isolateRef) async { - print('onIsolateRunnable'); - final isolate = await isolateRef.load(); - if (isolate.isPaused) { - print('isolate.resume'); - await isolate.resume(); - } - }); -} Future main() async { - final driver = await FlutterDriver.connect(); - // flutter drive causes isolates to be paused on spawn. The background isolate - // for this plugin will need to be resumed for the test to pass. - final subscription = await resumeIsolatesOnPause(driver); - final result = - await driver.requestData(null, timeout: const Duration(minutes: 5)); + final FlutterDriver driver = await FlutterDriver.connect(); + final String data = await driver.requestData( + null, + timeout: const Duration(minutes: 1), + ); await driver.close(); - await subscription.cancel(); - exit(result == 'pass' ? 0 : 1); + final Map result = jsonDecode(data); + exit(result['result'] == 'true' ? 0 : 1); } diff --git a/packages/android_alarm_manager_plus/lib/android_alarm_manager_plus.dart b/packages/android_alarm_manager_plus/lib/android_alarm_manager_plus.dart index d767833020..ff2e010f69 100644 --- a/packages/android_alarm_manager_plus/lib/android_alarm_manager_plus.dart +++ b/packages/android_alarm_manager_plus/lib/android_alarm_manager_plus.dart @@ -55,7 +55,7 @@ void _alarmManagerCallbackDispatcher() { // A lambda that returns the current instant in the form of a [DateTime]. typedef _Now = DateTime Function(); // A lambda that gets the handle for the given [callback]. -typedef _GetCallbackHandle = CallbackHandle Function(Function callback); +typedef _GetCallbackHandle = CallbackHandle? Function(Function callback); /// A Flutter plugin for registering Dart callbacks with the Android /// AlarmManager service. @@ -77,8 +77,10 @@ class AndroidAlarmManager { /// This is exposed for the unit tests. It should not be accessed by users of /// the plugin. @visibleForTesting - static void setTestOverides( - {_Now now, _GetCallbackHandle getCallbackHandle}) { + static void setTestOverides({ + _Now? now, + _GetCallbackHandle? getCallbackHandle, + }) { _now = (now ?? _now); _getCallbackHandle = (getCallbackHandle ?? _getCallbackHandle); } @@ -261,7 +263,7 @@ class AndroidAlarmManager { Duration duration, int id, Function callback, { - DateTime startAt, + DateTime? startAt, bool exact = false, bool wakeup = false, bool rescheduleOnReboot = false, diff --git a/packages/android_alarm_manager_plus/pubspec.yaml b/packages/android_alarm_manager_plus/pubspec.yaml index 077123c653..b8d4b46932 100644 --- a/packages/android_alarm_manager_plus/pubspec.yaml +++ b/packages/android_alarm_manager_plus/pubspec.yaml @@ -12,7 +12,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - pedantic: ^1.9.0 + pedantic: ^1.10.0-nullsafety.3 flutter: plugin: @@ -22,5 +22,5 @@ flutter: pluginClass: AndroidAlarmManagerPlugin environment: - sdk: ">=2.1.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + sdk: ">=2.12.0-29.10.beta <3.0.0" + flutter: ">=1.24.0-10.2.pre <2.0.0" diff --git a/packages/android_alarm_manager_plus/test/android_alarm_manager_test.dart b/packages/android_alarm_manager_plus/test/android_alarm_manager_test.dart index 0cfce073e7..c572406251 100644 --- a/packages/android_alarm_manager_plus/test/android_alarm_manager_test.dart +++ b/packages/android_alarm_manager_plus/test/android_alarm_manager_test.dart @@ -17,7 +17,8 @@ void main() { TestWidgetsFlutterBinding.ensureInitialized(); setUpAll(() { - testChannel.setMockMethodCallHandler((MethodCall call) => null); + testChannel + .setMockMethodCallHandler((MethodCall call) => Future.value(null)); }); test('${AndroidAlarmManager.initialize}', () async { From 744fd8862e1a92a64db27457e232db6dff623ac7 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Sat, 5 Dec 2020 11:54:25 +0100 Subject: [PATCH 2/7] version 0.6.0-nullsafety.0 --- packages/android_alarm_manager_plus/CHANGELOG.md | 4 ++++ packages/android_alarm_manager_plus/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/android_alarm_manager_plus/CHANGELOG.md b/packages/android_alarm_manager_plus/CHANGELOG.md index 5357d57db9..173b57b33c 100644 --- a/packages/android_alarm_manager_plus/CHANGELOG.md +++ b/packages/android_alarm_manager_plus/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.0-nullsafety.0 + +- Migrated to null safety + ## 0.5.0 - Transfer to plus-plugins monorepo diff --git a/packages/android_alarm_manager_plus/pubspec.yaml b/packages/android_alarm_manager_plus/pubspec.yaml index b8d4b46932..274c1bea9b 100644 --- a/packages/android_alarm_manager_plus/pubspec.yaml +++ b/packages/android_alarm_manager_plus/pubspec.yaml @@ -1,7 +1,7 @@ name: android_alarm_manager_plus description: Flutter plugin for accessing the Android AlarmManager service, and running Dart code in the background when alarms fire. -version: 0.5.0 +version: 0.6.0-nullsafety.0 homepage: https://plus.fluttercommunity.dev/ repository: https://github.com/fluttercommunity/plus_plugins/tree/main/packages/ From cfaba68da347268b725b75b01e7570840f27ed1f Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Sat, 5 Dec 2020 11:57:45 +0100 Subject: [PATCH 3/7] fix lint --- .../test_driver/android_alarm_manager_plus_e2e_test.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e_test.dart b/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e_test.dart index fe8d385c38..3a4c43e30c 100644 --- a/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e_test.dart +++ b/packages/android_alarm_manager_plus/example/test_driver/android_alarm_manager_plus_e2e_test.dart @@ -10,8 +10,8 @@ import 'dart:io'; import 'package:flutter_driver/flutter_driver.dart'; Future main() async { - final FlutterDriver driver = await FlutterDriver.connect(); - final String data = await driver.requestData( + final driver = await FlutterDriver.connect(); + final data = await driver.requestData( null, timeout: const Duration(minutes: 1), ); From 3177c2354fc720c5109196a17ff135da9781b339 Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Sat, 5 Dec 2020 13:36:35 +0100 Subject: [PATCH 4/7] switch to integration_test 0.9.2 --- packages/android_alarm_manager_plus/example/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/android_alarm_manager_plus/example/pubspec.yaml b/packages/android_alarm_manager_plus/example/pubspec.yaml index f05428a1cc..07a32b3cd5 100644 --- a/packages/android_alarm_manager_plus/example/pubspec.yaml +++ b/packages/android_alarm_manager_plus/example/pubspec.yaml @@ -11,7 +11,7 @@ dependencies: android_alarm_manager_plus: path: ../ shared_preferences: ^0.5.6 - integration_test: ^1.0.0 + integration_test: ^0.9.2 path_provider: ^1.3.1 dev_dependencies: From 914d6e92952b85d798ff1afe0e741719b1a8637d Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Sat, 5 Dec 2020 15:54:34 +0100 Subject: [PATCH 5/7] set BRANCH env var to beta --- .github/workflows/all_plugins.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/all_plugins.yaml b/.github/workflows/all_plugins.yaml index cd6fc04857..1fb7cd9bdc 100644 --- a/.github/workflows/all_plugins.yaml +++ b/.github/workflows/all_plugins.yaml @@ -2,6 +2,9 @@ name: all_plugins env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + # flutter channel + # TODO: Switch to stable when null safety is stable + BRANCH: 'beta' on: pull_request: From 82e1ec7a4373b81a60b5c52ae982af662e38625f Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Sat, 5 Dec 2020 16:08:41 +0100 Subject: [PATCH 6/7] set beta in install script --- .github/workflows/all_plugins.yaml | 3 --- .github/workflows/scripts/install-flutter.sh | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/all_plugins.yaml b/.github/workflows/all_plugins.yaml index 1fb7cd9bdc..cd6fc04857 100644 --- a/.github/workflows/all_plugins.yaml +++ b/.github/workflows/all_plugins.yaml @@ -2,9 +2,6 @@ name: all_plugins env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' - # flutter channel - # TODO: Switch to stable when null safety is stable - BRANCH: 'beta' on: pull_request: diff --git a/.github/workflows/scripts/install-flutter.sh b/.github/workflows/scripts/install-flutter.sh index 2591f60536..42d4d0f27b 100755 --- a/.github/workflows/scripts/install-flutter.sh +++ b/.github/workflows/scripts/install-flutter.sh @@ -6,7 +6,7 @@ if [ "$BRANCH" == "dev" ] then # TODO Flutter dev branch is currently broken so we're unable to test MacOS. echo "TODO: Skipping macOS testing due to Flutter dev branch issue. Switching branch to stable." - BRANCH=stable + BRANCH=beta fi git clone https://github.com/flutter/flutter.git --depth 1 -b $BRANCH _flutter From 90aff517a4d968b7f4ad9c08df9117a9d53d493b Mon Sep 17 00:00:00 2001 From: Miguel Beltran Date: Sat, 5 Dec 2020 16:09:44 +0100 Subject: [PATCH 7/7] install beta --- .github/workflows/all_plugins.yaml | 2 +- .github/workflows/scripts/install-flutter.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/all_plugins.yaml b/.github/workflows/all_plugins.yaml index cd6fc04857..895be3a29d 100644 --- a/.github/workflows/all_plugins.yaml +++ b/.github/workflows/all_plugins.yaml @@ -20,7 +20,7 @@ jobs: with: fetch-depth: 0 - name: 'Install Flutter' - run: ./.github/workflows/scripts/install-flutter.sh stable + run: ./.github/workflows/scripts/install-flutter.sh beta - name: 'Install Tools' run: | ./.github/workflows/scripts/install-tools.sh diff --git a/.github/workflows/scripts/install-flutter.sh b/.github/workflows/scripts/install-flutter.sh index 42d4d0f27b..2591f60536 100755 --- a/.github/workflows/scripts/install-flutter.sh +++ b/.github/workflows/scripts/install-flutter.sh @@ -6,7 +6,7 @@ if [ "$BRANCH" == "dev" ] then # TODO Flutter dev branch is currently broken so we're unable to test MacOS. echo "TODO: Skipping macOS testing due to Flutter dev branch issue. Switching branch to stable." - BRANCH=beta + BRANCH=stable fi git clone https://github.com/flutter/flutter.git --depth 1 -b $BRANCH _flutter