当前位置:网站首页>[flutter problem Series Chapter 67] the Solution to the problem of Routing cannot be jumped again in in dialog popup Using get plug - in in flutter
[flutter problem Series Chapter 67] the Solution to the problem of Routing cannot be jumped again in in dialog popup Using get plug - in in flutter
2022-06-13 04:25:00 【Allen SU】
C'est【Flutter Série de questions 67 Articles】,Si ça marche.,Bienvenue dans la rubrique.
Pour les blogs Flutter SDK:2.2.3,Dart SDK:2.13.4,get: 4.3.8.
Catalogue des articles
Un.:Description du problème
Un problème que j'ai découvert par hasard,Il est noté que:.
Quand je suis monté sur les étagères du magasin de millet,Fenêtre contextuelle avec Protocole de confidentialité lorsque l'utilisateur entre dans l'application pour la première fois,Et puis on a ajouté,Cliquez sur《Protocole utilisateur》Peut également sauter normalement à la Web (En milliers de dollars des États - Unis),Je pensais que c'était fini,Comme le montre la figure ci - dessous

Par hasard, quand je teste , Quand j'ai eu mon premier pop - up , Le premier clic sur le lien permet un saut normal ,Sortie Web .Page cliquée à nouveau sans réponse ,Pourquoi??
Point d'arrêt débogué , J'ai trouvé la racine du problème .
2.:Solutions
Paramètres Get.toNamed() Propriétés de la méthode preventDuplicates Pour false C'est tout.,Le code ci - dessous
/// Passer à《Protocole utilisateur》Page Web
void _toAgreementPage() {
Get.toNamed(
AppRoutes.WEB,
arguments: WebModel(title: "《Protocole utilisateur》", url: agreementUrl, isLocal: false),
preventDuplicates: false, // “Prévention des doubles emplois”Set to false
);
}
Et le problème est résolu. , Ce n'est pas seulement pour Dialog,C'est parfait. Snackbar、BottomSheet Attends..
Trois:Analyse des sources《Comment résoudre Dialog Problème de routage de rebond secondaire anormal》
Certains camarades de classe aiment casser la casserole à sable et demander à la fin , Le problème est résolu ,Mais pourquoi?? Alors nous allons commencer l'analyse du code source .
D'abord, à travers le débogage du point d'arrêt Get.toNamed() Source de la méthode,Comme le montre la figure ci - dessous

Comme le montre la figure,toNamed() La note au - dessus de la méthode signifie
- Par défaut,GetX Empêche le saut vers une route déjà entrée .
- Si vous voulez lever cette restriction ,Définir les propriétés preventDuplicates Pour false C'est tout..
La position du point d'arrêt indique ,En ce moment preventDuplicates Pour true, Pour revenir à ce jugement ,Description page == currentRoute Les conditions sont également réunies, C'est - à - dire que ce qui saute actuellement, c'est la route déjà entrée .
Méthode retournée null ,Donc, dans Dialog Cliquez à nouveau sur le lien pour sauter Web Il n'y a pas eu de réaction à la page .
Tout ce qu'il nous faut, c'est mettre en place preventDuplicates Pour false, La condition n'est plus valable , La nature est entrée dans le jugement .
Quatre:Analyse des sources《Pourquoi n'y a - t - il pas cette question dans la page Dialog Mais il y avait》
Un.: Quand la route entre dans la pile
Commençons par une classe GetObserver ,Cette classe hérite de NavigatorObserver Catégorie, Le but est d'écouter les sauts de page . Comme d'habitude Toast Et plus tard héritera de cette classe , GetObserver Le code source de la classe est montré dans la figure suivante

Quand je clique《Protocole utilisateur》 Lien vers Web Page, La section sélectionnée dans la case Rouge indique ,Seulement PageRoute Le type permet de modifier la route actuelle current Valeur du champ, Donc, la mise à jour est maintenant .
Et c'est pourquoi Dialog Il n'y a pas de problème avec le pop - up entrant dans la nouvelle page .
2.: Quand le routage sort de la pile
Comme le montre la figure ci - dessous

