setOnClickLinkCallback method

  1. @override
Future<void> setOnClickLinkCallback(
  1. OnClickLinkCallback? callback
)
override

Implementation

@override
Future<void> setOnClickLinkCallback(OnClickLinkCallback? callback) async {
  print('[DEBUG] Flutter: Setting link click callback: ${callback != null ? 'provided' : 'null'}');
  _onClickLinkCallback = callback;

  methodChannel.setMethodCallHandler((MethodCall call) async {
    print('[DEBUG] Flutter: Received method call: ${call.method}');
    if (call.method == 'onClickLink') {
      print('[DEBUG] Flutter: Handling onClickLink method call');
      // Handle link clicks - ensure the callback is not null
      if (_onClickLinkCallback != null && call.arguments is Map<dynamic, dynamic>) {
        final args = call.arguments as Map<dynamic, dynamic>;
        final url = args['url'] as String;
        print('[DEBUG] Flutter: Received link click for URL: $url');

        bool result;
        try {
          result = _onClickLinkCallback?.call(url) ?? false;
          print('[DEBUG] Flutter: Link handled by callback: $result (TRUE means handled by Flutter)');
        } catch (e) {
          print('[DEBUG] Flutter: Error in link callback: $e');
          result = false;
        }
        return result;
      }
      print('[DEBUG] Flutter: No callback available or invalid arguments, returning false');
      return false;
    } else {
      print('[DEBUG] Flutter: Delegating to original handler: ${call.method}');
      await _handleMethodCall(call);
      return null;
    }
  });

  try {
    print('[DEBUG] Flutter: Registering link click handler with native side');
    await methodChannel.invokeMethod('setOnClickLinkCallback');
    print('[DEBUG] Flutter: Link click handler registered with native side');
  } catch (e) {
    print('[DEBUG] Flutter: Error setting link click handler: $e');
  }
}