当前位置:网站首页>[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.
边栏推荐
- How to use debounce in lodash to realize anti shake
- Redis hyperloglog cardinality statistics algorithm
- Common encryption and decryption function encapsulation - AES encryption and decryption
- Mongodb compass connects to the Alibaba cloud remote server database or reports an error occurred while loading instance info: command hostinfo req
- Detailed explanation of KOA development process
- 【LeetCode】860. Change with lemonade (2 brushes for wrong questions)
- Single chip microcomputer: basic concepts of a/d and d/a
- 干预分析 + 伪回归
- Advanced Mathematics (Seventh Edition) Tongji University exercises 1-2 personal solutions
- [kubernetes series] pod chapter actual operation
猜你喜欢

Hugo blog building tutorial

Explanation of line segment tree

Dumi construit un blog documentaire

EMC整改纲要

Differences and relations between three-tier architecture and MVC

Dumi builds a document blog

Unity Shader 学习 004-Shader 调试 平台差异性 第三方调试工具

R: Employee turnover forecast practice

Single chip microcomputer: infrared remote control communication principle

力扣刷题338.比特位计数
随机推荐
Application of dagger2 learning module (II)
Redis数据持久化
Knife4j aggregation 2.0.9 supports automatic refresh of routing documents
ET框架-22 创建ServerInfo实体及事件
一款开源的Markdown转富文本编辑器的实现原理剖析
个人总结的MVP框架
Redis
Get verification code
SEO specification
Interpretation of mobile phone private charging protocol
Redis persistence mode AOF and RDB
Milliards de données pour déterminer si un élément existe
Real time requirements for 5g China Unicom repeater network management protocol
Ultra quicksort reverse sequence pair
SCM: introduction and operation of EEPROM
Detailed explanation of KOA development process
力扣刷题338.比特位计数
Redis
建模雜談系列143 數據處理、分析與决策系統開發的梳理
[notes] summarize common horizontal and vertical centering methods