This commit is contained in:
admin
2026-06-12 11:01:19 +08:00
parent bc25e828fa
commit 363c67fa33

View File

@@ -4,6 +4,7 @@ import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:freecell/utils/http_util.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:url_launcher/url_launcher.dart';
// import '../adjust/adjust_service.dart';
@@ -29,6 +30,7 @@ Future launchURL(
String url, {
LaunchMode mode = LaunchMode.externalApplication,
}) async {
debugPrint("op $url");
var uri = Uri.parse(url);
try {
await launchUrl(uri, mode: mode);
@@ -37,13 +39,21 @@ Future launchURL(
}
}
String _externalUrlForScheme(String url, String scheme) {
final prefix = '$scheme:';
if (!url.toLowerCase().startsWith(prefix)) return url;
String _externalUrlForScheme(String url, String scheme, String? authority) {
// if (authority != null && authority.isNotEmpty) {
// final urlStr = Uri.decodeComponent(authority);
// final uri = Uri.tryParse(urlStr);
// if (uri != null && uri.scheme.isNotEmpty) {
// return urlStr;
// }
// }
final prefix = '${scheme.toLowerCase()}://';
if (url.length < prefix.length ||
url.substring(0, prefix.length).toLowerCase() != prefix) {
return url;
}
final stripped = Uri.decodeComponent(
url.substring(prefix.length).replaceFirst(RegExp(r'^/+'), ''),
);
final stripped = Uri.decodeComponent(url.substring(prefix.length));
final uri = Uri.tryParse(stripped);
if (uri != null && uri.scheme.isNotEmpty) {
@@ -643,9 +653,11 @@ class _LoadingScreenState extends State<LoadingScreen>
(controller, navigationAction) async {
final requestUrl = navigationAction.request.url
?.toString();
if (requestUrl != null &&
requestUrl.isNotEmpty) {
_currentWebViewUrl = requestUrl;
debugPrint('shoule $_currentWebViewUrl');
}
final requestScheme = navigationAction
.request
@@ -667,6 +679,7 @@ class _LoadingScreenState extends State<LoadingScreen>
_externalUrlForScheme(
requestUrl,
requestScheme,
navigationAction.request.url?.authority,
),
);
return NavigationActionPolicy.CANCEL;