Skip to content

Commit f2f6301

Browse files
committed
fix: make FFI dependency conditional (web/vm)
1 parent a3d53ae commit f2f6301

File tree

4 files changed

+26
-13
lines changed

4 files changed

+26
-13
lines changed

flutter/lib/src/native/factory.dart

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export 'factory_real.dart' if (dart.library.html) 'factory_web.dart';
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import 'package:flutter/services.dart';
2+
3+
import '../../sentry_flutter.dart';
4+
import 'cocoa/sentry_native_cocoa.dart';
5+
import 'sentry_native_binding.dart';
6+
import 'sentry_native_channel.dart';
7+
8+
SentryNativeBinding createBinding(PlatformChecker pc, MethodChannel channel) {
9+
if (pc.platform.isIOS || pc.platform.isMacOS) {
10+
return SentryNativeCocoa(channel);
11+
} else {
12+
return SentryNativeChannel(channel);
13+
}
14+
}
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import 'package:flutter/services.dart';
2+
3+
import '../../sentry_flutter.dart';
4+
import 'sentry_native_binding.dart';
5+
6+
// This isn't actually called, see SentryFlutter.init()
7+
SentryNativeBinding createBinding(PlatformChecker pc, MethodChannel channel) {
8+
throw UnsupportedError("Native binding is not supported on this platform.");
9+
}

flutter/lib/src/sentry_flutter.dart

+2-13
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@ import 'event_processor/android_platform_exception_event_processor.dart';
1010
import 'event_processor/flutter_exception_event_processor.dart';
1111
import 'event_processor/platform_exception_event_processor.dart';
1212
import 'integrations/screenshot_integration.dart';
13-
import 'native/cocoa/sentry_native_cocoa.dart';
13+
import 'native/factory.dart';
1414
import 'native/native_scope_observer.dart';
15-
import 'native/sentry_native_channel.dart';
1615
import 'profiling.dart';
1716
import 'renderer/renderer.dart';
1817
import 'native/sentry_native.dart';
19-
import 'native/sentry_native_binding.dart';
2018

2119
import 'integrations/integrations.dart';
2220
import 'event_processor/flutter_enricher_event_processor.dart';
@@ -51,16 +49,7 @@ mixin SentryFlutter {
5149
}
5250

5351
if (flutterOptions.platformChecker.hasNativeIntegration) {
54-
late final SentryNativeBinding binding;
55-
56-
// Set a default native channel to the singleton SentryNative instance.
57-
if (flutterOptions.platformChecker.platform.isIOS ||
58-
flutterOptions.platformChecker.platform.isMacOS) {
59-
binding = SentryNativeCocoa(channel);
60-
} else {
61-
binding = SentryNativeChannel(channel);
62-
}
63-
52+
final binding = createBinding(flutterOptions.platformChecker, channel);
6453
_native = SentryNative(flutterOptions, binding);
6554
}
6655

0 commit comments

Comments
 (0)