diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 9c8404c56..084b81f1c 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -1823,10 +1823,15 @@ StreamSubscription? listenUniLinks({handleByFlutter = true}) { final sub = uriLinkStream.listen((Uri? uri) { debugPrint("A uri was received: $uri. handleByFlutter $handleByFlutter"); if (uri != null) { - if (handleByFlutter) { - handleUriLink(uri: uri); - } else { - bind.sendUrlScheme(url: uri.toString()); + if (!isMobile){ + if (handleByFlutter) { + handleUriLink(uri: uri); + } else { + bind.sendUrlScheme(url: uri.toString()); + } + } + else { + handleUriLinkMobile(uri.toString()); } } else { print("uni listen error: uri is empty."); @@ -1844,6 +1849,14 @@ enum UriLinkType { rdp, } +void handleUriLinkMobile(String uri) { + var context = Get.context; + var uri_id = uri.split("//").last; + if (context != null && uri_id.isNotEmpty){ + connect(context, uri_id); + } +} + // uri link handler bool handleUriLink({List? cmdArgs, Uri? uri, String? uriString}) { List? args; diff --git a/flutter/lib/mobile/pages/connection_page.dart b/flutter/lib/mobile/pages/connection_page.dart index a4e3c7f4d..824ceafec 100644 --- a/flutter/lib/mobile/pages/connection_page.dart +++ b/flutter/lib/mobile/pages/connection_page.dart @@ -54,10 +54,12 @@ class _ConnectionPageState extends State { } bool isPeersLoading = false; bool isPeersLoaded = false; + StreamSubscription? _uniLinksSubscription; @override void initState() { super.initState(); + _uniLinksSubscription = listenUniLinks(); if (_idController.text.isEmpty) { () async { final lastRemoteId = await bind.mainGetLastRemoteId(); @@ -312,6 +314,7 @@ class _ConnectionPageState extends State { @override void dispose() { + _uniLinksSubscription?.cancel(); _idController.dispose(); if (Get.isRegistered()) { Get.delete();