setOnClickLinkCallback method
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');
}
}