kamazoun

#1 in route_management.md

1 -- [Route Management](#route-management)  
2 - - [How to use](#how-to-use)  
3 - - [Navigation without named routes](#navigation-without-named-routes) 1 +- [Gestion de route](#gestion-de-route)
  2 + - [Utilisation](#utilisation)
  3 + - [xNavigation sans routes nommées](#navigation-sans-routes-nommees)
4 - [Navigation par nom](#navigation-par-nom) 4 - [Navigation par nom](#navigation-par-nom)
5 - [Send data to named Routes](#send-data-to-named-routes) 5 - [Send data to named Routes](#send-data-to-named-routes)
6 - [Dynamic urls links](#dynamic-urls-links) 6 - [Dynamic urls links](#dynamic-urls-links)
@@ -11,66 +11,67 @@ @@ -11,66 +11,67 @@
11 - [BottomSheets](#bottomsheets) 11 - [BottomSheets](#bottomsheets)
12 - [Nested Navigation](#nested-navigation) 12 - [Nested Navigation](#nested-navigation)
13 13
14 -# Route Management 14 +# Gestion de route
15 15
16 -This is the complete explanation of all there is to Getx when the matter is route management. 16 +C'est l'explication complète de tout ce qu'il y a à savoir sur Getx quand il s'agit de la gestion des routes.
17 17
18 -## How to use 18 +## Utilisation
19 19
20 -Add this to your pubspec.yaml file: 20 +Ajoutez ceci à votre fichier pubspec.yaml:
21 21
22 ```yaml 22 ```yaml
23 dependencies: 23 dependencies:
24 get: 24 get:
25 ``` 25 ```
26 26
27 -If you are going to use routes/snackbars/dialogs/bottomsheets without context, or use the high-level Get APIs, you need to simply add "Get" before your MaterialApp, turning it into GetMaterialApp and enjoy! 27 +Si vous allez utiliser des routes/snackbars/dialogs/bottomsheets sans contexte, ou utiliser les API Get de haut niveau, vous devez simplement ajouter "Get" avant votre MaterialApp, en le transformant en GetMaterialApp et en profiter!
28 28
29 ```dart 29 ```dart
30 -GetMaterialApp( // Before: MaterialApp( 30 +GetMaterialApp( // Avant: MaterialApp(
31 home: MyHome(), 31 home: MyHome(),
32 ) 32 )
33 ``` 33 ```
34 34
35 -## Navigation without named routes 35 +## Navigation sans nom
36 36
37 -To navigate to a new screen: 37 +Pour accéder à un nouvel écran:
38 38
39 ```dart 39 ```dart
40 Get.to(NextScreen()); 40 Get.to(NextScreen());
41 ``` 41 ```
42 42
43 To close snackbars, dialogs, bottomsheets, or anything you would normally close with Navigator.pop(context); 43 To close snackbars, dialogs, bottomsheets, or anything you would normally close with Navigator.pop(context);
  44 +Pour fermer les snackbars, dialogs, bottomsheets ou tout ce que vous fermez normalement avec Navigator.pop (context);
44 45
45 ```dart 46 ```dart
46 Get.back(); 47 Get.back();
47 ``` 48 ```
48 49
49 -To go to the next screen and no option to go back to the previous screen (for use in SplashScreens, login screens and etc.) 50 +Pour aller à l'écran suivant et aucune option pour revenir à l'écran précédent (pour une utilisation dans SplashScreens, écrans de connexion, etc.)
50 51
51 ```dart 52 ```dart
52 Get.off(NextScreen()); 53 Get.off(NextScreen());
53 ``` 54 ```
54 55
55 -To go to the next screen and cancel all previous routes (useful in shopping carts, polls, and tests) 56 +Pour aller à l'écran suivant et annuler toutes les routes précédents (utile dans les paniers d'achat e-commerce, les sondages et les tests)
56 57
57 ```dart 58 ```dart
58 Get.offAll(NextScreen()); 59 Get.offAll(NextScreen());
59 ``` 60 ```
60 61
61 -To navigate to the next route, and receive or update data as soon as you return from it: 62 +Pour naviguer vers l'écran suivant et recevoir ou mettre à jour des données dès que vous en revenez:
62 63
63 ```dart 64 ```dart
64 var data = await Get.to(Payment()); 65 var data = await Get.to(Payment());
65 ``` 66 ```
66 67
67 -on other screen, send a data for previous route: 68 +sur l'autre écran, envoyez les données pour l'écran précédent:
68 69
69 ```dart 70 ```dart
70 Get.back(result: 'success'); 71 Get.back(result: 'success');
71 ``` 72 ```
72 73
73 -And use it: 74 +Et utilisez-les:
74 75
75 ex: 76 ex:
76 77
@@ -78,13 +79,13 @@ ex: @@ -78,13 +79,13 @@ ex:
78 if(data == 'success') madeAnything(); 79 if(data == 'success') madeAnything();
79 ``` 80 ```
80 81
81 -Don't you want to learn our syntax?  
82 -Just change the Navigator (uppercase) to navigator (lowercase), and you will have all the functions of the standard navigation, without having to use context  
83 -Example: 82 +Vous ne voulez pas apprendre notre syntaxe?
  83 +Changez simplement le Navigateur (majuscule) en navigateur (minuscule), et vous aurez toutes les fonctions de la navigation standard, sans avoir à utiliser 'context'.
  84 +Exemple:
84 85
85 ```dart 86 ```dart
86 87
87 -// Default Flutter navigator 88 +// Navigateur Flutter par défaut
88 Navigator.of(context).push( 89 Navigator.of(context).push(
89 context, 90 context,
90 MaterialPageRoute( 91 MaterialPageRoute(
@@ -94,7 +95,7 @@ Navigator.of(context).push( @@ -94,7 +95,7 @@ Navigator.of(context).push(
94 ), 95 ),
95 ); 96 );
96 97
97 -// Get using Flutter syntax without needing context 98 +// Utilisez la syntaxe Flutter sans avoir besoin de 'context'
98 navigator.push( 99 navigator.push(
99 MaterialPageRoute( 100 MaterialPageRoute(
100 builder: (_) { 101 builder: (_) {
@@ -103,7 +104,7 @@ navigator.push( @@ -103,7 +104,7 @@ navigator.push(
103 ), 104 ),
104 ); 105 );
105 106
106 -// Get syntax (It is much better, but you have the right to disagree) 107 +// Syntaxe Get (c'est beaucoup mieux, mais vous avez le droit d'être en désaccord)
107 Get.to(HomePage()); 108 Get.to(HomePage());
108 109
109 110
@@ -111,27 +112,27 @@ Get.to(HomePage()); @@ -111,27 +112,27 @@ Get.to(HomePage());
111 112
112 ## Navigation Par Nom 113 ## Navigation Par Nom
113 114
114 -- If you prefer to navigate by namedRoutes, Get also supports this. 115 +- Si vous préférez naviguer par namedRoutes, Get prend également en charge cela.
115 116
116 -To navigate to nextScreen 117 +Pour aller à nextScreen
117 118
118 ```dart 119 ```dart
119 Get.toNamed("/NextScreen"); 120 Get.toNamed("/NextScreen");
120 ``` 121 ```
121 122
122 -To navigate and remove the previous screen from the tree. 123 +Pour naviguer et supprimer l'écran précédent du stack.
123 124
124 ```dart 125 ```dart
125 Get.offNamed("/NextScreen"); 126 Get.offNamed("/NextScreen");
126 ``` 127 ```
127 128
128 -To navigate and remove all previous screens from the tree. 129 +Pour naviguer et supprimer tous les écrans précédents du stack.
129 130
130 ```dart 131 ```dart
131 Get.offAllNamed("/NextScreen"); 132 Get.offAllNamed("/NextScreen");
132 ``` 133 ```
133 134
134 -To define routes, use GetMaterialApp: 135 +Pour définir des routes, utilisez GetMaterialApp:
135 136
136 ```dart 137 ```dart
137 void main() { 138 void main() {
@@ -152,7 +153,7 @@ void main() { @@ -152,7 +153,7 @@ void main() {
152 } 153 }
153 ``` 154 ```
154 155
155 -To handle navigation to non-defined routes (404 error), you can define an unknownRoute page in GetMaterialApp. 156 +Pour gérer la navigation vers des routes non définies (erreur 404), vous pouvez définir une page 'unknownRoute' dans GetMaterialApp.
156 157
157 ```dart 158 ```dart
158 void main() { 159 void main() {
@@ -169,39 +170,39 @@ void main() { @@ -169,39 +170,39 @@ void main() {
169 } 170 }
170 ``` 171 ```
171 172
172 -### Send data to named Routes 173 +### Envoyer des données aux routes nommées
173 174
174 -Just send what you want for arguments. Get accepts anything here, whether it is a String, a Map, a List, or even a class instance. 175 +Envoyez simplement ce que vous voulez comme arguments. Get accepte n'importe quoi ici, qu'il s'agisse d'une String, d'une Map, d'une List ou même d'une instance de classe.
175 176
176 ```dart 177 ```dart
177 Get.toNamed("/NextScreen", arguments: 'Get is the best'); 178 Get.toNamed("/NextScreen", arguments: 'Get is the best');
178 ``` 179 ```
179 180
180 -on your class or controller: 181 +dans votre classe ou contrôleur:
181 182
182 ```dart 183 ```dart
183 print(Get.arguments); 184 print(Get.arguments);
184 -//print out: Get is the best 185 +//montre: Get is the best
185 ``` 186 ```
186 187
187 -### Dynamic urls links 188 +### Liens URL dynamiques
188 189
189 -Get offer advanced dynamic urls just like on the Web. Web developers have probably already wanted this feature on Flutter, and most likely have seen a package promise this feature and deliver a totally different syntax than a URL would have on web, but Get also solves that. 190 +Get propose des URL dynamiques avancées, tout comme sur le Web. Les développeurs Web ont probablement déjà voulu cette fonctionnalité sur Flutter, et ont très probablement vu un package promettre cette fonctionnalité et fournir une syntaxe totalement différente de celle d'une URL sur le Web, mais Get résout également cela.
190 191
191 ```dart 192 ```dart
192 Get.offAllNamed("/NextScreen?device=phone&id=354&name=Enzo"); 193 Get.offAllNamed("/NextScreen?device=phone&id=354&name=Enzo");
193 ``` 194 ```
194 195
195 -on your controller/bloc/stateful/stateless class: 196 +sur votre classe controller/bloc/stateful/stateless:
196 197
197 ```dart 198 ```dart
198 print(Get.parameters['id']); 199 print(Get.parameters['id']);
199 -// out: 354 200 +// donne: 354
200 print(Get.parameters['name']); 201 print(Get.parameters['name']);
201 -// out: Enzo 202 +// donne: Enzo
202 ``` 203 ```
203 204
204 -You can also receive NamedParameters with Get easily: 205 +Vous pouvez également recevoir facilement des paramètres nommés avec Get:
205 206
206 ```dart 207 ```dart
207 void main() { 208 void main() {
@@ -217,7 +218,7 @@ void main() { @@ -217,7 +218,7 @@ void main() {
217 name: '/profile/', 218 name: '/profile/',
218 page: () => MyProfile(), 219 page: () => MyProfile(),
219 ), 220 ),
220 - //You can define a different page for routes with arguments, and another without arguments, but for that you must use the slash '/' on the route that will not receive arguments as above. 221 + //Vous pouvez définir une page différente pour les routes avec arguments, et une autre sans arguments, mais pour cela vous devez utiliser la barre oblique '/' sur la route qui ne recevra pas d'arguments comme ci-dessus.
221 GetPage( 222 GetPage(
222 name: '/profile/:user', 223 name: '/profile/:user',
223 page: () => UserProfile(), 224 page: () => UserProfile(),
@@ -233,20 +234,20 @@ void main() { @@ -233,20 +234,20 @@ void main() {
233 } 234 }
234 ``` 235 ```
235 236
236 -Send data on route name 237 +Envoyer des données sur le nom de la route
237 238
238 ```dart 239 ```dart
239 Get.toNamed("/profile/34954"); 240 Get.toNamed("/profile/34954");
240 ``` 241 ```
241 242
242 -On second screen take the data by parameter 243 +Sur le deuxième écran, recevez les données par paramètre
243 244
244 ```dart 245 ```dart
245 print(Get.parameters['user']); 246 print(Get.parameters['user']);
246 -// out: 34954 247 +// donne: 34954
247 ``` 248 ```
248 249
249 -And now, all you need to do is use Get.toNamed() to navigate your named routes, without any context (you can call your routes directly from your BLoC or Controller class), and when your app is compiled to the web, your routes will appear in the url <3 250 +Et maintenant, tout ce que vous avez à faire est d'utiliser Get.toNamed () pour parcourir vos routes nommées, sans aucun contexte (vous pouvez appeler vos routes directement à partir de votre classe BLoC ou Controller), et lorsque votre application est compilée sur le Web, vos routes apparaîtront dans l'url <3
250 251
251 ### Middleware 252 ### Middleware
252 253
@@ -78,7 +78,7 @@ Non, vous n'avez pas besoin d'un `StreamBuilder`, mais vous avez raison pour les @@ -78,7 +78,7 @@ Non, vous n'avez pas besoin d'un `StreamBuilder`, mais vous avez raison pour les
78 Eh bien, dans la vue, nous avons généralement beaucoup de code standard lorsque nous voulons changer un widget spécifique, c'est la manière Flutter. 78 Eh bien, dans la vue, nous avons généralement beaucoup de code standard lorsque nous voulons changer un widget spécifique, c'est la manière Flutter.
79 Avec **GetX**, vous pouvez également oublier ce code passe-partout. 79 Avec **GetX**, vous pouvez également oublier ce code passe-partout.
80 80
81 -`StreamBuilder( … )`? `initialValue: …`? `builder: …`? Non, il vous suffit de placer cette variable dans un widget `Obx ()`. 81 +`StreamBuilder( … )`? `initialValue: …`? `builder: …`? Non, il vous suffit de placer cette variable dans un widget `Obx()`.
82 82
83 ```dart 83 ```dart
84 Obx (() => Text (controller.name)); 84 Obx (() => Text (controller.name));
@@ -86,7 +86,7 @@ Obx (() => Text (controller.name)); @@ -86,7 +86,7 @@ Obx (() => Text (controller.name));
86 86
87 _Que devez-vous mémoriser?_ Seulement `Obx(() =>`. 87 _Que devez-vous mémoriser?_ Seulement `Obx(() =>`.
88 88
89 -Vous passez simplement ce Widget via une fonction dans un `Obx ()` (l' "Observateur" du _Rx_). 89 +Vous passez simplement ce Widget via une fonction dans un `Obx()` (l' "Observateur" du _Rx_).
90 90
91 `Obx` est assez intelligent et ne changera que si la valeur de` controller.name` change. 91 `Obx` est assez intelligent et ne changera que si la valeur de` controller.name` change.
92 92
@@ -110,11 +110,11 @@ void onButtonTap() => isOpen.value=false; @@ -110,11 +110,11 @@ void onButtonTap() => isOpen.value=false;
110 ``` 110 ```
111 ### Avantages 111 ### Avantages
112 112
113 -**GetX ()** vous aide lorsque vous avez besoin d'un contrôle **granulaire** sur ce qui est mis à jour. 113 +**GetX()** vous aide lorsque vous avez besoin d'un contrôle **granulaire** sur ce qui est mis à jour.
114 114
115 115
116 Si vous n'avez pas besoin d'ID uniques, car toutes vos variables seront modifiées lorsque vous effectuez une action, utilisez `GetBuilder`, 116 Si vous n'avez pas besoin d'ID uniques, car toutes vos variables seront modifiées lorsque vous effectuez une action, utilisez `GetBuilder`,
117 -parce que c'est un Simple State Updater (en blocs, comme `setState ()`), fait en seulement quelques lignes de code. 117 +parce que c'est un Simple State Updater (en blocs, comme `setState()`), fait en seulement quelques lignes de code.
118 Il a été rendu simple, pour avoir le moins d'impact sur le processeur, et juste pour remplir un seul objectif (une reconstruction de _l'état_) et dépenser le minimum de ressources possible. 118 Il a été rendu simple, pour avoir le moins d'impact sur le processeur, et juste pour remplir un seul objectif (une reconstruction de _l'état_) et dépenser le minimum de ressources possible.
119 119
120 Si vous avez besoin d'un State Manager **puissant** , vous ne pouvez pas vous tromper avec **GetX**. 120 Si vous avez besoin d'un State Manager **puissant** , vous ne pouvez pas vous tromper avec **GetX**.
@@ -140,7 +140,7 @@ Avec **GetX**, l'état ne change que si la `valeur` change. @@ -140,7 +140,7 @@ Avec **GetX**, l'état ne change que si la `valeur` change.
140 C'est la principale différence entre **GetX** et l'utilisation de _`computed` de MobX_. 140 C'est la principale différence entre **GetX** et l'utilisation de _`computed` de MobX_.
141 Lors de la jonction de deux __observables__, si l'une change; le listener de cet _observable_ changera également. 141 Lors de la jonction de deux __observables__, si l'une change; le listener de cet _observable_ changera également.
142 142
143 -Avec **GetX**, si vous joignez deux variables, `GetX ()` (similaire à `Observer ()`), ne se reconstruira que si cela implique un réel changement d'état. 143 +Avec **GetX**, si vous joignez deux variables, `GetX()` (similaire à `Observer()`), ne se reconstruira que si cela implique un réel changement d'état.
144 144
145 ### Declaration d une variable reactive 145 ### Declaration d une variable reactive
146 146
@@ -268,7 +268,7 @@ fireRoute(logged) { @@ -268,7 +268,7 @@ fireRoute(logged) {
268 } 268 }
269 ``` 269 ```
270 270
271 -si `hasToken` était `false`, il n'y aurait pas de changement à `isLogged`, donc` ever () `ne serait jamais appelé. 271 +si `hasToken` était `false`, il n'y aurait pas de changement à `isLogged`, donc` ever() `ne serait jamais appelé.
272 Pour éviter ce type de comportement, la première modification d'un _observable_ déclenchera toujours un événement, 272 Pour éviter ce type de comportement, la première modification d'un _observable_ déclenchera toujours un événement,
273 même s'il contient la même `.value`. 273 même s'il contient la même `.value`.
274 274
@@ -395,7 +395,7 @@ Si vous n'avez aucun problème avec le générateur de code MobX, ou si vous n'a @@ -395,7 +395,7 @@ Si vous n'avez aucun problème avec le générateur de code MobX, ou si vous n'a
395 ### Obx() 395 ### Obx()
396 396
397 Les types dans Get à l'aide de Bindings ne sont pas nécessaires. Vous pouvez utiliser le widget Obx, au lieu de GetX, qui ne reçoit que la fonction anonyme qui crée un widget. 397 Les types dans Get à l'aide de Bindings ne sont pas nécessaires. Vous pouvez utiliser le widget Obx, au lieu de GetX, qui ne reçoit que la fonction anonyme qui crée un widget.
398 -Évidemment, si vous n'utilisez pas de type, vous devrez avoir une instance de votre contrôleur pour utiliser les variables, ou utiliser `Get.find <Controller> ()` .value ou Controller.to.value pour récupérer la valeur . 398 +Évidemment, si vous n'utilisez pas de type, vous devrez avoir une instance de votre contrôleur pour utiliser les variables, ou utiliser `Get.find<Controller>()` .value ou Controller.to.value pour récupérer la valeur .
399 399
400 ### Workers 400 ### Workers
401 401
@@ -472,7 +472,7 @@ class Controller extends GetxController { @@ -472,7 +472,7 @@ class Controller extends GetxController {
472 int counter = 0; 472 int counter = 0;
473 void increment() { 473 void increment() {
474 counter++; 474 counter++;
475 - update(); // utilisez update () pour mettre à jour la variable de compteur sur l'interface utilisateur lorsque incrément() est appelé 475 + update(); // utilisez update() pour mettre à jour la variable de compteur sur l'interface utilisateur lorsque incrément() est appelé
476 } 476 }
477 } 477 }
478 // Sur votre classe Stateless / Stateful, utilisez GetBuilder pour mettre à jour le texte lorsque incrément() est appelé 478 // Sur votre classe Stateless / Stateful, utilisez GetBuilder pour mettre à jour le texte lorsque incrément() est appelé
@@ -508,14 +508,14 @@ class OtherClass extends StatelessWidget { @@ -508,14 +508,14 @@ class OtherClass extends StatelessWidget {
508 508
509 ``` 509 ```
510 510
511 -Si vous devez utiliser votre contrôleur dans de nombreux autres endroits, et en dehors de GetBuilder, créez simplement un get dans votre contrôleur et ayez-le facilement. (ou utilisez `Get.find <Controller> ()`) 511 +Si vous devez utiliser votre contrôleur dans de nombreux autres endroits, et en dehors de GetBuilder, créez simplement un get dans votre contrôleur et ayez-le facilement. (ou utilisez `Get.find<Controller>()`)
512 512
513 ```dart 513 ```dart
514 class Controller extends GetxController { 514 class Controller extends GetxController {
515 515
516 /// Vous n'en avez pas besoin. Je recommande de l'utiliser uniquement pour faciliter la syntaxe. 516 /// Vous n'en avez pas besoin. Je recommande de l'utiliser uniquement pour faciliter la syntaxe.
517 - /// avec la méthode statique: Controller.to.counter ();  
518 - /// sans méthode statique: Get.find <Controller> () .counter (); 517 + /// avec la méthode statique: Controller.to.counter();
  518 + /// sans méthode statique: Get.find<Controller>() .counter();
519 /// Il n'y a aucune différence de performances, ni aucun effet secondaire de l'utilisation de l'une ou l'autre syntaxe. Un seul n'a pas besoin du type, et l'autre l'EDI le complétera automatiquement. 519 /// Il n'y a aucune différence de performances, ni aucun effet secondaire de l'utilisation de l'une ou l'autre syntaxe. Un seul n'a pas besoin du type, et l'autre l'EDI le complétera automatiquement.
520 static Controller get to => Get.find(); // Ajouter cette ligne 520 static Controller get to => Get.find(); // Ajouter cette ligne
521 521
@@ -531,7 +531,7 @@ Et puis vous pouvez accéder directement à votre contrôleur, de cette façon: @@ -531,7 +531,7 @@ Et puis vous pouvez accéder directement à votre contrôleur, de cette façon:
531 531
532 ```dart 532 ```dart
533 FloatingActionButton( 533 FloatingActionButton(
534 - onPressed: () { 534 + onPressed:() {
535 Controller.to.increment(), 535 Controller.to.increment(),
536 } // This is incredibly simple! 536 } // This is incredibly simple!
537 child: Text("${Controller.to.counter}"), 537 child: Text("${Controller.to.counter}"),
@@ -555,7 +555,7 @@ La classe StatefulWidget est une classe plus grande que StatelessWidget, qui all @@ -555,7 +555,7 @@ La classe StatefulWidget est une classe plus grande que StatelessWidget, qui all
555 À moins que vous n'ayez besoin d'utiliser un mixin, comme TickerProviderStateMixin, il sera totalement inutile d'utiliser un StatefulWidget avec Get. 555 À moins que vous n'ayez besoin d'utiliser un mixin, comme TickerProviderStateMixin, il sera totalement inutile d'utiliser un StatefulWidget avec Get.
556 556
557 Vous pouvez appeler toutes les méthodes d'un StatefulWidget directement à partir d'un GetBuilder. 557 Vous pouvez appeler toutes les méthodes d'un StatefulWidget directement à partir d'un GetBuilder.
558 -Si vous devez appeler la méthode initState () ou dispose () par exemple, vous pouvez les appeler directement: 558 +Si vous devez appeler la méthode initState() ou dispose() par exemple, vous pouvez les appeler directement:
559 559
560 ```dart 560 ```dart
561 GetBuilder<Controller>( 561 GetBuilder<Controller>(
@@ -565,7 +565,7 @@ GetBuilder<Controller>( @@ -565,7 +565,7 @@ GetBuilder<Controller>(
565 ), 565 ),
566 ``` 566 ```
567 567
568 -Une bien meilleure approche que celle-ci consiste à utiliser les méthodes onInit () et onClose () directement à partir de votre contrôleur. 568 +Une bien meilleure approche que celle-ci consiste à utiliser les méthodes onInit() et onClose() directement à partir de votre contrôleur.
569 569
570 ```dart 570 ```dart
571 @override 571 @override
@@ -575,15 +575,15 @@ void onInit() { @@ -575,15 +575,15 @@ void onInit() {
575 } 575 }
576 ``` 576 ```
577 577
578 -- NOTE: Si vous voulez démarrer une méthode au moment où le contrôleur est appelé pour la première fois, vous N'AVEZ PAS BESOIN d'utiliser des constructeurs pour cela, en fait, en utilisant un package orienté performance comme Get, cela frôle la mauvaise pratique, car il s'écarte de la logique dans laquelle les contrôleurs sont créés ou alloués (si vous créez une instance de ce contrôleur, le constructeur sera appelé immédiatement, vous remplirez un contrôleur avant même qu'il ne soit utilisé, vous allouez de la mémoire sans qu'elle ne soit utilisée , cela nuit définitivement aux principes de cette bibliothèque). Les méthodes onInit (); et onClose (); ont été créés pour cela, ils seront appelés lors de la création du Controller, ou lors de sa première utilisation, selon que vous utilisez Get.lazyPut ou non. Si vous voulez, par exemple, faire un appel à votre API pour remplir des données, vous pouvez oublier la méthode à l'ancienne de initState / dispose, lancez simplement votre appel à l'API dans onInit, et si vous devez exécuter une commande comme la fermeture des flux, utilisez onClose () pour cela. 578 +- NOTE: Si vous voulez démarrer une méthode au moment où le contrôleur est appelé pour la première fois, vous N'AVEZ PAS BESOIN d'utiliser des constructeurs pour cela, en fait, en utilisant un package orienté performance comme Get, cela frôle la mauvaise pratique, car il s'écarte de la logique dans laquelle les contrôleurs sont créés ou alloués (si vous créez une instance de ce contrôleur, le constructeur sera appelé immédiatement, vous remplirez un contrôleur avant même qu'il ne soit utilisé, vous allouez de la mémoire sans qu'elle ne soit utilisée , cela nuit définitivement aux principes de cette bibliothèque). Les méthodes onInit(); et onClose(); ont été créés pour cela, ils seront appelés lors de la création du Controller, ou lors de sa première utilisation, selon que vous utilisez Get.lazyPut ou non. Si vous voulez, par exemple, faire un appel à votre API pour remplir des données, vous pouvez oublier la méthode à l'ancienne de initState / dispose, lancez simplement votre appel à l'API dans onInit, et si vous devez exécuter une commande comme la fermeture des flux, utilisez onClose() pour cela.
579 579
580 ### Pourquoi ca existe 580 ### Pourquoi ca existe
581 581
582 Le but de ce package est précisément de vous donner une solution complète pour la navigation des routes, la gestion des dépendances et des états, en utilisant le moins de dépendances possible, avec un haut degré de découplage. Get engage toutes les API Flutter de haut et bas niveau en lui-même, pour vous assurer de travailler avec le moins de couplage possible. Nous centralisons tout dans un seul package, pour vous assurer que vous n'avez aucun type de couplage dans votre projet. De cette façon, vous pouvez mettre uniquement des widgets dans votre vue et laisser la partie de votre équipe qui travaille avec la «business logique» libre, pour travailler avec la business logique sans dépendre d'aucun élément de la vue. Cela fournit un environnement de travail beaucoup plus propre, de sorte qu'une partie de votre équipe ne travaille qu'avec des widgets, sans se soucier d'envoyer des données à votre contrôleur, et une partie de votre équipe ne travaille qu'avec la business logique dans toute son ampleur, sans dépendre d'aucun élément de la Vue. 582 Le but de ce package est précisément de vous donner une solution complète pour la navigation des routes, la gestion des dépendances et des états, en utilisant le moins de dépendances possible, avec un haut degré de découplage. Get engage toutes les API Flutter de haut et bas niveau en lui-même, pour vous assurer de travailler avec le moins de couplage possible. Nous centralisons tout dans un seul package, pour vous assurer que vous n'avez aucun type de couplage dans votre projet. De cette façon, vous pouvez mettre uniquement des widgets dans votre vue et laisser la partie de votre équipe qui travaille avec la «business logique» libre, pour travailler avec la business logique sans dépendre d'aucun élément de la vue. Cela fournit un environnement de travail beaucoup plus propre, de sorte qu'une partie de votre équipe ne travaille qu'avec des widgets, sans se soucier d'envoyer des données à votre contrôleur, et une partie de votre équipe ne travaille qu'avec la business logique dans toute son ampleur, sans dépendre d'aucun élément de la Vue.
583 583
584 Donc, pour simplifier cela: 584 Donc, pour simplifier cela:
585 -Vous n'avez pas besoin d'appeler des méthodes dans initState et de les envoyer par paramètre à votre contrôleur, ni d'utiliser votre constructeur de contrôleur pour cela, vous avez la méthode onInit () qui est appelée au bon moment pour démarrer vos services.  
586 -Vous n'avez pas besoin d'appeler l'appareil, vous avez la méthode onClose () qui sera appelée au moment exact où votre contrôleur n'est plus nécessaire et sera supprimé de la mémoire. De cette façon, ne laissez les vues que pour les widgets, abstenez-vous d'y mettre tout type de business logique. 585 +Vous n'avez pas besoin d'appeler des méthodes dans initState et de les envoyer par paramètre à votre contrôleur, ni d'utiliser votre constructeur de contrôleur pour cela, vous avez la méthode onInit() qui est appelée au bon moment pour démarrer vos services.
  586 +Vous n'avez pas besoin d'appeler l'appareil, vous avez la méthode onClose() qui sera appelée au moment exact où votre contrôleur n'est plus nécessaire et sera supprimé de la mémoire. De cette façon, ne laissez les vues que pour les widgets, abstenez-vous d'y mettre tout type de business logique.
587 587
588 N'appelez pas une méthode dispose() dans GetxController, cela ne fera rien, rappelez-vous que le contrôleur n'est pas un Widget, vous ne devez pas le «supprimer», et il sera automatiquement et intelligemment supprimé de la mémoire par Get. Si vous avez utilisé un Stream et que vous souhaitez le fermer, insérez-le simplement dans la méthode close(). Exemple: 588 N'appelez pas une méthode dispose() dans GetxController, cela ne fera rien, rappelez-vous que le contrôleur n'est pas un Widget, vous ne devez pas le «supprimer», et il sera automatiquement et intelligemment supprimé de la mémoire par Get. Si vous avez utilisé un Stream et que vous souhaitez le fermer, insérez-le simplement dans la méthode close(). Exemple:
589 589
@@ -604,9 +604,9 @@ class Controller extends GetxController { @@ -604,9 +604,9 @@ class Controller extends GetxController {
604 604
605 Cycle de vie du controlleur: 605 Cycle de vie du controlleur:
606 606
607 -- onInit () quand il est créé.  
608 -- onClose () quand il est fermé pour apporter des modifications en préparation de la méthode delete.  
609 -- supprimé: vous n'avez pas accès à cette API car elle supprime littéralement le contrôleur de la mémoire. Il est littéralement supprimé, sans laisser de trace. 607 +- onInit() quand il est créé.
  608 +- onClose() quand il est fermé pour apporter des modifications en préparation de la méthode delete.
  609 +- deleted: vous n'avez pas accès à cette API car elle supprime littéralement le contrôleur de la mémoire. Il est littéralement supprimé, sans laisser de trace.
610 610
611 ### Autres formes d utilisation 611 ### Autres formes d utilisation
612 612
@@ -697,9 +697,9 @@ GetX le fait automatiquement et ne reconstruit que le widget qui utilise la vari @@ -697,9 +697,9 @@ GetX le fait automatiquement et ne reconstruit que le widget qui utilise la vari
697 697
698 ## Mélanger les deux gestionnaires d'état 698 ## Mélanger les deux gestionnaires d'état
699 699
700 -Certaines personnes ont ouvert une demande de fonctionnalité, car elles ne voulaient utiliser qu'un seul type de variable réactive, et les autres mécanismes, et devaient insérer un Obx dans un GetBuilder pour cela. En y réfléchissant, MixinBuilder a été créé. Il permet à la fois des changements réactifs en changeant les variables ".obs" et des mises à jour mécaniques via update (). Cependant, des 4 widgets c'est celui qui consomme le plus de ressources, car en plus d'avoir un Abonnement pour recevoir les événements de changement de ses enfants, il souscrit à la méthode de mise à jour de son contrôleur. 700 +Certaines personnes ont ouvert une demande de fonctionnalité, car elles ne voulaient utiliser qu'un seul type de variable réactive, et les autres mécanismes, et devaient insérer un Obx dans un GetBuilder pour cela. En y réfléchissant, MixinBuilder a été créé. Il permet à la fois des changements réactifs en changeant les variables ".obs" et des mises à jour mécaniques via update(). Cependant, des 4 widgets c'est celui qui consomme le plus de ressources, car en plus d'avoir un Abonnement pour recevoir les événements de changement de ses enfants, il souscrit à la méthode de mise à jour de son contrôleur.
701 701
702 -L'extension de GetxController est importante, car ils ont des cycles de vie et peuvent «démarrer» et «terminer» des événements dans leurs méthodes onInit () et onClose (). Vous pouvez utiliser n'importe quelle classe pour cela, mais je vous recommande fortement d'utiliser la classe GetxController pour placer vos variables, qu'elles soient observables ou non. 702 +L'extension de GetxController est importante, car ils ont des cycles de vie et peuvent «démarrer» et «terminer» des événements dans leurs méthodes onInit() et onClose(). Vous pouvez utiliser n'importe quelle classe pour cela, mais je vous recommande fortement d'utiliser la classe GetxController pour placer vos variables, qu'elles soient observables ou non.
703 703
704 ## GetBuilder vs GetX vs Obx vs MixinBuilder 704 ## GetBuilder vs GetX vs Obx vs MixinBuilder
705 705
@@ -714,7 +714,7 @@ Dans cet esprit, j'ai créé le gestionnaire d'état simple. C'est simple, et c' @@ -714,7 +714,7 @@ Dans cet esprit, j'ai créé le gestionnaire d'état simple. C'est simple, et c'
714 714
715 GetBuilder est très économique en RAM, et il n'y a guère d'approche plus économique que lui (du moins je ne peux pas en imaginer une, si elle existe, merci de nous le faire savoir). 715 GetBuilder est très économique en RAM, et il n'y a guère d'approche plus économique que lui (du moins je ne peux pas en imaginer une, si elle existe, merci de nous le faire savoir).
716 716
717 -Cependant, GetBuilder est toujours un gestionnaire d'état mécanique, vous devez appeler update () comme vous auriez besoin d'appeler les notifyListeners () de Provider. 717 +Cependant, GetBuilder est toujours un gestionnaire d'état mécanique, vous devez appeler update() comme vous auriez besoin d'appeler les notifyListeners() de Provider.
718 718
719 Il y a d'autres situations où la programmation réactive est vraiment intéressante, et ne pas travailler avec elle revient à réinventer la roue. Dans cet esprit, GetX a été créé pour fournir tout ce qui est le plus moderne et le plus avancé dans un gestionnaire d'état. Il met à jour uniquement ce qui est nécessaire et si nécessaire, si vous avez une erreur et envoyez 300 changements d'état simultanément, GetX filtrera et mettra à jour l'écran uniquement si l'état change réellement. 719 Il y a d'autres situations où la programmation réactive est vraiment intéressante, et ne pas travailler avec elle revient à réinventer la roue. Dans cet esprit, GetX a été créé pour fournir tout ce qui est le plus moderne et le plus avancé dans un gestionnaire d'état. Il met à jour uniquement ce qui est nécessaire et si nécessaire, si vous avez une erreur et envoyez 300 changements d'état simultanément, GetX filtrera et mettra à jour l'écran uniquement si l'état change réellement.
720 720