fix: переход по ссылкам и диплинки с миниапов

This commit is contained in:
Jganenokk
2026-08-20 22:22:35 +07:00
parent 2e8abe7e47
commit fcf9f12f95
3 changed files with 58 additions and 2 deletions
+15
View File
@@ -6,6 +6,21 @@ import 'package:url_launcher/url_launcher.dart';
import '../../frontend/widgets/custom_notification.dart';
import '../../frontend/widgets/max_link_handler.dart';
const Set<String> _webViewSchemes = {
'http',
'https',
'about',
'data',
'blob',
'javascript',
'file',
};
bool leavesWebView(String? scheme) {
if (scheme == null || scheme.isEmpty) return false;
return !_webViewSchemes.contains(scheme.toLowerCase());
}
Future<void> openExternalUrl(BuildContext context, String url) async {
if (await tryHandleMaxLink(context, url)) return;
if (!context.mounted) return;
@@ -182,8 +182,13 @@ class _WebAppScreenState extends State<WebAppScreen> {
return NavigationActionPolicy.CANCEL;
}
final handler = widget.shouldOverrideUrlLoading;
if (handler == null) return NavigationActionPolicy.ALLOW;
return handler(controller, action, _launch?.url);
if (handler != null) return handler(controller, action, _launch?.url);
if (uri != null && leavesWebView(uri.scheme)) {
if (mounted) await openExternalUrl(context, uri.toString());
return NavigationActionPolicy.CANCEL;
}
return NavigationActionPolicy.ALLOW;
}
@override