From d4c875d102742db43fcbc2cd0588c60ac0abcf90 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 14:13:37 +0100 Subject: [PATCH 01/21] bump dart & flutter sdks --- dart/example/pubspec.yaml | 2 +- dart/example_web/pubspec.yaml | 2 +- dart/example_web_legacy/pubspec.yaml | 2 +- dart/pubspec.yaml | 2 +- dio/pubspec.yaml | 2 +- drift/pubspec.yaml | 2 +- e2e_test/pubspec.yaml | 2 +- file/pubspec.yaml | 2 +- flutter/example/pubspec.yaml | 6 +++--- flutter/pubspec.yaml | 4 ++-- hive/pubspec.yaml | 2 +- isar/pubspec.yaml | 4 ++-- logging/pubspec.yaml | 2 +- min_version_test/pubspec.yaml | 4 ++-- sqflite/pubspec.yaml | 4 ++-- 15 files changed, 21 insertions(+), 21 deletions(-) diff --git a/dart/example/pubspec.yaml b/dart/example/pubspec.yaml index e344bbe25a..4851622d44 100644 --- a/dart/example/pubspec.yaml +++ b/dart/example/pubspec.yaml @@ -5,7 +5,7 @@ version: 1.0.0 publish_to: none environment: - sdk: '>=2.17.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' dependencies: sentry: diff --git a/dart/example_web/pubspec.yaml b/dart/example_web/pubspec.yaml index 141e5120ac..8f0d0a8739 100644 --- a/dart/example_web/pubspec.yaml +++ b/dart/example_web/pubspec.yaml @@ -4,7 +4,7 @@ description: An absolute bare-bones web app. publish_to: 'none' environment: - sdk: '>=2.17.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' dependencies: sentry: diff --git a/dart/example_web_legacy/pubspec.yaml b/dart/example_web_legacy/pubspec.yaml index 49b7807084..25f559ca0e 100644 --- a/dart/example_web_legacy/pubspec.yaml +++ b/dart/example_web_legacy/pubspec.yaml @@ -4,7 +4,7 @@ description: An absolute bare-bones web app. publish_to: 'none' environment: - sdk: '>=2.17.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' dependencies: sentry: diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index 33531a02aa..646b0a5151 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -9,7 +9,7 @@ issue_tracker: https://github.com/getsentry/sentry-dart/issues documentation: https://docs.sentry.io/platforms/dart/ environment: - sdk: '>=2.17.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' platforms: android: diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index 5bd146417b..3ce2243a3f 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -7,7 +7,7 @@ issue_tracker: https://github.com/getsentry/sentry-dart/issues documentation: https://docs.sentry.io/platforms/dart/integrations/dio/ environment: - sdk: '>=2.17.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' platforms: android: diff --git a/drift/pubspec.yaml b/drift/pubspec.yaml index ff5f05f3cf..b51da5654f 100644 --- a/drift/pubspec.yaml +++ b/drift/pubspec.yaml @@ -6,7 +6,7 @@ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues environment: - sdk: '>=2.17.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' platforms: android: diff --git a/e2e_test/pubspec.yaml b/e2e_test/pubspec.yaml index 0f53c54ca5..d0ec1b711c 100644 --- a/e2e_test/pubspec.yaml +++ b/e2e_test/pubspec.yaml @@ -5,7 +5,7 @@ version: 1.0.0 publish_to: none environment: - sdk: '>=2.17.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' dependencies: sentry: diff --git a/file/pubspec.yaml b/file/pubspec.yaml index d577b59536..db3f51e458 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -7,7 +7,7 @@ issue_tracker: https://github.com/getsentry/sentry-dart/issues documentation: https://docs.sentry.io/platforms/dart/configuration/integrations/file/ environment: - sdk: '>=2.19.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' platforms: android: diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index 8122a88e9b..3c40bb5583 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -1,12 +1,12 @@ name: sentry_flutter_example description: Demonstrates how to use the sentry_flutter plugin. -version: 8.11.0-beta.1 +version: 8.13.0-beta.3 publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=2.17.0 <4.0.0' - flutter: '>=3.0.0' + sdk: '>=3.5.0 <4.0.0' + flutter: '>=3.24.0' dependencies: flutter: diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index d89d1c7c1c..176471ec62 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -7,8 +7,8 @@ issue_tracker: https://github.com/getsentry/sentry-dart/issues documentation: https://docs.sentry.io/platforms/flutter/ environment: - sdk: '>=2.17.0 <4.0.0' - flutter: '>=3.0.0' + sdk: '>=3.5.0 <4.0.0' + flutter: '>=3.24.0' platforms: android: diff --git a/hive/pubspec.yaml b/hive/pubspec.yaml index 15f0cd3e3f..6cf59ede55 100644 --- a/hive/pubspec.yaml +++ b/hive/pubspec.yaml @@ -6,7 +6,7 @@ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues environment: - sdk: '>=2.17.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' platforms: android: diff --git a/isar/pubspec.yaml b/isar/pubspec.yaml index 38c4c4676e..8517834154 100644 --- a/isar/pubspec.yaml +++ b/isar/pubspec.yaml @@ -6,8 +6,8 @@ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues environment: - sdk: '>=2.17.0 <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.5.0 <4.0.0' + flutter: '>=3.24.0' platforms: android: diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index 4322a5a83d..8647b8f7e9 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -7,7 +7,7 @@ issue_tracker: https://github.com/getsentry/sentry-dart/issues documentation: https://docs.sentry.io/platforms/dart/integrations/logging/ environment: - sdk: '>=2.17.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' platforms: android: diff --git a/min_version_test/pubspec.yaml b/min_version_test/pubspec.yaml index e8e76dc9df..49a693a6cb 100644 --- a/min_version_test/pubspec.yaml +++ b/min_version_test/pubspec.yaml @@ -18,8 +18,8 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: '2.17.0' - flutter: '3.0.0' + sdk: '3.5.0' + flutter: '3.24.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index 5fc97b907c..e5abb7a0c4 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -6,8 +6,8 @@ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues environment: - sdk: '>=2.17.0 <4.0.0' - flutter: '>=3.3.0' # matching sqflite + sdk: '>=3.5.0 <4.0.0' + flutter: '>=3.24.0' platforms: android: From 13f6186fc2d0a605c1079a73c933bfc7bd918667 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 14:39:26 +0100 Subject: [PATCH 02/21] remove (as dynamic casts for older flutter versions) --- flutter/example/lib/main.dart | 18 +------- .../src/feedback/sentry_feedback_widget.dart | 7 ---- .../integrations/on_error_integration.dart | 41 ++----------------- flutter/lib/src/sentry_asset_bundle.dart | 39 +----------------- flutter/lib/src/sentry_flutter.dart | 9 +--- .../sentry_user_interaction_widget.dart | 17 +------- 6 files changed, 11 insertions(+), 120 deletions(-) diff --git a/flutter/example/lib/main.dart b/flutter/example/lib/main.dart index 454be356f6..ff0ef75a89 100644 --- a/flutter/example/lib/main.dart +++ b/flutter/example/lib/main.dart @@ -347,10 +347,7 @@ class MainScaffold extends StatelessWidget { ), TooltipButton( onPressed: () { - // Only usable on Flutter >= 3.3 - // and needs the following additional setup: - // options.addIntegration(OnErrorIntegration()); - (WidgetsBinding.instance.platformDispatcher as dynamic) + WidgetsBinding.instance.platformDispatcher .onError ?.call( Exception('PlatformDispatcher.onError'), @@ -358,7 +355,7 @@ class MainScaffold extends StatelessWidget { ); }, text: - 'This is only usable on Flutter >= 3.3 and requires additional setup: options.addIntegration(OnErrorIntegration());', + 'This requires additional setup: options.addIntegration(OnErrorIntegration());', buttonTitle: 'Capture from PlatformDispatcher.onError', ), TooltipButton( @@ -718,17 +715,6 @@ class MainScaffold extends StatelessWidget { } } -extension BuildContextExtension on BuildContext { - bool get isMounted { - try { - return (this as dynamic).mounted; - } on NoSuchMethodError catch (_) { - // ignore, only available in newer Flutter versions - } - return true; - } -} - class AndroidExample extends StatelessWidget { const AndroidExample({super.key}); diff --git a/flutter/lib/src/feedback/sentry_feedback_widget.dart b/flutter/lib/src/feedback/sentry_feedback_widget.dart index 297c9318ce..12f3df4383 100644 --- a/flutter/lib/src/feedback/sentry_feedback_widget.dart +++ b/flutter/lib/src/feedback/sentry_feedback_widget.dart @@ -206,13 +206,6 @@ class _SentryFeedbackWidgetState extends State { hint = Hint.withScreenshot(screenshot); } await _captureFeedback(feedback, hint); - - bool mounted; - try { - mounted = (this as dynamic).mounted as bool; - } on NoSuchMethodError catch (_) { - mounted = false; - } if (mounted) { // ignore: use_build_context_synchronously await Navigator.maybePop(context); diff --git a/flutter/lib/src/integrations/on_error_integration.dart b/flutter/lib/src/integrations/on_error_integration.dart index f01d1a03ee..5f8fc1506e 100644 --- a/flutter/lib/src/integrations/on_error_integration.dart +++ b/flutter/lib/src/integrations/on_error_integration.dart @@ -97,11 +97,6 @@ class OnErrorIntegration implements Integration { @override void close() { - if (!(dispatchWrapper?.isOnErrorSupported(_options!) == true)) { - // bail out - return; - } - /// Restore default if the integration error is still set. if (dispatchWrapper?.onError == _integrationOnError) { dispatchWrapper?.onError = _defaultOnError; @@ -111,44 +106,16 @@ class OnErrorIntegration implements Integration { } } -/// This class wraps the `this as dynamic` hack in a type-safe manner. -/// It helps to introduce code, which uses newer features from Flutter -/// without breaking Sentry on older versions of Flutter. -// Should not become part of public API. +/// Wrapper to make this testable. Should not become public API. @visibleForTesting class PlatformDispatcherWrapper { PlatformDispatcherWrapper(this._dispatcher); final PlatformDispatcher? _dispatcher; + + ErrorCallback? get onError => _dispatcher?.onError; - /// Should not be accessed if [isOnErrorSupported] == false - ErrorCallback? get onError => - (_dispatcher as dynamic)?.onError as ErrorCallback?; - - /// Should not be accessed if [isOnErrorSupported] == false set onError(ErrorCallback? callback) { - (_dispatcher as dynamic)?.onError = callback; - } - - bool isOnErrorSupported(SentryFlutterOptions options) { - try { - onError; - } on NoSuchMethodError { - // This error is expected on pre 3.1 Flutter version - return false; - } catch (exception, stacktrace) { - // This error is neither expected on pre 3.1 nor on >= 3.1 Flutter versions - options.logger( - SentryLevel.debug, - 'An unexpected exception was thrown, please create an issue at https://github.com/getsentry/sentry-dart/issues', - exception: exception, - stackTrace: stacktrace, - ); - if (options.automatedTestMode) { - rethrow; - } - return false; - } - return true; + _dispatcher?.onError = callback; } } diff --git a/flutter/lib/src/sentry_asset_bundle.dart b/flutter/lib/src/sentry_asset_bundle.dart index a41288209f..3ab510f767 100644 --- a/flutter/lib/src/sentry_asset_bundle.dart +++ b/flutter/lib/src/sentry_asset_bundle.dart @@ -251,7 +251,7 @@ class SentryAssetBundle implements AssetBundle { ImmutableBuffer data; try { - data = await _loadBuffer(key); + data = await _bundle.loadBuffer(key);; _setDataLength(data, span); span?.status = SpanStatus.ok(); } catch (exception) { @@ -265,24 +265,6 @@ class SentryAssetBundle implements AssetBundle { }); } - Future _loadBuffer(String key) { - try { - // ignore: return_of_invalid_type - return (_bundle as dynamic).loadBuffer(key); - } on NoSuchMethodError catch (_) { - // The loadBuffer method exists as of Flutter greater than 3.1 - // Previous versions don't have it, but later versions do. - // We can't use `extends` in order to provide this method because this is - // a wrapper and thus the method call must be forwarded. - // On Flutter versions <=3.1 we can't forward this call and - // just catch the error which is thrown. On later version the call gets - // correctly forwarded. - // - // In case of a NoSuchMethodError we just return an empty list - return ImmutableBuffer.fromUint8List(Uint8List.fromList([])); - } - } - static Future _wrapParsing( _StringParser parser, String value, @@ -356,24 +338,7 @@ class SentryAssetBundle implements AssetBundle { return _loadStructuredBinaryDataWithTracing(key, parser); } - return _loadStructuredBinaryDataWrapper(key, parser); - } - - // helper method to have a "typesafe" method - Future _loadStructuredBinaryDataWrapper( - String key, - FutureOr Function(ByteData data) parser, - ) { - // The loadStructuredBinaryData method exists as of Flutter greater than 3.8 - // Previous versions don't have it, but later versions do. - // We can't use `extends` in order to provide this method because this is - // a wrapper and thus the method call must be forwarded. - // On Flutter versions <=3.8 we can't forward this call. - // On later version the call gets correctly forwarded. - // The error doesn't need to handled since it can't be called on earlier versions, - // and it's correctly forwarded on later versions. - return (_bundle as dynamic).loadStructuredBinaryData(key, parser) - as Future; + return _bundle.loadStructuredBinaryData(key, parser); } } diff --git a/flutter/lib/src/sentry_flutter.dart b/flutter/lib/src/sentry_flutter.dart index ad6049ef2d..1e07e5233e 100644 --- a/flutter/lib/src/sentry_flutter.dart +++ b/flutter/lib/src/sentry_flutter.dart @@ -63,16 +63,11 @@ mixin SentryFlutter { if (options.platformChecker.hasNativeIntegration) { _native = createBinding(options); } - - final platformDispatcher = PlatformDispatcher.instance; - final wrapper = PlatformDispatcherWrapper(platformDispatcher); - + // Flutter Web don't capture [Future] errors if using [PlatformDispatcher.onError] and not // the [runZonedGuarded]. // likely due to https://github.com/flutter/flutter/issues/100277 - final isOnErrorSupported = options.platformChecker.isWeb - ? false - : wrapper.isOnErrorSupported(options); + final isOnErrorSupported = !options.platformChecker.isWeb; final runZonedGuardedOnError = options.platformChecker.isWeb ? _createRunZonedGuardedOnError() : null; diff --git a/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart b/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart index 45c3a0921c..4432597e3d 100644 --- a/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart +++ b/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart @@ -613,21 +613,6 @@ class _SentryUserInteractionWidgetState if (element == null) { return false; } - try { - // ignore: return_of_invalid_type - return (element as dynamic).mounted; - } on NoSuchMethodError catch (_) { - // mounted checks if the widget is not null. - - try { - // Flutter 3.0.0 does `_widget!` and if `_widget` is null it throws. - - // ignore: unnecessary_null_comparison - return element.widget != null; - } catch (_) { - // if it throws, the `_widget` is null and not mounted. - return false; - } - } + return element.mounted; } } From 257243e6665a1c24a080e77614630f08fffd31a0 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 14:47:04 +0100 Subject: [PATCH 03/21] remove tests that rely on old dart versions --- .github/workflows/min_version_test.yml | 2 +- dart/example_web_legacy/.gitignore | 9 -- dart/example_web_legacy/README.md | 8 -- dart/example_web_legacy/analysis_options.yaml | 5 - dart/example_web_legacy/pubspec.yaml | 17 --- dart/example_web_legacy/web/event.dart | 76 ---------- dart/example_web_legacy/web/favicon.ico | Bin 3559 -> 0 bytes dart/example_web_legacy/web/index.html | 69 --------- dart/example_web_legacy/web/main.dart | 136 ------------------ dart/example_web_legacy/web/styles.css | 14 -- dart/test/example_web_compile_test.dart | 9 +- .../integrations/on_error_integration.dart | 1 - 12 files changed, 4 insertions(+), 342 deletions(-) delete mode 100644 dart/example_web_legacy/.gitignore delete mode 100644 dart/example_web_legacy/README.md delete mode 100644 dart/example_web_legacy/analysis_options.yaml delete mode 100644 dart/example_web_legacy/pubspec.yaml delete mode 100644 dart/example_web_legacy/web/event.dart delete mode 100644 dart/example_web_legacy/web/favicon.ico delete mode 100644 dart/example_web_legacy/web/index.html delete mode 100644 dart/example_web_legacy/web/main.dart delete mode 100644 dart/example_web_legacy/web/styles.css diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index 10d5e73bf5..d12ee000bf 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -36,7 +36,7 @@ jobs: - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # pin@v2.16.0 with: - flutter-version: "3.0.0" + flutter-version: "3.24.0" - name: Build Android run: | diff --git a/dart/example_web_legacy/.gitignore b/dart/example_web_legacy/.gitignore deleted file mode 100644 index 3d64647b50..0000000000 --- a/dart/example_web_legacy/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Files and directories created by pub -.dart_tool/ -.packages - -# Conventional directory for build outputs -build/ - -# Directory created by dartdoc -doc/api/ diff --git a/dart/example_web_legacy/README.md b/dart/example_web_legacy/README.md deleted file mode 100644 index 98202566f6..0000000000 --- a/dart/example_web_legacy/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Sentry Dart : web example - -```sh -dart pub get - -# run the project ( see https://dart.dev/tools/webdev#serve ) -dart run webdev serve --release -``` diff --git a/dart/example_web_legacy/analysis_options.yaml b/dart/example_web_legacy/analysis_options.yaml deleted file mode 100644 index be16ace7d1..0000000000 --- a/dart/example_web_legacy/analysis_options.yaml +++ /dev/null @@ -1,5 +0,0 @@ -include: package:lints/recommended.yaml - -analyzer: - errors: - path_does_not_exist: ignore diff --git a/dart/example_web_legacy/pubspec.yaml b/dart/example_web_legacy/pubspec.yaml deleted file mode 100644 index 25f559ca0e..0000000000 --- a/dart/example_web_legacy/pubspec.yaml +++ /dev/null @@ -1,17 +0,0 @@ -name: sentry_dart_web_example -description: An absolute bare-bones web app. - -publish_to: 'none' - -environment: - sdk: '>=3.5.0 <4.0.0' - -dependencies: - sentry: - path: ../../dart/ - -dev_dependencies: - build_runner: ^2.3.0 - build_web_compilers: ^3.2.3 - lints: ^2.0.0 - webdev: ^2.7.0 diff --git a/dart/example_web_legacy/web/event.dart b/dart/example_web_legacy/web/event.dart deleted file mode 100644 index 6e3e8b3e0b..0000000000 --- a/dart/example_web_legacy/web/event.dart +++ /dev/null @@ -1,76 +0,0 @@ -import 'package:sentry/src/protocol.dart'; - -final event = SentryEvent( - logger: 'main', - serverName: 'server.dart', - release: '1.4.0-preview.1', - environment: 'Test', - message: SentryMessage('This is an example Dart event.'), - tags: const {'project-id': '7371'}, - // ignore: deprecated_member_use, deprecated_member_use_from_same_package - extra: const {'section': '1'}, - // fingerprint: const ['example-dart'], - user: SentryUser( - id: '800', - username: 'first-user', - email: 'first@user.lan', - // ipAddress: '127.0.0.1', - data: {'first-sign-in': '2020-01-01'}, - ), - breadcrumbs: [ - Breadcrumb( - message: 'UI Lifecycle', - timestamp: DateTime.now().toUtc(), - category: 'ui.lifecycle', - type: 'navigation', - data: {'screen': 'MainActivity', 'state': 'created'}, - level: SentryLevel.info, - ) - ], - contexts: Contexts( - operatingSystem: const SentryOperatingSystem( - name: 'Android', - version: '5.0.2', - build: 'LRX22G.P900XXS0BPL2', - kernelVersion: - 'Linux version 3.4.39-5726670 (dpi@SWHC3807) (gcc version 4.8 (GCC) ) #1 SMP PREEMPT Thu Dec 1 19:42:39 KST 2016', - rooted: false, - ), - runtimes: [const SentryRuntime(name: 'ART', version: '5')], - app: SentryApp( - name: 'Example Dart App', - version: '1.42.0', - identifier: 'HGT-App-13', - build: '93785', - buildType: 'release', - deviceAppHash: '5afd3a6', - startTime: DateTime.now().toUtc(), - ), - browser: const SentryBrowser(name: 'Firefox', version: '42.0.1'), - device: SentryDevice( - name: 'SM-P900', - family: 'SM-P900', - model: 'SM-P900 (LRX22G)', - modelId: 'LRX22G', - arch: 'armeabi-v7a', - batteryLevel: 99, - orientation: SentryOrientation.landscape, - manufacturer: 'samsung', - brand: 'samsung', - screenDensity: 2.1, - screenDpi: 320, - online: true, - charging: true, - lowMemory: true, - simulator: false, - memorySize: 1500, - freeMemory: 200, - usableMemory: 4294967296, - storageSize: 4294967296, - freeStorage: 2147483648, - externalStorageSize: 8589934592, - externalFreeStorage: 2863311530, - bootTime: DateTime.now().toUtc(), - ), - ), -); diff --git a/dart/example_web_legacy/web/favicon.ico b/dart/example_web_legacy/web/favicon.ico deleted file mode 100644 index 7ba349b3e628d2423d4a2ed217422a4722f73739..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3559 zcmV|z)fLATAcZDKyK$JdGY~s=NSr`PnS}BvP$+3A z8CpoogqBhg+p;Cg51fS9@izOF7~1r6zw|?g zDQ!X_8B4l7_wKH=QY>4NwW55uUP;#D-rxP7bI-kdjtU{9Dpi9&%XV3<*GkWK^P@NG zgWRw6Vb?`n$T_Evx_k{$?y0Rh-E#bYD?-UGV3Tc>$SdfYhb2dG)#K`(KPKx z4IwA0_p^z5A4{(AI%=BqUe-mpgFoo&TY*3Gu!0a29lR)aGV2dpEZ4z|Kc)+FUc-bN zHIDPB&TC8HnJ0tyG0*^nmzmQ?TnN+!QqapY^N|7@`F5AqbYw-`02pC0LNbv4yz60?w^9K&j_>533B&I%i9tFNIn5p2kb+@G0y43>@$)ns6>BLG63+2Wpepx zJ&v#ILasL(C%pe{n)2h>g2u-1wVpgKUaNE4V$J76NI&82+j&+}!O~12Z$~FRKK$`9 zx^J3f|L@(w z@^0VL;CU-=w^+ZF9FR4?4ODJ#62DZXnxe`qk)!2S9)0Z%YeH3TkE!aMNY!YE_0LhF z2ESF$qU+kcNYfp>Oq;_Knx0_qs&4=0WPdHW`-Qyher0=jx5gB?QhDMW+Qc1=t$k|< zt=eZtRI`&@>AfXtZFZz?wIfZ37txkUL?4_$0OBvSIr99C2j2UN)Ni@j77k#SApKPq z|7OZGK1&}QM-|70VjJzpQ8hDwD&8DI6m)83lM`v+s(Btdr*I>`(aIvtK1ZDD;A51L zClILKDAJgMZ)-X|x8@2VC+X9BJv40&^lN&j5M^{HDvl4q-~qts09^Y4!n4Ma6_Lw34kz1b@>qe;tZn9VPT9z@k+{b=Lo2to6L3;F~QIz4!D1T|P-qRdf7Z303(CYKm}t10))3j2!;|tzyS7gc;G1rFhS73B&NU|LN;}mYr{eivPfUF zdm~5DreHsX?W>bdsM|qmnE=2HBnZ`V2&GU0HiPHE4BB~d@G=O*FMxyW35}^c+*y^d zu=LHL8rmGaLUn`myIgTKc-?scBq8(@2<4?z0#?C(P6j}(1UFeFC{V&pSs-Nh`dIqC zkq_zKagZ2z+AcRzw=V!dgs?$W0)eov1WLdv*y|LWVW)c@2!awQQ^c0$7^MT+`37Is z%4jsE07!ol4_@%H1b}B@02vS}j=YN~fUrVwC4dzE;VS8yeRqJ(To9x$c>TNqWIDzpRz&Sr zPzjP57~P9Na0}*O4%=_+^52#;fi&rNW3NA+l7688GL>)?AiTgTsszmeR~7(L6O~|@ zzz|qG+3C{n4%C4}E>qpUB(Ws{kV9bm(b{8HL<58sjR2ud0W;XQkP4(=2|ILf=2+pq z(O1(09&`AwG{n*Q)qw$JVxnF zMFb%C2^hk0fN(%m0*265LNmZ)!wN7*KLbbq8UaA{1auJa2wp!^`o#huDPc4NLNR?p zE@mJB=mh`=BfnEomf&3wBwPRh_zkhFA1nrdt00_4bi2$P+KLn!cjN=0CupO3Leg$3 zp*Vm{2>k+tq!Nk%A+NXX^~lmZ}E0)ru(A`q6O1aeT4#SAh5kY%uwe*{*64`?9{h|TK{lms9t zVMO!^gQrlLafwQR&uH5D+yIa;xWn}w$_&dP-ZmCH63kNx)pmez0+e9HK7lI?Lbe@Z zCIIH03!8~Gbn zf+p*Bct|+_8A_;n`y?vsWCSI&<*x)yyDR;;ESm|WDWSu=9V-Fv4K$Kt?D8OWhX~-< z8M4JKx(QsRgh2tq34qYWSpHUUkm|e@h>8u?io3kMt+jNkPo$fU+`TO^E$=_ zAV@2L(Nh=zdBX|I7zlv)vLWhvxn(AR^nQB+a(@#wUK`rQ52NkQchOw{V?Bles;Gnx zuO~1Di)SVo=CHckmenU{((WCK0PvY$@A#*1=j-)CbAeSgo{@WXVb|Yr24@501Of;Q zgQUdn@s6RV_;ctHhZSwHy^XM+5McC+FpA(acq zkST#cFbNRUG6bnF(C#1)tpLs{oldkvBx7pL^j%9 z^aQ|o(0&Tt4lvfjK-P*ds`G^*Gl%u3PGSg&Ms9I z*zZ)`R3{W-EGbbsnIz4z4?~&D2QBA=kRHntC1hrXOE4OI7(xn09lZ7ozLsW{b=7 zbnCtL2cfv(eDh3zWQflPAv+AgOlsk^pSVZR4(AZM7hvEebZwgR987~DJRT$~4t`JN z@IV4P-6z6hXeZ}5TxI0SRjTv?3$ouKS*60hr&tvtLe{uv^Z_W4m}z-GL@GnHGIPk* zw6ctFod^P(OD!y`KXwnJ@4>QqH;FL@i7G0^fC~dyCpy$y;qkr9N%VyCOuRPafGQLB zzxU5Nx5-m}$bfT6kttLODx@M`to1wZ2XmNi7JNd^g%aAUV6e$$mBbisA;#D$#u!)` zw}J0?$bOnExiyeYuJhSrI5vUQ{Xnh5v4#|I^i3@pb{W7_{P2k5GK==kbAYr zd@D&R#;~Cu!m^6Z1Sv9BK^_RF-@KuRkuuEQ=LX6u&}L20<6F-P1JfjkL^$kk*d@$ZG_p zlDS-4dId>x;8Ix))Ft8KEW?C11O-;*xfWL`Qzk1{Ldf+^h!aB1=lxg-30(gpl+6{; zlAp7sn($go>tSNJPRTIkIh2%t4%H;e)d~Xy$^IHbwmS{eULGp}7eC>K>x%RdXHl9i z=pa>P`f>La2+w!sQ%|I9!8C>-&H_}9-U;=8E{GN8praR|_~}w{8h=S2<}S6&1}__C z{K0ykqcUgtgVR>NYFus(0ow+ctv$LRyQjfxf3DtV-(8H>5U@W7MVi`%u=AlE% - - - - - - - - - - - dart_web - - - - - - - - - - -
- -
- -
Captured
-
- -
- -
Captured
-
- -
- -
Captured
-
- -
- -
Captured
-
- - - diff --git a/dart/example_web_legacy/web/main.dart b/dart/example_web_legacy/web/main.dart deleted file mode 100644 index 506bedf159..0000000000 --- a/dart/example_web_legacy/web/main.dart +++ /dev/null @@ -1,136 +0,0 @@ -import 'dart:async'; -import 'dart:html'; - -import 'package:sentry/sentry.dart'; -import 'package:sentry/src/version.dart'; - -import 'event.dart'; - -// ATTENTION: Change the DSN below with your own to see the events in Sentry. Get one at sentry.io -const dsn = - 'https://e85b375ffb9f43cf8bdf9787768149e0@o447951.ingest.sentry.io/5428562'; - -Future main() async { - await Sentry.init( - (options) => options - ..dsn = dsn - ..debug = true - ..sendDefaultPii = true - ..addEventProcessor(TagEventProcessor()), - appRunner: runApp, - ); -} - -Future runApp() async { - print('runApp'); - - querySelector('#output')?.text = 'Your Dart app is running.'; - - await Sentry.addBreadcrumb( - Breadcrumb( - message: 'Authenticated user', - category: 'auth', - type: 'debug', - data: { - 'admin': true, - 'permissions': [1, 2, 3] - }, - ), - ); - - await Sentry.configureScope((scope) async { - scope - // ..fingerprint = ['example-dart'] - ..transaction = '/example/app' - ..level = SentryLevel.warning; - await scope.setTag('build', '579'); - // ignore: deprecated_member_use - await scope.setExtra('company-name', 'Dart Inc'); - - await scope.setUser( - SentryUser( - id: '800', - username: 'first-user', - email: 'first@user.lan', - // ipAddress: '127.0.0.1', - data: {'first-sign-in': '2020-01-01'}, - ), - ); - }); - - querySelector('#btEvent') - ?.onClick - .listen((event) => captureCompleteExampleEvent()); - querySelector('#btMessage')?.onClick.listen((event) => captureMessage()); - querySelector('#btException')?.onClick.listen((event) => captureException()); - querySelector('#btUnhandledException') - ?.onClick - .listen((event) => captureUnhandledException()); -} - -Future captureMessage() async { - print('Capturing Message : '); - final sentryId = await Sentry.captureMessage( - 'Message 2', - template: 'Message %s', - params: ['2'], - ); - print('capture message result : $sentryId'); - if (sentryId != SentryId.empty()) { - querySelector('#messageResult')?.style.display = 'block'; - } -} - -Future captureException() async { - try { - await buildCard(); - } catch (error, stackTrace) { - print('\nReporting the following stack trace: '); - final sentryId = await Sentry.captureException( - error, - stackTrace: stackTrace, - ); - - print('Capture exception : SentryId: $sentryId'); - - if (sentryId != SentryId.empty()) { - querySelector('#exceptionResult')?.style.display = 'block'; - } - } -} - -Future captureUnhandledException() async { - querySelector('#unhandledResult')?.style.display = 'block'; - - await buildCard(); -} - -Future captureCompleteExampleEvent() async { - print('\nReporting a complete event example: $sdkName'); - final sentryId = await Sentry.captureEvent(event); - - print('Response SentryId: $sentryId'); - - if (sentryId != SentryId.empty()) { - querySelector('#eventResult')?.style.display = 'block'; - } -} - -Future buildCard() async { - await loadData(); -} - -Future loadData() async { - await parseData(); -} - -Future parseData() async { - throw StateError('This is a test error'); -} - -class TagEventProcessor implements EventProcessor { - @override - SentryEvent? apply(SentryEvent event, Hint hint) { - return event..tags?.addAll({'page-locale': 'en-us'}); - } -} diff --git a/dart/example_web_legacy/web/styles.css b/dart/example_web_legacy/web/styles.css deleted file mode 100644 index cc035c95c9..0000000000 --- a/dart/example_web_legacy/web/styles.css +++ /dev/null @@ -1,14 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Roboto); - -html, body { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - font-family: 'Roboto', sans-serif; -} - -#output { - padding: 20px; - text-align: center; -} diff --git a/dart/test/example_web_compile_test.dart b/dart/test/example_web_compile_test.dart index 1a2a0cf13f..75777549ab 100644 --- a/dart/test/example_web_compile_test.dart +++ b/dart/test/example_web_compile_test.dart @@ -11,9 +11,7 @@ import 'package:test/test.dart'; // Tests for the following issue // https://github.com/getsentry/sentry-dart/issues/1893 void main() { - final dartVersion = Version.parse(Platform.version.split(' ')[0]); - final isLegacy = dartVersion < Version.parse('3.3.0'); - final exampleAppDir = isLegacy ? 'example_web_legacy' : 'example_web'; + final exampleAppDir = 'example_web'; final exampleAppWorkingDir = '${Directory.current.path}${Platform.pathSeparator}$exampleAppDir'; group('Compile $exampleAppDir', () { @@ -42,9 +40,8 @@ void main() { 'Could not compile main.dart, likely because of dart:io import.'); expect( compileResult.stdout, - contains(isLegacy - ? 'Succeeded after ' - : 'build_web_compilers:entrypoint on web/main.dart:Compiled')); + contains('build_web_compilers:entrypoint on web/main.dart:Compiled'), + ); }, timeout: Timeout(const Duration(minutes: 1)), // double of detault timeout ); diff --git a/flutter/lib/src/integrations/on_error_integration.dart b/flutter/lib/src/integrations/on_error_integration.dart index 5f8fc1506e..058714d7f4 100644 --- a/flutter/lib/src/integrations/on_error_integration.dart +++ b/flutter/lib/src/integrations/on_error_integration.dart @@ -14,7 +14,6 @@ typedef ErrorCallback = bool Function(Object exception, StackTrace stackTrace); /// - https://api.flutter.dev/flutter/dart-ui/PlatformDispatcher/onError.html /// /// Remarks: -/// - Only usable on Flutter >= 3.3.0. /// - Does not work on Flutter Web /// /// This is used instead of [RunZonedGuardedIntegration]. Not using the From fe75631aa71fbc6940d3784cee803c8563b8d891 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 14:47:25 +0100 Subject: [PATCH 04/21] run format --- dart/test/example_web_compile_test.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dart/test/example_web_compile_test.dart b/dart/test/example_web_compile_test.dart index 75777549ab..b5899d7b43 100644 --- a/dart/test/example_web_compile_test.dart +++ b/dart/test/example_web_compile_test.dart @@ -39,8 +39,8 @@ void main() { reason: 'Could not compile main.dart, likely because of dart:io import.'); expect( - compileResult.stdout, - contains('build_web_compilers:entrypoint on web/main.dart:Compiled'), + compileResult.stdout, + contains('build_web_compilers:entrypoint on web/main.dart:Compiled'), ); }, timeout: Timeout(const Duration(minutes: 1)), // double of detault timeout From b13b3c456ae5c00d6fa42e3beb8d56c612311c11 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 15:04:28 +0100 Subject: [PATCH 05/21] =?UTF-8?q?run=20dart=20fix=20=E2=80=94apply?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/min_version_test.yml | 4 ++-- dart/lib/sentry.dart | 2 +- dart/lib/src/protocol/sentry_event.dart | 2 +- dart/lib/src/sentry_client.dart | 2 +- dart/lib/src/version.dart | 2 +- dart/test/event_processor/enricher/io_enricher_test.dart | 2 +- .../event_processor/enricher/io_platform_memory_test.dart | 2 +- dart/test/event_processor/enricher/web_enricher_test.dart | 2 +- .../exception/io_exception_event_processor_test.dart | 2 +- dart/test/example_web_compile_test.dart | 3 +-- dart/test/http_client/io_client_provider_test.dart | 2 +- dart/test/initialization_test.dart | 2 +- dart/test/load_dart_debug_images_integration_test.dart | 2 +- dart/test/run_zoned_guarded_integration_test.dart | 2 +- dart/test/sentry_attachment_io_test.dart | 2 +- dart/test/sentry_browser_test.dart | 2 +- dart/test/sentry_envelope_vm_test.dart | 2 +- dart/test/sentry_io_client_test.dart | 2 +- dart/test/sentry_isolate_extension_test.dart | 2 +- dart/test/sentry_isolate_test.dart | 2 +- dart/test/version_test.dart | 2 +- dio/lib/sentry_dio.dart | 2 +- dio/test/version_test.dart | 2 +- drift/lib/sentry_drift.dart | 2 +- flutter/lib/sentry_flutter.dart | 2 +- flutter/lib/src/sentry_asset_bundle.dart | 2 +- flutter/lib/src/sentry_flutter.dart | 1 - .../test/android_platform_exception_event_processor_test.dart | 2 +- .../test/event_processor/screenshot_event_processor_test.dart | 2 +- .../url_filter/io_filter_event_processor_test.dart | 2 +- .../url_filter/web_url_filter_event_processor_test.dart | 2 +- flutter/test/file_system_transport_test.dart | 2 +- .../test/frame_tracking/frames_tracking_integration_test.dart | 2 +- flutter/test/initialization_test.dart | 2 +- flutter/test/integrations/init_native_sdk_test.dart | 2 +- flutter/test/integrations/load_contexts_integration_test.dart | 2 +- .../test/integrations/load_contexts_integrations_test.dart | 2 +- flutter/test/integrations/load_image_list_test.dart | 2 +- flutter/test/integrations/native_app_start_handler_test.dart | 2 +- .../test/integrations/native_app_start_integration_test.dart | 2 +- flutter/test/integrations/native_sdk_integration_test.dart | 2 +- flutter/test/native_scope_observer_test.dart | 2 +- flutter/test/profiling_test.dart | 2 +- flutter/test/replay/replay_native_test.dart | 2 +- flutter/test/replay/scheduled_recorder_test.dart | 2 +- flutter/test/screenshot/recorder_test.dart | 2 +- flutter/test/screenshot/sentry_screenshot_widget_test.dart | 2 +- flutter/test/sentry_native/sentry_native_test.dart | 2 +- flutter/test/sentry_native_channel_test.dart | 2 +- .../user_interaction/sentry_user_interaction_widget_test.dart | 2 +- flutter/test/version_test.dart | 2 +- .../test/view_hierarchy/view_hierarchy_integration_test.dart | 2 +- hive/lib/sentry_hive.dart | 2 +- isar/lib/sentry_isar.dart | 2 +- logging/lib/sentry_logging.dart | 2 +- logging/test/version_test.dart | 2 +- sqflite/lib/sentry_sqflite.dart | 2 +- sqflite/test/sentry_batch_test.dart | 2 +- sqflite/test/sentry_database_test.dart | 2 +- sqflite/test/sentry_sqflite_database_factory_dart_test.dart | 2 +- sqflite/test/sentry_sqflite_test.dart | 2 +- sqflite/test/version_test.dart | 2 +- 62 files changed, 62 insertions(+), 64 deletions(-) diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index d12ee000bf..3a51f1dbcb 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -53,7 +53,7 @@ jobs: - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # pin@v2.16.0 with: - flutter-version: "3.0.0" + flutter-version: "3.24.0" - name: Build iOS run: | @@ -70,7 +70,7 @@ jobs: - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 # pin@v2.16.0 with: - flutter-version: "3.0.0" + flutter-version: "3.24.0" - name: Build web run: | diff --git a/dart/lib/sentry.dart b/dart/lib/sentry.dart index cbfa514b36..f9ce19842b 100644 --- a/dart/lib/sentry.dart +++ b/dart/lib/sentry.dart @@ -3,7 +3,7 @@ // found in the LICENSE file. /// A pure Dart client for Sentry.io crash reporting. -library sentry_dart; +library; export 'src/run_zoned_guarded_integration.dart'; export 'src/hub.dart'; diff --git a/dart/lib/src/protocol/sentry_event.dart b/dart/lib/src/protocol/sentry_event.dart index fe7e0af47f..3686271c7f 100644 --- a/dart/lib/src/protocol/sentry_event.dart +++ b/dart/lib/src/protocol/sentry_event.dart @@ -100,7 +100,7 @@ class SentryEvent with SentryEventLike { /// If this behavior is undesirable, consider using a custom formatted /// [message] instead. dynamic get throwable => (_throwable is ThrowableMechanism) - ? (_throwable as ThrowableMechanism).throwable + ? _throwable.throwable : _throwable; /// A throwable decorator that holds a [Mechanism] related to the decorated diff --git a/dart/lib/src/sentry_client.dart b/dart/lib/src/sentry_client.dart index f5a893b45a..bcc7981885 100644 --- a/dart/lib/src/sentry_client.dart +++ b/dart/lib/src/sentry_client.dart @@ -631,7 +631,7 @@ class SentryClient { bool _sampleRate() { if (_options.sampleRate != null && _random != null) { - return (_options.sampleRate! < _random!.nextDouble()); + return (_options.sampleRate! < _random.nextDouble()); } return false; } diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index 8e2aa7ddea..477e94c8db 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -6,7 +6,7 @@ /// tool used to submit events to Sentry.io. /// /// This library contains Sentry.io SDK constants used by this package. -library version; +library; /// The SDK version reported to Sentry.io in the submitted events. const String sdkVersion = '8.11.0-beta.1'; diff --git a/dart/test/event_processor/enricher/io_enricher_test.dart b/dart/test/event_processor/enricher/io_enricher_test.dart index a5d40e8b66..4f303c1e65 100644 --- a/dart/test/event_processor/enricher/io_enricher_test.dart +++ b/dart/test/event_processor/enricher/io_enricher_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'dart:io'; diff --git a/dart/test/event_processor/enricher/io_platform_memory_test.dart b/dart/test/event_processor/enricher/io_platform_memory_test.dart index ce2c8474f4..4ba623db99 100644 --- a/dart/test/event_processor/enricher/io_platform_memory_test.dart +++ b/dart/test/event_processor/enricher/io_platform_memory_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'dart:io'; diff --git a/dart/test/event_processor/enricher/web_enricher_test.dart b/dart/test/event_processor/enricher/web_enricher_test.dart index 39502fc134..dbf2457452 100644 --- a/dart/test/event_processor/enricher/web_enricher_test.dart +++ b/dart/test/event_processor/enricher/web_enricher_test.dart @@ -1,5 +1,5 @@ @TestOn('browser') -library dart_test; +library; import 'package:sentry/sentry.dart'; import 'package:sentry/src/event_processor/enricher/html_enricher_event_processor.dart' diff --git a/dart/test/event_processor/exception/io_exception_event_processor_test.dart b/dart/test/event_processor/exception/io_exception_event_processor_test.dart index 9523038638..335f45ab2b 100644 --- a/dart/test/event_processor/exception/io_exception_event_processor_test.dart +++ b/dart/test/event_processor/exception/io_exception_event_processor_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'dart:io'; diff --git a/dart/test/example_web_compile_test.dart b/dart/test/example_web_compile_test.dart index b5899d7b43..20e2509b6f 100644 --- a/dart/test/example_web_compile_test.dart +++ b/dart/test/example_web_compile_test.dart @@ -1,11 +1,10 @@ @TestOn('vm') -library dart_test; +library; import 'dart:async'; import 'dart:convert'; import 'dart:io'; -import 'package:version/version.dart'; import 'package:test/test.dart'; // Tests for the following issue diff --git a/dart/test/http_client/io_client_provider_test.dart b/dart/test/http_client/io_client_provider_test.dart index 81d05c1540..211c3e3900 100644 --- a/dart/test/http_client/io_client_provider_test.dart +++ b/dart/test/http_client/io_client_provider_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'dart:io'; diff --git a/dart/test/initialization_test.dart b/dart/test/initialization_test.dart index 42766ac93d..46c0cd35c6 100644 --- a/dart/test/initialization_test.dart +++ b/dart/test/initialization_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'package:sentry/sentry.dart'; import 'package:test/test.dart'; diff --git a/dart/test/load_dart_debug_images_integration_test.dart b/dart/test/load_dart_debug_images_integration_test.dart index 84d478ab08..4b1309607d 100644 --- a/dart/test/load_dart_debug_images_integration_test.dart +++ b/dart/test/load_dart_debug_images_integration_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'dart:async'; diff --git a/dart/test/run_zoned_guarded_integration_test.dart b/dart/test/run_zoned_guarded_integration_test.dart index 71f87e9d12..d77bede934 100644 --- a/dart/test/run_zoned_guarded_integration_test.dart +++ b/dart/test/run_zoned_guarded_integration_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'package:sentry/sentry.dart'; import 'package:test/test.dart'; diff --git a/dart/test/sentry_attachment_io_test.dart b/dart/test/sentry_attachment_io_test.dart index 29a0076bfe..1dd1850f41 100644 --- a/dart/test/sentry_attachment_io_test.dart +++ b/dart/test/sentry_attachment_io_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'dart:io'; diff --git a/dart/test/sentry_browser_test.dart b/dart/test/sentry_browser_test.dart index eaccfa1d03..cb83f510c9 100644 --- a/dart/test/sentry_browser_test.dart +++ b/dart/test/sentry_browser_test.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @TestOn('browser') -library dart_test; +library; import 'package:test/test.dart'; diff --git a/dart/test/sentry_envelope_vm_test.dart b/dart/test/sentry_envelope_vm_test.dart index e5f0276704..ef68d6716d 100644 --- a/dart/test/sentry_envelope_vm_test.dart +++ b/dart/test/sentry_envelope_vm_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'dart:convert'; import 'dart:io'; diff --git a/dart/test/sentry_io_client_test.dart b/dart/test/sentry_io_client_test.dart index 9ffe1f319c..a775073b7c 100644 --- a/dart/test/sentry_io_client_test.dart +++ b/dart/test/sentry_io_client_test.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @TestOn('vm') -library dart_test; +library; import 'dart:io'; diff --git a/dart/test/sentry_isolate_extension_test.dart b/dart/test/sentry_isolate_extension_test.dart index 89c6a0fe4b..8cffea9c1c 100644 --- a/dart/test/sentry_isolate_extension_test.dart +++ b/dart/test/sentry_isolate_extension_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'dart:isolate'; diff --git a/dart/test/sentry_isolate_test.dart b/dart/test/sentry_isolate_test.dart index 07347d5585..597c1de795 100644 --- a/dart/test/sentry_isolate_test.dart +++ b/dart/test/sentry_isolate_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'package:sentry/src/hub.dart'; import 'package:sentry/src/protocol/sentry_level.dart'; diff --git a/dart/test/version_test.dart b/dart/test/version_test.dart index f2022bbba2..ada7310338 100644 --- a/dart/test/version_test.dart +++ b/dart/test/version_test.dart @@ -3,7 +3,7 @@ // found in the LICENSE file. @TestOn('vm') -library dart_test; +library; import 'dart:io'; diff --git a/dio/lib/sentry_dio.dart b/dio/lib/sentry_dio.dart index 5c1ce5d084..d0238e4c10 100644 --- a/dio/lib/sentry_dio.dart +++ b/dio/lib/sentry_dio.dart @@ -1,4 +1,4 @@ -library sentry_dio; +library; export 'src/sentry_dio_extension.dart'; diff --git a/dio/test/version_test.dart b/dio/test/version_test.dart index 2e0c6a8b14..ebfddbcf10 100644 --- a/dio/test/version_test.dart +++ b/dio/test/version_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dio_test; +library; import 'dart:io'; diff --git a/drift/lib/sentry_drift.dart b/drift/lib/sentry_drift.dart index ba84220b42..d2df194d04 100644 --- a/drift/lib/sentry_drift.dart +++ b/drift/lib/sentry_drift.dart @@ -1,3 +1,3 @@ -library sentry_drift; +library; export 'src/sentry_query_executor.dart'; diff --git a/flutter/lib/sentry_flutter.dart b/flutter/lib/sentry_flutter.dart index 48b0572976..607ffc8b48 100644 --- a/flutter/lib/sentry_flutter.dart +++ b/flutter/lib/sentry_flutter.dart @@ -1,5 +1,5 @@ /// A Flutter client for Sentry.io crash reporting. -library sentry_flutter; +library; // ignore: invalid_export_of_internal_element export 'package:sentry/sentry.dart'; diff --git a/flutter/lib/src/sentry_asset_bundle.dart b/flutter/lib/src/sentry_asset_bundle.dart index 3ab510f767..29bfe50bfc 100644 --- a/flutter/lib/src/sentry_asset_bundle.dart +++ b/flutter/lib/src/sentry_asset_bundle.dart @@ -251,7 +251,7 @@ class SentryAssetBundle implements AssetBundle { ImmutableBuffer data; try { - data = await _bundle.loadBuffer(key);; + data = await _bundle.loadBuffer(key); _setDataLength(data, span); span?.status = SpanStatus.ok(); } catch (exception) { diff --git a/flutter/lib/src/sentry_flutter.dart b/flutter/lib/src/sentry_flutter.dart index 1e07e5233e..03c8888c0c 100644 --- a/flutter/lib/src/sentry_flutter.dart +++ b/flutter/lib/src/sentry_flutter.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'dart:ui'; import 'package:flutter/widgets.dart'; import 'package:meta/meta.dart'; diff --git a/flutter/test/android_platform_exception_event_processor_test.dart b/flutter/test/android_platform_exception_event_processor_test.dart index 25ea8b2c6b..c42505584f 100644 --- a/flutter/test/android_platform_exception_event_processor_test.dart +++ b/flutter/test/android_platform_exception_event_processor_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; // ignore_for_file: invalid_use_of_internal_member import 'package:flutter/services.dart'; diff --git a/flutter/test/event_processor/screenshot_event_processor_test.dart b/flutter/test/event_processor/screenshot_event_processor_test.dart index 635d2a5770..3f9b96e044 100644 --- a/flutter/test/event_processor/screenshot_event_processor_test.dart +++ b/flutter/test/event_processor/screenshot_event_processor_test.dart @@ -1,5 +1,5 @@ @Tags(['canvasKit']) // Web renderer where this test can run -library flutter_test; +library; import 'dart:math'; import 'dart:ui'; diff --git a/flutter/test/event_processor/url_filter/io_filter_event_processor_test.dart b/flutter/test/event_processor/url_filter/io_filter_event_processor_test.dart index 186858888d..a9f6f3617e 100644 --- a/flutter/test/event_processor/url_filter/io_filter_event_processor_test.dart +++ b/flutter/test/event_processor/url_filter/io_filter_event_processor_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; diff --git a/flutter/test/event_processor/url_filter/web_url_filter_event_processor_test.dart b/flutter/test/event_processor/url_filter/web_url_filter_event_processor_test.dart index bc80d45e6b..1fa61d1697 100644 --- a/flutter/test/event_processor/url_filter/web_url_filter_event_processor_test.dart +++ b/flutter/test/event_processor/url_filter/web_url_filter_event_processor_test.dart @@ -1,5 +1,5 @@ @TestOn('browser') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; diff --git a/flutter/test/file_system_transport_test.dart b/flutter/test/file_system_transport_test.dart index 91340f7fb6..0177efb923 100644 --- a/flutter/test/file_system_transport_test.dart +++ b/flutter/test/file_system_transport_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'dart:convert'; diff --git a/flutter/test/frame_tracking/frames_tracking_integration_test.dart b/flutter/test/frame_tracking/frames_tracking_integration_test.dart index f16069f447..b1fff1bb8f 100644 --- a/flutter/test/frame_tracking/frames_tracking_integration_test.dart +++ b/flutter/test/frame_tracking/frames_tracking_integration_test.dart @@ -1,6 +1,6 @@ // ignore_for_file: invalid_use_of_internal_member @TestOn('vm') -library flutter_test; +library; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/flutter/test/initialization_test.dart b/flutter/test/initialization_test.dart index 527b51b247..14b98b051f 100644 --- a/flutter/test/initialization_test.dart +++ b/flutter/test/initialization_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; diff --git a/flutter/test/integrations/init_native_sdk_test.dart b/flutter/test/integrations/init_native_sdk_test.dart index 2c9680b3c2..37fc5e57a0 100644 --- a/flutter/test/integrations/init_native_sdk_test.dart +++ b/flutter/test/integrations/init_native_sdk_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/flutter/test/integrations/load_contexts_integration_test.dart b/flutter/test/integrations/load_contexts_integration_test.dart index caed2f3293..147d24240e 100644 --- a/flutter/test/integrations/load_contexts_integration_test.dart +++ b/flutter/test/integrations/load_contexts_integration_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; diff --git a/flutter/test/integrations/load_contexts_integrations_test.dart b/flutter/test/integrations/load_contexts_integrations_test.dart index 7add3f7929..acb7889f7c 100644 --- a/flutter/test/integrations/load_contexts_integrations_test.dart +++ b/flutter/test/integrations/load_contexts_integrations_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; diff --git a/flutter/test/integrations/load_image_list_test.dart b/flutter/test/integrations/load_image_list_test.dart index 95e31a625c..d4c3da3548 100644 --- a/flutter/test/integrations/load_image_list_test.dart +++ b/flutter/test/integrations/load_image_list_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; diff --git a/flutter/test/integrations/native_app_start_handler_test.dart b/flutter/test/integrations/native_app_start_handler_test.dart index 375231a45f..de55e42e74 100644 --- a/flutter/test/integrations/native_app_start_handler_test.dart +++ b/flutter/test/integrations/native_app_start_handler_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:collection/collection.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/flutter/test/integrations/native_app_start_integration_test.dart b/flutter/test/integrations/native_app_start_integration_test.dart index 4696dc8987..0cb96a5b80 100644 --- a/flutter/test/integrations/native_app_start_integration_test.dart +++ b/flutter/test/integrations/native_app_start_integration_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'dart:async'; import 'dart:core'; diff --git a/flutter/test/integrations/native_sdk_integration_test.dart b/flutter/test/integrations/native_sdk_integration_test.dart index 8645a80aa2..7239166b93 100644 --- a/flutter/test/integrations/native_sdk_integration_test.dart +++ b/flutter/test/integrations/native_sdk_integration_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; diff --git a/flutter/test/native_scope_observer_test.dart b/flutter/test/native_scope_observer_test.dart index e22136bc1b..feb40f5416 100644 --- a/flutter/test/native_scope_observer_test.dart +++ b/flutter/test/native_scope_observer_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; diff --git a/flutter/test/profiling_test.dart b/flutter/test/profiling_test.dart index 510daac9f0..fb0c4ce905 100644 --- a/flutter/test/profiling_test.dart +++ b/flutter/test/profiling_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; diff --git a/flutter/test/replay/replay_native_test.dart b/flutter/test/replay/replay_native_test.dart index 3b35f53c2e..a7c4c3cb85 100644 --- a/flutter/test/replay/replay_native_test.dart +++ b/flutter/test/replay/replay_native_test.dart @@ -1,7 +1,7 @@ // ignore_for_file: invalid_use_of_internal_member @TestOn('vm') -library flutter_test; +library; import 'dart:async'; diff --git a/flutter/test/replay/scheduled_recorder_test.dart b/flutter/test/replay/scheduled_recorder_test.dart index 603c2b24b2..945948948b 100644 --- a/flutter/test/replay/scheduled_recorder_test.dart +++ b/flutter/test/replay/scheduled_recorder_test.dart @@ -1,7 +1,7 @@ // For some reason, this test is not working in the browser but that's OK, we // don't support video recording anyway. @TestOn('vm') -library dart_test; +library; import 'dart:ui'; diff --git a/flutter/test/screenshot/recorder_test.dart b/flutter/test/screenshot/recorder_test.dart index 4ecb78cff6..72965a7568 100644 --- a/flutter/test/screenshot/recorder_test.dart +++ b/flutter/test/screenshot/recorder_test.dart @@ -1,7 +1,7 @@ // For some reason, this test is not working in the browser but that's OK, we // don't support video recording anyway. @TestOn('vm') -library dart_test; +library; import 'dart:ui'; diff --git a/flutter/test/screenshot/sentry_screenshot_widget_test.dart b/flutter/test/screenshot/sentry_screenshot_widget_test.dart index bedbfe8f1f..8a2c0e7e63 100644 --- a/flutter/test/screenshot/sentry_screenshot_widget_test.dart +++ b/flutter/test/screenshot/sentry_screenshot_widget_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; // ignore_for_file: invalid_use_of_internal_member import 'package:flutter/material.dart'; diff --git a/flutter/test/sentry_native/sentry_native_test.dart b/flutter/test/sentry_native/sentry_native_test.dart index 5f168a919d..9817bfb71a 100644 --- a/flutter/test/sentry_native/sentry_native_test.dart +++ b/flutter/test/sentry_native/sentry_native_test.dart @@ -2,7 +2,7 @@ // a browser. @TestOn('vm') doesn't help by itself in this case because imports // are still evaluated, thus causing a compilation failure. @TestOn('vm && (windows || linux)') -library sentry_native_test; +library; import 'package:flutter_test/flutter_test.dart'; diff --git a/flutter/test/sentry_native_channel_test.dart b/flutter/test/sentry_native_channel_test.dart index 3c2811267c..4fc6f670c5 100644 --- a/flutter/test/sentry_native_channel_test.dart +++ b/flutter/test/sentry_native_channel_test.dart @@ -1,7 +1,7 @@ // ignore_for_file: inference_failure_on_function_invocation @TestOn('vm') -library flutter_test; +library; import 'dart:typed_data'; diff --git a/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart b/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart index cdb27f9275..7d35c3deaa 100644 --- a/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart +++ b/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; // ignore_for_file: invalid_use_of_internal_member import 'dart:async'; diff --git a/flutter/test/version_test.dart b/flutter/test/version_test.dart index b97fd250b4..90c861d5c9 100644 --- a/flutter/test/version_test.dart +++ b/flutter/test/version_test.dart @@ -3,7 +3,7 @@ // found in the LICENSE file. @TestOn('vm') -library flutter_test; +library; import 'dart:io'; diff --git a/flutter/test/view_hierarchy/view_hierarchy_integration_test.dart b/flutter/test/view_hierarchy/view_hierarchy_integration_test.dart index c57fff8b5e..6c04ba5389 100644 --- a/flutter/test/view_hierarchy/view_hierarchy_integration_test.dart +++ b/flutter/test/view_hierarchy/view_hierarchy_integration_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:sentry_flutter/src/view_hierarchy/view_hierarchy_event_processor.dart'; diff --git a/hive/lib/sentry_hive.dart b/hive/lib/sentry_hive.dart index 03be720ca1..740ae6a1bf 100644 --- a/hive/lib/sentry_hive.dart +++ b/hive/lib/sentry_hive.dart @@ -1,4 +1,4 @@ -library sentry_hive; +library; import 'package:meta/meta.dart'; import 'package:hive/hive.dart'; diff --git a/isar/lib/sentry_isar.dart b/isar/lib/sentry_isar.dart index 75e63c47ea..ca3d24ed45 100644 --- a/isar/lib/sentry_isar.dart +++ b/isar/lib/sentry_isar.dart @@ -1,4 +1,4 @@ -library sentry_isar; +library; export 'src/sentry_isar.dart'; export 'src/sentry_isar_collection.dart'; diff --git a/logging/lib/sentry_logging.dart b/logging/lib/sentry_logging.dart index 9b56c3f433..236f075583 100644 --- a/logging/lib/sentry_logging.dart +++ b/logging/lib/sentry_logging.dart @@ -1,3 +1,3 @@ -library sentry_logging; +library; export 'src/logging_integration.dart'; diff --git a/logging/test/version_test.dart b/logging/test/version_test.dart index 316a1caaff..b9e5d69077 100644 --- a/logging/test/version_test.dart +++ b/logging/test/version_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'dart:io'; diff --git a/sqflite/lib/sentry_sqflite.dart b/sqflite/lib/sentry_sqflite.dart index 770831fb5b..a09ff17490 100644 --- a/sqflite/lib/sentry_sqflite.dart +++ b/sqflite/lib/sentry_sqflite.dart @@ -1,4 +1,4 @@ -library sentry_sqflite; +library; export 'src/sentry_database.dart'; export 'src/sentry_sqflite.dart'; diff --git a/sqflite/test/sentry_batch_test.dart b/sqflite/test/sentry_batch_test.dart index 50dc469ab3..974b8e2c04 100644 --- a/sqflite/test/sentry_batch_test.dart +++ b/sqflite/test/sentry_batch_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library sqflite_test; +library; import 'package:sentry/sentry.dart'; import 'package:sentry_sqflite/sentry_sqflite.dart'; diff --git a/sqflite/test/sentry_database_test.dart b/sqflite/test/sentry_database_test.dart index b97f97784e..db59e9a940 100644 --- a/sqflite/test/sentry_database_test.dart +++ b/sqflite/test/sentry_database_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library sqflite_test; +library; import 'package:sentry/sentry.dart'; import 'package:sentry/src/sentry_tracer.dart'; diff --git a/sqflite/test/sentry_sqflite_database_factory_dart_test.dart b/sqflite/test/sentry_sqflite_database_factory_dart_test.dart index 38bc23d404..d25ae1144d 100644 --- a/sqflite/test/sentry_sqflite_database_factory_dart_test.dart +++ b/sqflite/test/sentry_sqflite_database_factory_dart_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library sqflite_test; +library; import 'package:sentry/sentry.dart'; import 'package:sentry/src/sentry_tracer.dart'; diff --git a/sqflite/test/sentry_sqflite_test.dart b/sqflite/test/sentry_sqflite_test.dart index f54cfda980..bae90f97d5 100644 --- a/sqflite/test/sentry_sqflite_test.dart +++ b/sqflite/test/sentry_sqflite_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library sqflite_test; +library; import 'package:sentry/sentry.dart'; import 'package:sentry_sqflite/sentry_sqflite.dart'; diff --git a/sqflite/test/version_test.dart b/sqflite/test/version_test.dart index 98e02ca499..01764f33f5 100644 --- a/sqflite/test/version_test.dart +++ b/sqflite/test/version_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library sqflite_test; +library; import 'dart:io'; From 74777b2b2407fdaec56237b23a24cb259699313e Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 15:13:53 +0100 Subject: [PATCH 06/21] add v9 to changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fc074e605..a271b52e8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,10 @@ - Linux native error & obfuscation support ([#2431](https://github.com/getsentry/sentry-dart/pull/2431)) - Improve Device context on plain Dart and Flutter desktop apps ([#2441](https://github.com/getsentry/sentry-dart/pull/2441)) +## 9.0.0 + +- Bump Dart and Flutter version, Dart to 3.5.0, Flutter to 3.24.0 ([#2643](https://github.com/getsentry/sentry-dart/pull/2643)) + ## 8.11.0-beta.1 ### Features From 6cfe31c2b26f73430345a52f7af67ed19df505ca Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 15:18:09 +0100 Subject: [PATCH 07/21] remove older dart sdk version from dart workflow --- .github/workflows/dart.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 8f2c2f2b10..99270fc994 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -29,13 +29,7 @@ jobs: matrix: os: [ubuntu] sdk: - - '2.18' - - '2.19' - - '3.0' - - '3.1' - - '3.2' - - '3.3' - - '3.4' + - '3.5' - stable - beta include: From 09e546f2699d3ca0cd49baec1c8ea61196cf0112 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 15:33:29 +0100 Subject: [PATCH 08/21] fix errors --- flutter/lib/src/native/c/binding.dart | 4 +-- flutter/lib/src/native/cocoa/binding.dart | 36 +++++++++++------------ flutter/lib/src/sentry_asset_bundle.dart | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/flutter/lib/src/native/c/binding.dart b/flutter/lib/src/native/c/binding.dart index 5d944edf0b..aed9e202ce 100644 --- a/flutter/lib/src/native/c/binding.dart +++ b/flutter/lib/src/native/c/binding.dart @@ -869,7 +869,7 @@ class SentryNative { /// frozen but lists and dicts are not and can be frozen on demand. This /// automatically happens for some shared values in the event payload like /// the module list. -class sentry_value_u extends ffi.Union { +base class sentry_value_u extends ffi.Union { @ffi.Uint64() external int _bits; @@ -891,4 +891,4 @@ abstract class sentry_value_type_t { /// The Sentry Client Options. /// /// See https://docs.sentry.io/platforms/native/configuration/ -class sentry_options_s extends ffi.Opaque {} +base class sentry_options_s extends ffi.Opaque {} diff --git a/flutter/lib/src/native/cocoa/binding.dart b/flutter/lib/src/native/cocoa/binding.dart index 8b895c1725..7479c6d348 100644 --- a/flutter/lib/src/native/cocoa/binding.dart +++ b/flutter/lib/src/native/cocoa/binding.dart @@ -31281,13 +31281,13 @@ class NSObject extends _ObjCWrapper { } } -class ObjCSel extends ffi.Opaque {} +base class ObjCSel extends ffi.Opaque {} -class ObjCObject extends ffi.Opaque {} +base class ObjCObject extends ffi.Opaque {} typedef instancetype = ffi.Pointer; -class _NSZone extends ffi.Opaque {} +base class _NSZone extends ffi.Opaque {} class Protocol extends _ObjCWrapper { Protocol._(ffi.Pointer id, SentryCocoa lib, @@ -34449,7 +34449,7 @@ class NSData extends NSObject { } } -class _NSRange extends ffi.Struct { +base class _NSRange extends ffi.Struct { @ffi.UnsignedLong() external int location; @@ -35903,7 +35903,7 @@ class NSValue extends NSObject { } } -class CGPoint extends ffi.Struct { +base class CGPoint extends ffi.Struct { @ffi.Double() external double x; @@ -35911,7 +35911,7 @@ class CGPoint extends ffi.Struct { external double y; } -class CGSize extends ffi.Struct { +base class CGSize extends ffi.Struct { @ffi.Double() external double width; @@ -35919,13 +35919,13 @@ class CGSize extends ffi.Struct { external double height; } -class CGRect extends ffi.Struct { +base class CGRect extends ffi.Struct { external CGPoint origin; external CGSize size; } -class NSEdgeInsets extends ffi.Struct { +base class NSEdgeInsets extends ffi.Struct { @ffi.Double() external double top; @@ -36946,7 +36946,7 @@ class ObjCBlock_ObjCObject_NSError_NSString extends _ObjCBlockBase { } } -class _ObjCBlockDesc extends ffi.Struct { +base class _ObjCBlockDesc extends ffi.Struct { @ffi.UnsignedLong() external int reserved; @@ -36960,7 +36960,7 @@ class _ObjCBlockDesc extends ffi.Struct { external ffi.Pointer signature; } -class _ObjCBlock extends ffi.Struct { +base class _ObjCBlock extends ffi.Struct { external ffi.Pointer isa; @ffi.Int() @@ -38990,7 +38990,7 @@ class ObjCBlock_bool_ObjCObject_ObjCObject_bool extends _ObjCBlockBase { } } -class NSFastEnumerationState extends ffi.Struct { +base class NSFastEnumerationState extends ffi.Struct { @ffi.UnsignedLong() external int state; @@ -47077,7 +47077,7 @@ class NSRunLoop extends NSObject { } } -class __CFRunLoop extends ffi.Opaque {} +base class __CFRunLoop extends ffi.Opaque {} class NSTimer extends NSObject { NSTimer._(ffi.Pointer id, SentryCocoa lib, @@ -49051,14 +49051,14 @@ class NSAppleEventDescriptor extends NSObject { } @ffi.Packed(2) -class AEDesc extends ffi.Struct { +base class AEDesc extends ffi.Struct { @ffi.UnsignedInt() external int descriptorType; external ffi.Pointer> dataHandle; } -class OpaqueAEDataStorageType extends ffi.Opaque {} +base class OpaqueAEDataStorageType extends ffi.Opaque {} abstract class NSAppleEventSendOptions { static const int NSAppleEventSendNoReply = 1; @@ -57232,7 +57232,7 @@ class NSScanner extends NSObject { } } -class NSDecimal extends ffi.Opaque {} +base class NSDecimal extends ffi.Opaque {} class NSException extends NSObject { NSException._(ffi.Pointer id, SentryCocoa lib, @@ -61982,7 +61982,7 @@ class NSProcessInfo extends NSObject { } } -class NSOperatingSystemVersion extends ffi.Struct { +base class NSOperatingSystemVersion extends ffi.Struct { @ffi.Long() external int majorVersion; @@ -64007,9 +64007,9 @@ abstract class NSURLCredentialPersistence { static const int NSURLCredentialPersistenceSynchronizable = 3; } -class __SecIdentity extends ffi.Opaque {} +base class __SecIdentity extends ffi.Opaque {} -class __SecTrust extends ffi.Opaque {} +base class __SecTrust extends ffi.Opaque {} class NSURLProtectionSpace extends NSObject { NSURLProtectionSpace._(ffi.Pointer id, SentryCocoa lib, diff --git a/flutter/lib/src/sentry_asset_bundle.dart b/flutter/lib/src/sentry_asset_bundle.dart index 29bfe50bfc..e4fff4ef04 100644 --- a/flutter/lib/src/sentry_asset_bundle.dart +++ b/flutter/lib/src/sentry_asset_bundle.dart @@ -151,7 +151,7 @@ class SentryAssetBundle implements AssetBundle { // the completer. // ignore: unawaited_futures runZonedGuarded(() async { - final data = await _loadStructuredBinaryDataWrapper( + final data = await loadStructuredBinaryData( key, (value) async => await _wrapBinaryParsing(parser, value, key, span), ); From 1ba56deb12547785dedbd215d9c0bf11ce428a78 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 15:33:59 +0100 Subject: [PATCH 09/21] fix errors --- dart/test/sentry_exception_factory_test.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dart/test/sentry_exception_factory_test.dart b/dart/test/sentry_exception_factory_test.dart index 643414ab67..ad6df2a724 100644 --- a/dart/test/sentry_exception_factory_test.dart +++ b/dart/test/sentry_exception_factory_test.dart @@ -279,7 +279,7 @@ ${StackTraceErrorStackTrace()}'''; } } -class StackTraceErrorStackTrace extends StackTrace { +class StackTraceErrorStackTrace implements StackTrace { @override String toString() { return ''' @@ -318,7 +318,7 @@ ${SentryStackTrace()}'''; } } -class SentryStackTrace extends StackTrace { +class SentryStackTrace implements StackTrace { @override String toString() { return ''' From dd87114feb12dd22fb0dc99b3ddffd7b898fe79b Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 15:34:56 +0100 Subject: [PATCH 10/21] format --- dart/lib/src/protocol/sentry_event.dart | 5 ++--- flutter/example/lib/main.dart | 10 ++++------ flutter/lib/src/integrations/on_error_integration.dart | 2 +- flutter/lib/src/sentry_flutter.dart | 2 +- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/dart/lib/src/protocol/sentry_event.dart b/dart/lib/src/protocol/sentry_event.dart index 3686271c7f..da0b0050b5 100644 --- a/dart/lib/src/protocol/sentry_event.dart +++ b/dart/lib/src/protocol/sentry_event.dart @@ -99,9 +99,8 @@ class SentryEvent with SentryEventLike { /// If it's an Error, with a stackTrace, the stackTrace is logged. /// If this behavior is undesirable, consider using a custom formatted /// [message] instead. - dynamic get throwable => (_throwable is ThrowableMechanism) - ? _throwable.throwable - : _throwable; + dynamic get throwable => + (_throwable is ThrowableMechanism) ? _throwable.throwable : _throwable; /// A throwable decorator that holds a [Mechanism] related to the decorated /// [throwable] diff --git a/flutter/example/lib/main.dart b/flutter/example/lib/main.dart index ff0ef75a89..afd6263073 100644 --- a/flutter/example/lib/main.dart +++ b/flutter/example/lib/main.dart @@ -347,12 +347,10 @@ class MainScaffold extends StatelessWidget { ), TooltipButton( onPressed: () { - WidgetsBinding.instance.platformDispatcher - .onError - ?.call( - Exception('PlatformDispatcher.onError'), - StackTrace.current, - ); + WidgetsBinding.instance.platformDispatcher.onError?.call( + Exception('PlatformDispatcher.onError'), + StackTrace.current, + ); }, text: 'This requires additional setup: options.addIntegration(OnErrorIntegration());', diff --git a/flutter/lib/src/integrations/on_error_integration.dart b/flutter/lib/src/integrations/on_error_integration.dart index 058714d7f4..e78cab6cc7 100644 --- a/flutter/lib/src/integrations/on_error_integration.dart +++ b/flutter/lib/src/integrations/on_error_integration.dart @@ -111,7 +111,7 @@ class PlatformDispatcherWrapper { PlatformDispatcherWrapper(this._dispatcher); final PlatformDispatcher? _dispatcher; - + ErrorCallback? get onError => _dispatcher?.onError; set onError(ErrorCallback? callback) { diff --git a/flutter/lib/src/sentry_flutter.dart b/flutter/lib/src/sentry_flutter.dart index 03c8888c0c..bf6272a1f7 100644 --- a/flutter/lib/src/sentry_flutter.dart +++ b/flutter/lib/src/sentry_flutter.dart @@ -62,7 +62,7 @@ mixin SentryFlutter { if (options.platformChecker.hasNativeIntegration) { _native = createBinding(options); } - + // Flutter Web don't capture [Future] errors if using [PlatformDispatcher.onError] and not // the [runZonedGuarded]. // likely due to https://github.com/flutter/flutter/issues/100277 From 3e8fc9a394ef3521282c3ccd2b0c681b8741683a Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 17:53:46 +0100 Subject: [PATCH 11/21] fix asset bundle --- flutter/lib/src/sentry_asset_bundle.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flutter/lib/src/sentry_asset_bundle.dart b/flutter/lib/src/sentry_asset_bundle.dart index e4fff4ef04..dd5b2662ab 100644 --- a/flutter/lib/src/sentry_asset_bundle.dart +++ b/flutter/lib/src/sentry_asset_bundle.dart @@ -151,7 +151,7 @@ class SentryAssetBundle implements AssetBundle { // the completer. // ignore: unawaited_futures runZonedGuarded(() async { - final data = await loadStructuredBinaryData( + final data = await _bundle.loadStructuredBinaryData( key, (value) async => await _wrapBinaryParsing(parser, value, key, span), ); From 47708a4d41a24ff8ea28e112df7f00f539da0607 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 17:53:59 +0100 Subject: [PATCH 12/21] load minSdkVersion from flutter.minSdkVersion --- min_version_test/android/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/min_version_test/android/app/build.gradle b/min_version_test/android/app/build.gradle index f183f2bfd5..e3832495a0 100644 --- a/min_version_test/android/app/build.gradle +++ b/min_version_test/android/app/build.gradle @@ -48,7 +48,7 @@ android { applicationId "com.example.minversiontest" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. - minSdkVersion 19 + minSdkVersion flutter.minSdkVersion targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName From 7a4b0559b5715e56079696efe4aa30016f0fb7fc Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 18:12:58 +0100 Subject: [PATCH 13/21] set compile/target sdk versions to 34 --- flutter/android/build.gradle | 2 +- min_version_test/android/app/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index e91208507f..7cdfa6d40e 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -35,7 +35,7 @@ android { defaultConfig { minSdkVersion 19 - targetSdkVersion 33 + targetSdkVersion 34 ndk { // Flutter does not currently support building for x86 Android (See Issue 9253). diff --git a/min_version_test/android/app/build.gradle b/min_version_test/android/app/build.gradle index e3832495a0..2286767d8b 100644 --- a/min_version_test/android/app/build.gradle +++ b/min_version_test/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 33 + compileSdkVersion 34 ndkVersion '21.4.7075529' compileOptions { @@ -49,7 +49,7 @@ android { // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. minSdkVersion flutter.minSdkVersion - targetSdkVersion 33 + targetSdkVersion 34 versionCode flutterVersionCode.toInteger() versionName flutterVersionName From a835137f06b1dbc0eb891b610f0d014892b6e4ba Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 18:16:19 +0100 Subject: [PATCH 14/21] run dart fix apply --- dart/test/sentry_run_zoned_guarded_test.dart | 2 +- flutter/lib/src/screenshot/recorder.dart | 2 +- flutter/test/integrations/web_sdk_integration_test.dart | 2 +- flutter/test/native_memory_test.dart | 2 +- flutter/test/replay/replay_integration_test.dart | 2 +- flutter/test/web/sentry_js_bundles_test.dart | 2 +- flutter/test/web/sentry_script_loader_test.dart | 2 +- flutter/test/web/sentry_script_loader_tt_custom_test.dart | 2 +- flutter/test/web/sentry_script_loader_tt_forbidden_test.dart | 2 +- flutter/test/web/sentry_web_test.dart | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/dart/test/sentry_run_zoned_guarded_test.dart b/dart/test/sentry_run_zoned_guarded_test.dart index 86bc6741c1..1fd06310dd 100644 --- a/dart/test/sentry_run_zoned_guarded_test.dart +++ b/dart/test/sentry_run_zoned_guarded_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library dart_test; +library; import 'dart:async'; diff --git a/flutter/lib/src/screenshot/recorder.dart b/flutter/lib/src/screenshot/recorder.dart index 497eb4ebfd..3869e4e1b3 100644 --- a/flutter/lib/src/screenshot/recorder.dart +++ b/flutter/lib/src/screenshot/recorder.dart @@ -118,7 +118,7 @@ class ScreenshotRecorder { List? _obscureSync(_Capture capture) { if (_maskingConfig != null) { - final filter = WidgetFilter(_maskingConfig!, options.logger); + final filter = WidgetFilter(_maskingConfig, options.logger); final colorScheme = capture.context.findColorScheme(); filter.obscure( root: capture.root, diff --git a/flutter/test/integrations/web_sdk_integration_test.dart b/flutter/test/integrations/web_sdk_integration_test.dart index 7057adcab3..9521e4c34d 100644 --- a/flutter/test/integrations/web_sdk_integration_test.dart +++ b/flutter/test/integrations/web_sdk_integration_test.dart @@ -1,5 +1,5 @@ @TestOn('browser') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; diff --git a/flutter/test/native_memory_test.dart b/flutter/test/native_memory_test.dart index 185590ac69..8590f8a6ac 100644 --- a/flutter/test/native_memory_test.dart +++ b/flutter/test/native_memory_test.dart @@ -1,5 +1,5 @@ @TestOn('vm') -library flutter_test; +library; import 'dart:typed_data'; diff --git a/flutter/test/replay/replay_integration_test.dart b/flutter/test/replay/replay_integration_test.dart index e8a0bc8a27..9a0cc54e3d 100644 --- a/flutter/test/replay/replay_integration_test.dart +++ b/flutter/test/replay/replay_integration_test.dart @@ -1,7 +1,7 @@ // ignore_for_file: invalid_use_of_internal_member @TestOn('vm') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; diff --git a/flutter/test/web/sentry_js_bundles_test.dart b/flutter/test/web/sentry_js_bundles_test.dart index a962f7231a..392b490bbf 100644 --- a/flutter/test/web/sentry_js_bundles_test.dart +++ b/flutter/test/web/sentry_js_bundles_test.dart @@ -1,5 +1,5 @@ @TestOn('browser') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:http/http.dart' as http; diff --git a/flutter/test/web/sentry_script_loader_test.dart b/flutter/test/web/sentry_script_loader_test.dart index ca17bede26..36c585dd07 100644 --- a/flutter/test/web/sentry_script_loader_test.dart +++ b/flutter/test/web/sentry_script_loader_test.dart @@ -1,5 +1,5 @@ @TestOn('browser') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:sentry_flutter/src/web/script_loader/script_dom_api.dart'; diff --git a/flutter/test/web/sentry_script_loader_tt_custom_test.dart b/flutter/test/web/sentry_script_loader_tt_custom_test.dart index 19f8601b14..9b53476dd4 100644 --- a/flutter/test/web/sentry_script_loader_tt_custom_test.dart +++ b/flutter/test/web/sentry_script_loader_tt_custom_test.dart @@ -1,5 +1,5 @@ @TestOn('browser') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:sentry_flutter/src/web/script_loader/sentry_script_loader.dart'; diff --git a/flutter/test/web/sentry_script_loader_tt_forbidden_test.dart b/flutter/test/web/sentry_script_loader_tt_forbidden_test.dart index 29123caad2..e64c67b5c8 100644 --- a/flutter/test/web/sentry_script_loader_tt_forbidden_test.dart +++ b/flutter/test/web/sentry_script_loader_tt_forbidden_test.dart @@ -1,5 +1,5 @@ @TestOn('browser') -library flutter_test; +library; import 'package:flutter_test/flutter_test.dart'; import 'package:sentry_flutter/src/web/script_loader/sentry_script_loader.dart'; diff --git a/flutter/test/web/sentry_web_test.dart b/flutter/test/web/sentry_web_test.dart index 337183eff9..9fd73a56f8 100644 --- a/flutter/test/web/sentry_web_test.dart +++ b/flutter/test/web/sentry_web_test.dart @@ -1,5 +1,5 @@ @TestOn('browser') -library flutter_test; +library; import 'dart:typed_data'; From 558c27d915631f72f97a48e36b1257207c7dda01 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Wed, 29 Jan 2025 18:25:07 +0100 Subject: [PATCH 15/21] bump java version in min verison test --- .github/workflows/min_version_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index 401c661dbd..b4a3ea5da3 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -32,7 +32,7 @@ jobs: - uses: actions/setup-java@v4 with: distribution: "adopt" - java-version: "11" + java-version: "17" - uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff # pin@v2.18.0 with: From 28b47b74475e66c38e94271740a3d59db0a4090e Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Mon, 3 Feb 2025 14:11:55 +0100 Subject: [PATCH 16/21] change base to final classes --- flutter/lib/src/native/c/binding.dart | 4 +-- flutter/lib/src/native/cocoa/binding.dart | 38 +++++++++++------------ 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/flutter/lib/src/native/c/binding.dart b/flutter/lib/src/native/c/binding.dart index aed9e202ce..3c32ec9adf 100644 --- a/flutter/lib/src/native/c/binding.dart +++ b/flutter/lib/src/native/c/binding.dart @@ -869,7 +869,7 @@ class SentryNative { /// frozen but lists and dicts are not and can be frozen on demand. This /// automatically happens for some shared values in the event payload like /// the module list. -base class sentry_value_u extends ffi.Union { +final class sentry_value_u extends ffi.Union { @ffi.Uint64() external int _bits; @@ -891,4 +891,4 @@ abstract class sentry_value_type_t { /// The Sentry Client Options. /// /// See https://docs.sentry.io/platforms/native/configuration/ -base class sentry_options_s extends ffi.Opaque {} +final class sentry_options_s extends ffi.Opaque {} diff --git a/flutter/lib/src/native/cocoa/binding.dart b/flutter/lib/src/native/cocoa/binding.dart index 9a2e9eef63..5895a28675 100644 --- a/flutter/lib/src/native/cocoa/binding.dart +++ b/flutter/lib/src/native/cocoa/binding.dart @@ -31229,13 +31229,13 @@ class NSObject extends _ObjCWrapper { } } -base class ObjCSel extends ffi.Opaque {} +final class ObjCSel extends ffi.Opaque {} -base class ObjCObject extends ffi.Opaque {} +final class ObjCObject extends ffi.Opaque {} typedef instancetype = ffi.Pointer; -base class _NSZone extends ffi.Opaque {} +final class _NSZone extends ffi.Opaque {} class Protocol extends _ObjCWrapper { Protocol._(ffi.Pointer id, SentryCocoa lib, @@ -34397,7 +34397,7 @@ class NSData extends NSObject { } } -base class _NSRange extends ffi.Struct { +final class _NSRange extends ffi.Struct { @ffi.UnsignedLong() external int location; @@ -35851,7 +35851,7 @@ class NSValue extends NSObject { } } -base class CGPoint extends ffi.Struct { +final class CGPoint extends ffi.Struct { @ffi.Double() external double x; @@ -35859,7 +35859,7 @@ base class CGPoint extends ffi.Struct { external double y; } -base class CGSize extends ffi.Struct { +final class CGSize extends ffi.Struct { @ffi.Double() external double width; @@ -35867,13 +35867,13 @@ base class CGSize extends ffi.Struct { external double height; } -base class CGRect extends ffi.Struct { +final class CGRect extends ffi.Struct { external CGPoint origin; external CGSize size; } -base class NSEdgeInsets extends ffi.Struct { +final class NSEdgeInsets extends ffi.Struct { @ffi.Double() external double top; @@ -36894,7 +36894,7 @@ class ObjCBlock_ObjCObject_NSError_NSString extends _ObjCBlockBase { } } -base class _ObjCBlockDesc extends ffi.Struct { +final class _ObjCBlockDesc extends ffi.Struct { @ffi.UnsignedLong() external int reserved; @@ -36908,7 +36908,7 @@ base class _ObjCBlockDesc extends ffi.Struct { external ffi.Pointer signature; } -base class _ObjCBlock extends ffi.Struct { +final class _ObjCBlock extends ffi.Struct { external ffi.Pointer isa; @ffi.Int() @@ -38108,7 +38108,7 @@ class NSPredicate extends NSObject { } } -base class __va_list_tag extends ffi.Struct { +final class __va_list_tag extends ffi.Struct { @ffi.UnsignedInt() external int gp_offset; @@ -38950,7 +38950,7 @@ class ObjCBlock_bool_ObjCObject_ObjCObject_bool extends _ObjCBlockBase { } } -base class NSFastEnumerationState extends ffi.Struct { +final class NSFastEnumerationState extends ffi.Struct { @ffi.UnsignedLong() external int state; @@ -46911,7 +46911,7 @@ class NSRunLoop extends NSObject { } } -base class __CFRunLoop extends ffi.Opaque {} +final class __CFRunLoop extends ffi.Opaque {} class NSTimer extends NSObject { NSTimer._(ffi.Pointer id, SentryCocoa lib, @@ -48885,14 +48885,14 @@ class NSAppleEventDescriptor extends NSObject { } @ffi.Packed(2) -base class AEDesc extends ffi.Struct { +final class AEDesc extends ffi.Struct { @ffi.UnsignedInt() external int descriptorType; external ffi.Pointer> dataHandle; } -base class OpaqueAEDataStorageType extends ffi.Opaque {} +final class OpaqueAEDataStorageType extends ffi.Opaque {} abstract class NSAppleEventSendOptions { static const int NSAppleEventSendNoReply = 1; @@ -57048,7 +57048,7 @@ class NSScanner extends NSObject { } } -base class NSDecimal extends ffi.Opaque {} +final class NSDecimal extends ffi.Opaque {} class NSException extends NSObject { NSException._(ffi.Pointer id, SentryCocoa lib, @@ -61794,7 +61794,7 @@ class NSProcessInfo extends NSObject { } } -base class NSOperatingSystemVersion extends ffi.Struct { +final class NSOperatingSystemVersion extends ffi.Struct { @ffi.Long() external int majorVersion; @@ -63819,9 +63819,9 @@ abstract class NSURLCredentialPersistence { static const int NSURLCredentialPersistenceSynchronizable = 3; } -base class __SecIdentity extends ffi.Opaque {} +final class __SecIdentity extends ffi.Opaque {} -base class __SecTrust extends ffi.Opaque {} +final class __SecTrust extends ffi.Opaque {} class NSURLProtectionSpace extends NSObject { NSURLProtectionSpace._(ffi.Pointer id, SentryCocoa lib, From 5e73e10dd8131f4727096f4f204a386a7de0bba2 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Mon, 3 Feb 2025 14:12:12 +0100 Subject: [PATCH 17/21] remove final class replacements from sctipts --- flutter/scripts/generate-cocoa-bindings.sh | 1 - flutter/scripts/generate-native-bindings.ps1 | 1 - 2 files changed, 2 deletions(-) diff --git a/flutter/scripts/generate-cocoa-bindings.sh b/flutter/scripts/generate-cocoa-bindings.sh index 2dcd488a83..08fc737675 100755 --- a/flutter/scripts/generate-cocoa-bindings.sh +++ b/flutter/scripts/generate-cocoa-bindings.sh @@ -25,7 +25,6 @@ mv "$temp/$subdir" $temp/Sentry.framework binding="lib/src/native/cocoa/binding.dart" dart run ffigen --config ffi-cocoa.yaml -sed -i.bak 's|final class|class|g' $binding sed -i.bak 's|static int startProfilerForTrace_(SentryCocoa _lib, SentryId? traceId)|static int startProfilerForTrace_(SentryCocoa _lib, SentryId1? traceId)|g' $binding rm $binding.bak dart format $binding diff --git a/flutter/scripts/generate-native-bindings.ps1 b/flutter/scripts/generate-native-bindings.ps1 index 67d84de610..445a3434e7 100644 --- a/flutter/scripts/generate-native-bindings.ps1 +++ b/flutter/scripts/generate-native-bindings.ps1 @@ -10,7 +10,6 @@ try $binding = 'lib/src/native/c/binding.dart' dart run ffigen --config ffi-native.yaml $content = Get-Content $binding -Raw - $content = $content -replace 'final class', 'class' $content | Set-Content -NoNewline -Encoding utf8 $binding dart format $binding Get-Item $binding From f658f78e5592bf09d31867eeb908b6b4e319fefe Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Mon, 3 Feb 2025 14:28:03 +0100 Subject: [PATCH 18/21] use appFlavor from services --- .../flutter_enricher_event_processor.dart | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart index dae174f657..1c5a5faba3 100644 --- a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart +++ b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart @@ -3,6 +3,7 @@ import 'dart:ui'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:sentry/sentry.dart'; import '../navigation/sentry_navigator_observer.dart'; @@ -156,7 +157,7 @@ class FlutterEnricherEventProcessor implements EventProcessor { // See https://github.com/flutter/flutter/issues/83919 // 'window_is_visible': _window.viewConfiguration.visible, if (renderer != null) 'renderer': renderer, - if (_appFlavor != null) 'appFlavor': _appFlavor!, + if (appFlavor != null) 'appFlavor': appFlavor!, }; } @@ -270,10 +271,3 @@ class FlutterEnricherEventProcessor implements EventProcessor { return null; } } - -/// Copied from https://api.flutter.dev/flutter/services/appFlavor-constant.html -/// As soon as Flutter 3.16 is the minimal supported version of Sentry, this -/// can be replaced with the property from the link above. -const String? _appFlavor = String.fromEnvironment('FLUTTER_APP_FLAVOR') != '' - ? String.fromEnvironment('FLUTTER_APP_FLAVOR') - : null; From 57cb5fded195cdd3fceba4e5264dc14f66f6d3a5 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Mon, 3 Feb 2025 14:28:21 +0100 Subject: [PATCH 19/21] bump moin macos version to 10.14 --- flutter/ios/sentry_flutter.podspec | 3 +-- flutter/ios/sentry_flutter/Package.swift | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index a664cca7fd..a91e6560be 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -20,8 +20,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '12.0' - # Flutter 3.7 requires 10.14 - s.osx.deployment_target = '10.13' + s.osx.deployment_target = '10.14' # Flutter.framework does not contain a i386 slice. s.ios.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => '$(inherited) i386' } diff --git a/flutter/ios/sentry_flutter/Package.swift b/flutter/ios/sentry_flutter/Package.swift index 96d363ea24..3c0bc01fcc 100644 --- a/flutter/ios/sentry_flutter/Package.swift +++ b/flutter/ios/sentry_flutter/Package.swift @@ -7,7 +7,7 @@ let package = Package( name: "sentry_flutter", platforms: [ .iOS("12.0"), - .macOS("10.13") + .macOS("10.14") ], products: [ .library(name: "sentry-flutter", targets: ["sentry_flutter", "sentry_flutter_objc"]) From 83f5aedbed5433dfbbc8403bb742284539cd020f Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Mon, 3 Feb 2025 14:37:27 +0100 Subject: [PATCH 20/21] bump in link --- link/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/link/pubspec.yaml b/link/pubspec.yaml index c1093338ae..74b5c58143 100644 --- a/link/pubspec.yaml +++ b/link/pubspec.yaml @@ -6,7 +6,7 @@ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues environment: - sdk: '>=3.0.0 <4.0.0' + sdk: '>=3.5.0 <4.0.0' dependencies: gql_error_link: ">=0.2.0 <2.0.0" From adef8af860970e74be3f2736384a8d08c9942bd6 Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Tue, 4 Feb 2025 17:25:45 +0100 Subject: [PATCH 21/21] fix cl --- CHANGELOG.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c30989ca6..6029d8374e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased 9.0.0 + +- Increase minimum SDK version requirements to Dart v3.5.0 and Flutter v3.24.0 ([#2643](https://github.com/getsentry/sentry-dart/pull/2643)) + ## 8.13.0-beta.3 ### Enhancements @@ -376,7 +380,6 @@ ``` - Replace deprecated `BeforeScreenshotCallback` with new `BeforeCaptureCallback`. - ### Fixes - Catch errors thrown during `handleBeginFrame` and `handleDrawFrame` ([#2446](https://github.com/getsentry/sentry-dart/pull/2446)) @@ -393,10 +396,6 @@ - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#7181) - [diff](https://github.com/getsentry/sentry-java/compare/7.18.0...7.18.1) -## 9.0.0 - -- Bump Dart and Flutter version, Dart to 3.5.0, Flutter to 3.24.0 ([#2643](https://github.com/getsentry/sentry-dart/pull/2643)) - ## 8.11.0-beta.1 ### Features