initialize method

  1. @override
Future<void> initialize(
  1. ULinkConfig config
)
override

Implementation

@override
Future<void> initialize(ULinkConfig config) async {
  // Set up event channel listeners BEFORE calling native initialize
  // so the event sinks are active when the native SDK emits logs during init
  _dynamicLinkSubscription = dynamicLinkEventChannel
      .receiveBroadcastStream()
      .listen(
        (dynamic event) {
          if (event != null) {
            final linkData = ULinkResolvedData.fromJson(
              Map<String, dynamic>.from(event),
            );
            _dynamicLinkController.add(linkData);
          }
        },
        onError: (error) {
          debugPrint('Dynamic link event channel error: $error');
        },
      );

  _unifiedLinkSubscription = unifiedLinkEventChannel
      .receiveBroadcastStream()
      .listen(
        (dynamic event) {
          if (event != null) {
            final linkData = ULinkResolvedData.fromJson(
              Map<String, dynamic>.from(event),
            );
            _unifiedLinkController.add(linkData);
          }
        },
        onError: (error) {
          debugPrint('Unified link event channel error: $error');
        },
      );

  _logSubscription = logEventChannel.receiveBroadcastStream().listen(
    (dynamic event) {
      if (event != null) {
        final logEntry = ULinkLogEntry.fromMap(
          Map<dynamic, dynamic>.from(event),
        );
        debugPrint(
          '[ULink SDK] ${logEntry.level.toUpperCase()}: ${logEntry.message}',
        );
        _logController.add(logEntry);
      }
    },
    onError: (error) {
      debugPrint('Log event channel error: $error');
    },
  );

  _reinstallSubscription = reinstallEventChannel
      .receiveBroadcastStream()
      .listen(
        (dynamic event) {
          if (event != null) {
            final installationInfo = ULinkInstallationInfo.fromJson(
              Map<String, dynamic>.from(event),
            );
            _reinstallController.add(installationInfo);
          }
        },
        onError: (error) {
          debugPrint('Reinstall event channel error: $error');
        },
      );

  // Now call native initialize - event sinks are already active
  await methodChannel.invokeMethod('initialize', {'config': config.toMap()});
}