fluttercommunity / fluttercommunity/flutter_webview_plugin
升级0.4.0后flutterWebViewPlugin.onStateChanged.listen设置回调不生效
- 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