From 2ddfea5cf371776d3f4e580aca4098440e5ad857 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Sat, 29 Mar 2025 15:37:19 +0800 Subject: [PATCH] fix: webview params Signed-off-by: bggRGjQaUbCoE --- lib/utils/app_scheme.dart | 30 +++++++++++++++++++++++++----- lib/utils/utils.dart | 2 +- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/lib/utils/app_scheme.dart b/lib/utils/app_scheme.dart index a7f712cc..0d8a8f78 100644 --- a/lib/utils/app_scheme.dart +++ b/lib/utils/app_scheme.dart @@ -34,6 +34,7 @@ class PiliScheme { String url, { bool selfHandle = false, bool off = false, + Map? parameters, }) async { try { if (url.startsWith('//')) { @@ -41,7 +42,12 @@ class PiliScheme { } else if (RegExp(r'^\S+://').hasMatch(url).not) { url = 'https://$url'; } - return await routePush(Uri.parse(url), selfHandle: selfHandle, off: off); + return await routePush( + Uri.parse(url), + selfHandle: selfHandle, + off: off, + parameters: parameters, + ); } catch (_) { return false; } @@ -52,6 +58,7 @@ class PiliScheme { Uri uri, { bool selfHandle = false, bool off = false, + Map? parameters, }) async { final String scheme = uri.scheme; final String host = uri.host.toLowerCase(); @@ -342,7 +349,12 @@ class PiliScheme { return false; } case 'http' || 'https': - return await _fullPathPush(uri, selfHandle: selfHandle, off: off); + return await _fullPathPush( + uri, + selfHandle: selfHandle, + off: off, + parameters: parameters, + ); default: String? aid = RegExp(r'^av(\d+)', caseSensitive: false) .firstMatch(path) @@ -370,6 +382,7 @@ class PiliScheme { Uri uri, { bool selfHandle = false, bool off = false, + Map? parameters, }) async { // https://m.bilibili.com/bangumi/play/ss39708 // https | m.bilibili.com | /bangumi/play/ss39708 @@ -384,7 +397,7 @@ class PiliScheme { void launchURL() { if (selfHandle.not) { - _toWebview(uri.toString(), off); + _toWebview(uri.toString(), off, parameters); } } @@ -604,10 +617,17 @@ class PiliScheme { return false; } - static void _toWebview(String url, bool off) { + static void _toWebview( + String url, + bool off, + Map? parameters, + ) { Utils.toDupNamed( '/webview', - parameters: {'url': url}, + parameters: { + 'url': url, + if (parameters != null) ...parameters, + }, off: off, ); } diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index c4b6aa92..80dab0f6 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -803,7 +803,7 @@ class Utils { }, ); } else { - PiliScheme.routePushFromUrl(url); + PiliScheme.routePushFromUrl(url, parameters: parameters); } } }