fluttercommunity / fluttercommunity/flutter_webview_plugin

升级0.4.0后flutterWebViewPlugin.onStateChanged.listen设置回调不生效

Ouverte
#934 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Java
Étoiles
1.5k
Forks
938
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

_onStateChanged =
_flutterWebViewPlugin.onStateChanged.listen(_webViewStateChanged);

void _webViewStateChanged(WebViewStateChanged event) {
switch (event.type) {
case WebViewState.startLoad:
_onPageStart(event.url);
break;
case WebViewState.finishLoad:
_onPageEnd(event.url);
break;
case WebViewState.shouldStart:
wtPrint("_webviewplugin eventurl : ${event.url}");
if (Platform.isAndroid) {
return;
}
String prefix = "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb";
if (event.url.startsWith(prefix)) {
Uri uri = WTRouter().parseURLScheme(urlStr: event.url)!;
Map par = Map.from(uri.queryParameters);
if (par['redirect_url'] == null ||
(par['redirect_url']!.contains("h5.canyahn.cn") &&
!par['redirect_url']!.startsWith(GlobalField.scheme))) {
par['redirect_url'] = GlobalField.scheme +
"web?url=${WTEncryptUtil.urlEncode(par['redirect_url'])}";
String url = uri.replace(queryParameters: par).toString();
_flutterWebViewPlugin.stopLoading();
_flutterWebViewPlugin
.reloadUrl(url, headers: {"Referer": GlobalField.scheme});
}
return;
}
break;
case WebViewState.abortLoad:
wtPrint("_webviewplugin abortLoad : ${event.url}");
if (_isPageInApp(event.url)) {
_openPageInApp(event.url);
} else {
String url = event.url;
if (Platform.isIOS && url.contains("alipay://alipayclient/")) {
url = Uri.decodeFull(url);
List list = url.split("?");
String json = list.last;
Map map = jsonDecode(json);
map['fromAppUrlScheme'] = GlobalField.scheme;
json = jsonEncode(map);
list.last = Uri.encodeFull(json);
url = list.join("?");
WTRouter.openApp(schemeUrl: url);
} else {
routerOpenUrl(context: context, urlStr: event.url);
}
}
break;
}
}

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par reproduire le comportement signalé après la mise à niveau vers 0.4.0, en vous concentrant sur l’enregistrement de onStateChanged.listen et le callback _webViewStateChanged présentés dans l’issue. Vérifiez si les événements WebViewState sont émis et transmis ; le travail est terminé lorsque le callback réagit à nouveau aux changements d’état attendus de WebView.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
dart
Domaine
mobile
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.