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/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/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..07a32b3cd5 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: ^0.9.2 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..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 @@ -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 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..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/ @@ -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 {