From daf4c3b812225a36050812a228fd311c7165a3d1 Mon Sep 17 00:00:00 2001 From: FMorschel <52160996+FMorschel@users.noreply.github.com> Date: Tue, 3 Jun 2025 01:32:27 -0300 Subject: [PATCH 1/6] remove unnecessary boolean operations --- .../in_app_purchase/example/lib/main.dart | 1 + packages/rfw/test/argument_decoders_test.dart | 2 +- packages/rfw/test/material_widgets_test.dart | 12 ++++++------ .../url_launcher/lib/src/legacy_api.dart | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/in_app_purchase/in_app_purchase/example/lib/main.dart b/packages/in_app_purchase/in_app_purchase/example/lib/main.dart index 19698ff8a9c..1662b97989b 100644 --- a/packages/in_app_purchase/in_app_purchase/example/lib/main.dart +++ b/packages/in_app_purchase/in_app_purchase/example/lib/main.dart @@ -22,6 +22,7 @@ void main() { // Auto-consume must be true on iOS. // To try without auto-consume on another platform, change `true` to `false` here. +// ignore: no_literal_bool_comparisons final bool _kAutoConsume = Platform.isIOS || true; const String _kConsumableId = 'consumable'; diff --git a/packages/rfw/test/argument_decoders_test.dart b/packages/rfw/test/argument_decoders_test.dart index f29b0fc093e..e0caa1b538c 100644 --- a/packages/rfw/test/argument_decoders_test.dart +++ b/packages/rfw/test/argument_decoders_test.dart @@ -380,7 +380,7 @@ void main() { matchesGoldenFile('goldens/argument_decoders_test.containers.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens || true, + skip: !runGoldens, ); expect(find.byType(DecoratedBox), findsNWidgets(6)); const String matrix = kIsWeb ? '1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1' diff --git a/packages/rfw/test/material_widgets_test.dart b/packages/rfw/test/material_widgets_test.dart index 5975ec2b1f8..d2dbe9a490f 100644 --- a/packages/rfw/test/material_widgets_test.dart +++ b/packages/rfw/test/material_widgets_test.dart @@ -213,7 +213,7 @@ void main() { matchesGoldenFile('goldens/material_test.scaffold.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens || true, + skip: !runGoldens, ); await tester.tap(find.byType(DropdownButton).first); @@ -223,7 +223,7 @@ void main() { matchesGoldenFile('goldens/material_test.dropdown.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens || true, + skip: !runGoldens, ); // Tap on the second item. await tester.tap(find.text('bar')); @@ -312,7 +312,7 @@ void main() { matchesGoldenFile('goldens/material_test.button_bar_properties.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens || true, + skip: !runGoldens, ); // Update the surface size for ButtonBar to overflow. @@ -386,7 +386,7 @@ void main() { 'goldens/material_test.overflow_bar_resembles_button_bar.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens || true, + skip: !runGoldens, ); }); @@ -463,7 +463,7 @@ void main() { 'goldens/material_test.overflow_bar_properties.overflow.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens || true, + skip: !runGoldens, ); }); @@ -595,7 +595,7 @@ void main() { matchesGoldenFile('goldens/material_test.material_properties.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens || true, + skip: !runGoldens, ); runtime.update(testName, parseLibraryFile(''' diff --git a/packages/url_launcher/url_launcher/lib/src/legacy_api.dart b/packages/url_launcher/url_launcher/lib/src/legacy_api.dart index f709a75f758..0633384aed5 100644 --- a/packages/url_launcher/url_launcher/lib/src/legacy_api.dart +++ b/packages/url_launcher/url_launcher/lib/src/legacy_api.dart @@ -78,7 +78,7 @@ Future launch( final bool isWebURL = url != null && (url.scheme == 'http' || url.scheme == 'https'); - if ((forceSafariVC ?? false || forceWebView) && !isWebURL) { + if ((forceSafariVC ?? forceWebView) && !isWebURL) { throw PlatformException( code: 'NOT_A_WEB_SCHEME', message: 'To use webview or safariVC, you need to pass ' From c654e132c2ae86e9d280884227048be0aa598e44 Mon Sep 17 00:00:00 2001 From: FMorschel <52160996+FMorschel@users.noreply.github.com> Date: Tue, 3 Jun 2025 09:42:04 -0300 Subject: [PATCH 2/6] revert previous changes and add ignore --- packages/rfw/test/argument_decoders_test.dart | 3 ++- packages/rfw/test/material_widgets_test.dart | 24 ++++++++++--------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/packages/rfw/test/argument_decoders_test.dart b/packages/rfw/test/argument_decoders_test.dart index e0caa1b538c..25f177f4aad 100644 --- a/packages/rfw/test/argument_decoders_test.dart +++ b/packages/rfw/test/argument_decoders_test.dart @@ -3,6 +3,7 @@ // found in the LICENSE file. // This file is hand-formatted. +// ignore_for_file: no_literal_bool_comparisons import 'dart:ui' as ui; @@ -380,7 +381,7 @@ void main() { matchesGoldenFile('goldens/argument_decoders_test.containers.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens, + skip: !runGoldens || true, ); expect(find.byType(DecoratedBox), findsNWidgets(6)); const String matrix = kIsWeb ? '1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1' diff --git a/packages/rfw/test/material_widgets_test.dart b/packages/rfw/test/material_widgets_test.dart index d2dbe9a490f..67801119de5 100644 --- a/packages/rfw/test/material_widgets_test.dart +++ b/packages/rfw/test/material_widgets_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. +// ignore_for_file: no_literal_bool_comparisons + import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; @@ -213,7 +215,7 @@ void main() { matchesGoldenFile('goldens/material_test.scaffold.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens, + skip: !runGoldens || true, ); await tester.tap(find.byType(DropdownButton).first); @@ -223,7 +225,7 @@ void main() { matchesGoldenFile('goldens/material_test.dropdown.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens, + skip: !runGoldens || true, ); // Tap on the second item. await tester.tap(find.text('bar')); @@ -245,7 +247,7 @@ void main() { await expectLater( find.byType(RemoteWidget), matchesGoldenFile('goldens/material_test.drawer.png'), - skip: !runGoldens, + skip: !runGoldens || true, ); }); @@ -312,7 +314,7 @@ void main() { matchesGoldenFile('goldens/material_test.button_bar_properties.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens, + skip: !runGoldens || true, ); // Update the surface size for ButtonBar to overflow. @@ -323,7 +325,7 @@ void main() { find.byType(RemoteWidget), matchesGoldenFile( 'goldens/material_test.button_bar_properties.overflow.png'), - skip: !runGoldens, + skip: !runGoldens || true, ); }); @@ -386,7 +388,7 @@ void main() { 'goldens/material_test.overflow_bar_resembles_button_bar.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens, + skip: !runGoldens || true, ); }); @@ -450,7 +452,7 @@ void main() { await expectLater( find.byType(RemoteWidget), matchesGoldenFile('goldens/material_test.overflow_bar_properties.png'), - skip: !runGoldens, + skip: !runGoldens || true, ); // Update the surface size for OverflowBar to overflow. @@ -463,7 +465,7 @@ void main() { 'goldens/material_test.overflow_bar_properties.overflow.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens, + skip: !runGoldens || true, ); }); @@ -524,7 +526,7 @@ void main() { await expectLater( find.byType(RemoteWidget), matchesGoldenFile('goldens/material_test.ink_response_hover.png'), - skip: !runGoldens, + skip: !runGoldens || true, ); expect(eventLog, contains('onHover {}')); @@ -537,7 +539,7 @@ void main() { await expectLater( find.byType(RemoteWidget), matchesGoldenFile('goldens/material_test.ink_response_tap.png'), - skip: !runGoldens, + skip: !runGoldens || true, ); await gesture.up(); await tester.pump(); @@ -595,7 +597,7 @@ void main() { matchesGoldenFile('goldens/material_test.material_properties.png'), // TODO(louisehsu): Unskip once golden file is updated. See // https://github.com/flutter/flutter/issues/151995 - skip: !runGoldens, + skip: !runGoldens || true, ); runtime.update(testName, parseLibraryFile(''' From d25ca412457e6812f34e9623b1547e73e866280f Mon Sep 17 00:00:00 2001 From: FMorschel <52160996+FMorschel@users.noreply.github.com> Date: Mon, 9 Jun 2025 12:49:25 -0300 Subject: [PATCH 3/6] fixes as expected code --- packages/url_launcher/url_launcher/lib/src/legacy_api.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/url_launcher/url_launcher/lib/src/legacy_api.dart b/packages/url_launcher/url_launcher/lib/src/legacy_api.dart index 0633384aed5..49165f512c5 100644 --- a/packages/url_launcher/url_launcher/lib/src/legacy_api.dart +++ b/packages/url_launcher/url_launcher/lib/src/legacy_api.dart @@ -78,7 +78,7 @@ Future launch( final bool isWebURL = url != null && (url.scheme == 'http' || url.scheme == 'https'); - if ((forceSafariVC ?? forceWebView) && !isWebURL) { + if (((forceSafariVC ?? false) || forceWebView) && !isWebURL) { throw PlatformException( code: 'NOT_A_WEB_SCHEME', message: 'To use webview or safariVC, you need to pass ' From ec0dc149445ab01dc2a95e48b7124438296409d6 Mon Sep 17 00:00:00 2001 From: FMorschel <52160996+FMorschel@users.noreply.github.com> Date: Mon, 9 Jun 2025 16:05:36 -0300 Subject: [PATCH 4/6] adds missing test --- .../url_launcher/test/src/legacy_api_test.dart | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/url_launcher/url_launcher/test/src/legacy_api_test.dart b/packages/url_launcher/url_launcher/test/src/legacy_api_test.dart index 8dee5efd9c8..9f8b989e950 100644 --- a/packages/url_launcher/url_launcher/test/src/legacy_api_test.dart +++ b/packages/url_launcher/url_launcher/test/src/legacy_api_test.dart @@ -229,6 +229,14 @@ void main() { throwsA(isA())); }); + test('cannot send e-mail with forceSafariVC: false and forceWebView: true', + () async { + expect( + () async => launch('mailto:gmail-noreply@google.com?subject=Hello', + forceSafariVC: false, forceWebView: true), + throwsA(isA())); + }); + test('controls system UI when changing statusBarBrightness', () async { mock ..setLaunchExpectations( From fe2e40934713bf05e2c583291ebde13dc3744cd0 Mon Sep 17 00:00:00 2001 From: FMorschel <52160996+FMorschel@users.noreply.github.com> Date: Wed, 11 Jun 2025 13:35:51 -0300 Subject: [PATCH 5/6] version bump --- packages/url_launcher/url_launcher/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/url_launcher/url_launcher/pubspec.yaml b/packages/url_launcher/url_launcher/pubspec.yaml index 0abf69f58d8..e66df063ec7 100644 --- a/packages/url_launcher/url_launcher/pubspec.yaml +++ b/packages/url_launcher/url_launcher/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for launching a URL. Supports web, phone, SMS, and email schemes. repository: https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22 -version: 6.3.1 +version: 6.3.2 environment: sdk: ^3.6.0 From 7bfd6cf9c5ede2395ab99d00e046f567b7e0a49e Mon Sep 17 00:00:00 2001 From: FMorschel <52160996+FMorschel@users.noreply.github.com> Date: Tue, 17 Jun 2025 09:33:03 -0300 Subject: [PATCH 6/6] changes next version and adds new entry about the new case --- packages/url_launcher/url_launcher/CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md index 09dc1d52efd..979d2b5feb9 100644 --- a/packages/url_launcher/url_launcher/CHANGELOG.md +++ b/packages/url_launcher/url_launcher/CHANGELOG.md @@ -1,7 +1,8 @@ -## NEXT +## 6.3.2 * Updates README to indicate that Andoid SDK <21 is no longer supported. * Updates minimum supported SDK version to Flutter 3.27/Dart 3.6. +* Ensures that `launch` with `forceSafariVC: false`, `forceWebView: true` and a non-web scheme throws a `PlatformException`. ## 6.3.1