fluttercommunity / fluttercommunity/flutter_webview_plugin

onUrlChanged always listen even I cancel the subscription & dispose the webview

Ouverte
#809 0 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

I noticed that whenever I click the webview for the 2nd time . onUrlChanged listen ( duplicate ) the same data .

[✓] Flutter (Channel stable, v1.17.5, on Mac OS X 10.15.2 19C57,
locale en-MY)
• Flutter version 1.17.5 at /Users/Users/flutter
• Framework revision 8af6b2f038 (7 weeks ago), 2020-06-30
12:53:55 -0700
• Engine revision ee76268252
• Dart version 2.8.4
[✓] Android toolchain - develop for Android devices (Android SDK
version 30.0.1)
• Android SDK at /Users/Users/Library/Android/sdk
• Platform android-30, build-tools 30.0.1
• Java binary at: /Applications/Android
Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build
1.8.0_242-release-1644-b3-6222593)
• All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.4.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.4.1, Build version 11E503a
• CocoaPods version 1.8.4

[✓] Android Studio (version 4.0)
• Android Studio at /Applications/Android
Studio.app/Contents
• Flutter plugin version 47.1.2
• Dart plugin version 193.7361
• Java version OpenJDK Runtime Environment (build
1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.48.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.13.2

`final flutterWebViewPlugin = FlutterWebviewPlugin();
StreamSubscription _onUrlChanged;

@override
void initState() {
super.initState();
flutterWebViewPlugin.close();
_onUrlChanged = flutterWebViewPlugin.onUrlChanged.listen((url) {
if (mounted) {
if (url.contains(
'${EnviromentConfig.baseUrl}/?status_id=1')) {
Uri uri = Uri.parse(url);
_redirect(uri);
} else if (url.contains(
'${EnviromentConfig.baseUrl}/?status_id=0')) {
Uri uri = Uri.parse(url);
String message = uri.queryParameters['message'].replaceAll('_', ' ');
Navigator.pop(_scaffoldKey.currentContext);
final snackBar =
SnackBar(backgroundColor: Colors.red, content: Text(message));
_scaffoldKey.currentState.showSnackBar(snackBar);
}
}
});
}

@override
void dispose() {
_onUrlChanged.cancel();
flutterWebViewPlugin.dispose();
super.dispose();
}`

Guide de contribution

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

Piste de recherche

Commencez par l’abonnement onUrlChanged et le cycle de vie de dispose présentés dans le rapport, puis reproduisez la deuxième interaction avec la webview à l’aide de l’exemple fourni. Vérifiez si l’annulation et la destruction de la webview arrêtent les callbacks ; le travail est terminé lorsqu’une interaction ultérieure avec la webview ne transmet pas d’événements de changement d’URL en double.

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

Évaluation

Stack technique
dart, flutter
Domaine
mobile-dev
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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