Quand je clique Web Lorsque le bouton retour de la page quitte la page courante , La section sélectionnée dans la case Rouge indique ,Seulement PageRoute Le type permet de modifier la route actuelle current Valeur du champ, Et nous venons de Dialog Le pop - up est entré , Le type de page précédente est GetDialogRoute, Mise à jour non satisfaite current Conditions.
Donc, bien que nous ayons vraiment abandonné Web (En milliers de dollars des États - Unis),Mais en ce moment, current La valeur de n'a pas été mise à jour ,Toujours /web, C'est - à - dire que ce que les yeux voient est une fenêtre , Mais le programme pense que vous êtes Web (En milliers de dollars des États - Unis), Cela crée un problème que la même page ne peut pas sauter .
Jusqu'ici.,À propos de Flutter Utilisé dans Get Le plug - in est Dialog Le problème de ne pas pouvoir sauter deux fois dans la fenêtre contextuelle , Je l'ai présenté ici .
Pour finir get Classe qui juge du type de routage actuel ,Comme le montre la figure ci - dessous

Comme le montre la figure
- Dialog Le type est GetDialogRoute,De PopupRoute.
- Snackbar Le type est SnackRoute,De OverlayRoute.
- BottomSheet Le type est GetModalBottomSheetRoute,De PopupRoute.
- Page Le type estGetPageRoute,De PageRoute.
Votre problème a - t - il été résolu??Bienvenue dans la section commentaires.
Rose donatrice,Il y a du parfum dans les mains.,Si vous trouvez l'article bon,J'espère qu'il y a un lien.,Merci beaucoup..
Google De Flutter De plus en plus de feu,Fin 2022Année6Mois10Jour GitHub L'étoile a atteint 142K,Flutter La détermination est une tendance,Donc en tant que développeur frontal,Il n'y a aucune raison de ne pas étudier avant.
Conclusion
Que vous soyez Flutter Le novice est encore en train de commencer,Peut - être qu'un peu d'attention,Ensuite, je vais Flutter Composants communs dans(Contient l'analyse du code source、Utilisation et précautions des composants)Et les problèmes que vous pourriez rencontrer CSDN Sur le blog,J'espère que tout en étudiant,Peut également aider plus de gens.
边栏推荐
- 重读经典:《End-to-End Object Detection with Transformers》
- MCU: RS485 communication and Modbus Protocol
- Data analysis report
- 史上最详细的Swin-Transformer 掩码机制(mask of window attentation)————shaoshuai
- 【LeetCode】860. Change with lemonade (2 brushes for wrong questions)
- 基于DE2-115平台的VGA显示
- Applet version update
- ACM ICPC
- Real time requirements for 5g China Unicom repeater network management protocol
- PAT 1054 The Dominant Color
猜你喜欢

Intervention analysis + pseudo regression

Dumi builds a document blog

MCU: RS485 communication and Modbus Protocol

1-72 convert string to decimal integer

Call C function in Lua

Redis data persistence

史上最详细的Swin-Transformer 掩码机制(mask of window attentation)————shaoshuai

一款開源的Markdown轉富文本編輯器的實現原理剖析

小程序基础入门(黑马学习笔记)

Introduction to MCU peripherals: temperature sensor DS18B20
随机推荐
VGA display based on de2-115 platform
Common encryption and decryption function encapsulation - AES encryption and decryption
Knife4j aggregation 2.0.9 supports automatic refresh of routing documents
Example of try catch finally execution sequence
El expression
MySQL索引
Intervention analysis + pseudo regression
Redis-HyperLogLog-基数统计算法
SEO specification
Single chip microcomputer: pcf8591 application program
小程序基础入门(黑马学习笔记)
SQL 进阶挑战(1 - 5)
Clear timer failure
Get verification code
Suffix Automaton
【Flutter 问题系列第 67 篇】在 Flutter 中使用 Get 插件在 Dialog 弹窗中不能二次跳转路由问题的解决方案
UE4 learning notes - functions of terrain tool
Ionic Cordova command line
The data obtained from mongodb query data command is null
Use ASE encryption and decryption cache encapsulation in Vue project