update
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user