Jonny Borges
Committed by GitHub

Merge pull request #379 from Nipodemos/fix-docs-links

[docs] several changes in docs
@@ -11,14 +11,22 @@ @@ -11,14 +11,22 @@
11 <a href="https://www.buymeacoffee.com/jonataslaw" target="_blank"><img src="https://i.imgur.com/aV6DDA7.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important; box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" > </a> 11 <a href="https://www.buymeacoffee.com/jonataslaw" target="_blank"><img src="https://i.imgur.com/aV6DDA7.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important; box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" > </a>
12 ![](getx.png) 12 ![](getx.png)
13 13
  14 +<h3>We are sorry for the inconsistency in the translation. The GetX package is updated quite often and translations to docs may not come as fast. So in order for this documentation still has all content, i'll leave here all new untranslated texts (I consider is better to have the english docs then to not have at all), so if anyone wants to translate, it would be very helpful 😁</h3>
  15 +
  16 +- [Communication and support channels:](#communication-and-support-channels)
14 - [Sobre GetX](#sobre-getx) 17 - [Sobre GetX](#sobre-getx)
  18 +- [Como contribuir](#como-contribuir)
  19 +- [Installing](#installing)
  20 +- [Proyeto Counter no GetX](#proyeto-counter-no-getx)
15 - [Los tres pilares](#los-tres-pilares) 21 - [Los tres pilares](#los-tres-pilares)
16 - [Gestión del Estado](#gestión-del-estado) 22 - [Gestión del Estado](#gestión-del-estado)
17 - - [Explicación completa](#explicación-completa) 23 + - [Reactivo STATE_MANAGER](#reactivo-state_manager)
  24 + - [Más detalles sobre la gestión del estado.](#más-detalles-sobre-la-gestión-del-estado)
18 - [Gestión de Rutas](#gestión-de-rutas) 25 - [Gestión de Rutas](#gestión-de-rutas)
19 - - [Explicación completa](#explicación-completa-1) 26 + - [Más detalles sobre la gestión de rutas.](#más-detalles-sobre-la-gestión-de-rutas)
  27 + - [Video Explanation](#video-explanation)
20 - [Gestión de dependencias](#gestión-de-dependencias) 28 - [Gestión de dependencias](#gestión-de-dependencias)
21 - - [Explicación completa](#explicación-completa-2) 29 + - [Más detalles sobre la gestión de dependencias.](#más-detalles-sobre-la-gestión-de-dependencias)
22 - [Utils](#utils) 30 - [Utils](#utils)
23 - [Cambiar de tema](#cambiar-de-tema) 31 - [Cambiar de tema](#cambiar-de-tema)
24 - [Otras API avanzadas y configuraciones manuales](#otras-api-avanzadas-y-configuraciones-manuales) 32 - [Otras API avanzadas y configuraciones manuales](#otras-api-avanzadas-y-configuraciones-manuales)
@@ -26,6 +34,14 @@ @@ -26,6 +34,14 @@
26 - [Rompiendo cambios desde 2.0](#rompiendo-cambios-desde-20) 34 - [Rompiendo cambios desde 2.0](#rompiendo-cambios-desde-20)
27 - [¿Por qué Getx?](#por-qué-getx) 35 - [¿Por qué Getx?](#por-qué-getx)
28 36
  37 +# Communication and support channels:
  38 +
  39 +[**Slack (English)**](https://communityinviter.com/apps/getxworkspace/getx)
  40 +
  41 +[**Discord (English and Portuguese)**](https://discord.com/invite/9Y3wK9)
  42 +
  43 +[**Telegram (Portuguese)**](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g)
  44 +
29 # Sobre GetX 45 # Sobre GetX
30 46
31 - GetX es una solución extra ligera y potente para Flutter. Combina gestión de estádo de alto rendimiento, inyección de dependencia inteligente y gestión de rutas, de forma rápida y práctica. 47 - GetX es una solución extra ligera y potente para Flutter. Combina gestión de estádo de alto rendimiento, inyección de dependencia inteligente y gestión de rutas, de forma rápida y práctica.
@@ -38,6 +54,8 @@ @@ -38,6 +54,8 @@
38 54
39 **GetX hace que su desarrollo sea productivo, pero ¿quiere hacerlo aún más productivo? [Agregue la extensión a su VSCode](https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets)** 55 **GetX hace que su desarrollo sea productivo, pero ¿quiere hacerlo aún más productivo? [Agregue la extensión a su VSCode](https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets)**
40 56
  57 +# Como contribuir
  58 +
41 *¿Quieres contribuir al proyecto? Estaremos orgullosos de destacarte como uno de nuestros colaboradores. Aquí hay algunos puntos en los que puede contribuir y hacer que GetX (y Flutter) sea aún mejor.* 59 *¿Quieres contribuir al proyecto? Estaremos orgullosos de destacarte como uno de nuestros colaboradores. Aquí hay algunos puntos en los que puede contribuir y hacer que GetX (y Flutter) sea aún mejor.*
42 60
43 - Ayudando a traducir el archivo Léame a otros idiomas. 61 - Ayudando a traducir el archivo Léame a otros idiomas.
@@ -50,9 +68,22 @@ @@ -50,9 +68,22 @@
50 68
51 - Incluyendo nuevas funciones. 69 - Incluyendo nuevas funciones.
52 70
53 -# Los tres pilares 71 +# Installing
54 72
55 -## Gestión del Estado 73 +Add Get to your pubspec.yaml file:
  74 +
  75 +```yaml
  76 +dependencies:
  77 + get:
  78 +```
  79 +
  80 +Import get in files that it will be used:
  81 +
  82 +```dart
  83 +import 'package:get/get.dart';
  84 +```
  85 +
  86 +# Proyeto Counter no GetX
56 87
57 Vea una explicación más detallada de la administración del estado [aquí](./docs/es_ES/state_management.md). Allí verá más ejemplos y también la diferencia entre el Gestión del Estado simple y el Gestión del Estado reactivo 88 Vea una explicación más detallada de la administración del estado [aquí](./docs/es_ES/state_management.md). Allí verá más ejemplos y también la diferencia entre el Gestión del Estado simple y el Gestión del Estado reactivo
58 89
@@ -79,8 +110,8 @@ class Controller extends GetXController { @@ -79,8 +110,8 @@ class Controller extends GetXController {
79 } 110 }
80 ``` 111 ```
81 112
82 -- Paso 3:  
83 -Cree su vista, use StatelessWidget y ahorre algo de RAM, con GetX ya no necesitará usar StatefulWidget. 113 +- Paso 3:
  114 +Cree su vista, use StatelessWidget y ahorre algo de RAM, con GetX ya no necesitará usar StatefulWidget.
84 115
85 ```dart 116 ```dart
86 class Home extends StatelessWidget { 117 class Home extends StatelessWidget {
@@ -112,16 +143,52 @@ class Other extends StatelessWidget { @@ -112,16 +143,52 @@ class Other extends StatelessWidget {
112 143
113 ``` 144 ```
114 145
  146 +Resultado:
  147 +
  148 +![](counter-app-gif.gif)
  149 +
115 Este es un proyecto simple pero ya deja en claro cuán poderoso es GetX. A medida que su proyecto crezca, esta diferencia se volverá más significativa. GetX fue diseñado para trabajar con equipos, pero también simplifica el trabajo de un desarrollador individual. Mejore sus plazos, entregue todo a tiempo, sin perder rendimiento. GetX no es para todos, pero si te identificaste con esa frase, ¡GET es para ti! 150 Este es un proyecto simple pero ya deja en claro cuán poderoso es GetX. A medida que su proyecto crezca, esta diferencia se volverá más significativa. GetX fue diseñado para trabajar con equipos, pero también simplifica el trabajo de un desarrollador individual. Mejore sus plazos, entregue todo a tiempo, sin perder rendimiento. GetX no es para todos, pero si te identificaste con esa frase, ¡GET es para ti!
116 151
117 -### Explicación completa 152 +# Los tres pilares
  153 +
  154 +## Gestión del Estado
  155 +
  156 +Actualmente hay varios State Managers para Flutter. Sin embargo, con la mayoría de ellos implica utilizar ChangeNotifier para actualizar widgets y este es un enfoque malo y muy malo para el rendimiento de aplicaciones medianas o grandes. Puede verificar en la documentación oficial de Flutter que [ChangeNotifier debe usarse con 1 o un máximo de 2 listeners](https://api.Flutter.dev/Flutter/foundation/ChangeNotifier-class.html), por lo que es prácticamente inutilizable para cualquier aplicación mediana o grande.
  157 +
  158 +GetX no es mejor ni peor que cualquier otro gestor de estado, pero debe analizar estos puntos, así como los puntos que se mencionan a continuación, para elegir entre usar GetX en forma pura (vanilla) o usarlo junto con otro gestor de estado.
  159 +
  160 +Definitivamente, GetX no es enemigo de ningún otro gestor de estado, porque GetX es más bien un microframework, no solo un gestor de estado, y se puede usar solo o en combinación con ellos.
  161 +
  162 +### Reactivo STATE_MANAGER
  163 +
  164 +La programación reactiva puede alienar a muchas personas porque se dice que es complicada. GetX convierte la programación reactiva en algo tan simple que puede ser aprendido y utilizado por aquellos que comenzaron en ese mismo momento en Flutter. No, no necesitará crear StreamControllers. Tampoco necesitará crear un StreamBuilder para cada variable. No necesitará crear una clase para cada estado. No necesitará crear un get para un valor inicial. La programación reactiva con GetX es tan fácil como usar setState (¡o incluso más fácil!).
  165 +
  166 +Imaginemos que tiene una variable "name" y desea que cada vez que la modifique, todos los widgets que la usan cambien automáticamente.
  167 +
  168 +Ej. esta es tu variable "name":
  169 +
  170 +```dart
  171 +var name = 'Jonatas Borges';
  172 +```
  173 +
  174 +Para que sea observable, solo necesita agregar ".obs" al final:
  175 +
  176 +```dart
  177 +var name = 'Jonatas Borges'.obs;
  178 +```
  179 +
  180 +¿StreamBuilder? ¿initialValue? ¿builder? No, solo necesitas jugar con esta variable dentro de un widget Obx.
  181 +
  182 +```dart
  183 +Obx(() => Text (controller.name));
  184 +```
  185 +
  186 +### Más detalles sobre la gestión del estado.
118 187
119 **Vea una explicación más detallada de la administración del estado [aquí](./docs/es_ES/state_management.md). Allí verá más ejemplos y también la diferencia entre el Gestión del Estado simple y el Gestión del Estado reactivo** 188 **Vea una explicación más detallada de la administración del estado [aquí](./docs/es_ES/state_management.md). Allí verá más ejemplos y también la diferencia entre el Gestión del Estado simple y el Gestión del Estado reactivo**
120 189
121 ## Gestión de Rutas 190 ## Gestión de Rutas
122 191
123 -Vea una explicación más detallada de la administración del estado [aquí](./docs/es_ES/route_management.md).  
124 -  
125 Para navegar a una nueva pantalla: 192 Para navegar a una nueva pantalla:
126 193
127 ```dart 194 ```dart
@@ -152,13 +219,15 @@ Para navegar a la siguiente ruta y recibir o actualizar datos tan pronto como se @@ -152,13 +219,15 @@ Para navegar a la siguiente ruta y recibir o actualizar datos tan pronto como se
152 var data = await Get.to(Payment()); 219 var data = await Get.to(Payment());
153 ``` 220 ```
154 221
155 -### Explicación completa 222 +### Más detalles sobre la gestión de rutas.
156 223
157 **Vea una explicación más detallada de la Gestión de Rutas [aquí](./docs/es_ES/route_management.md).** 224 **Vea una explicación más detallada de la Gestión de Rutas [aquí](./docs/es_ES/route_management.md).**
158 225
159 -## Gestión de dependencias 226 +### Video Explanation
160 227
161 -Vea una explicación más detallada de la Gestión de dependencias [aquí](./docs/es_ES/dependency_management.md). 228 +Amateur Coder did an excellent video that cover route management with Get! here is the link: [Complete Getx Navigation](https://www.youtube.com/watch?v=RaqPIoJSTtI)
  229 +
  230 +## Gestión de dependencias
162 231
163 - Nota: si está utilizando el gestor de estado de GetX, no tiene que preocuparse por esto, solo lea para obtener información, pero preste más atención a la API de bindings, que hará todo esto automáticamente por usted. 232 - Nota: si está utilizando el gestor de estado de GetX, no tiene que preocuparse por esto, solo lea para obtener información, pero preste más atención a la API de bindings, que hará todo esto automáticamente por usted.
164 233
@@ -194,7 +263,7 @@ Get.lazyPut<Service>(()=> ApiMock()); @@ -194,7 +263,7 @@ Get.lazyPut<Service>(()=> ApiMock());
194 /// ApiMock will only be called when someone uses Get.find<Service> for the first time 263 /// ApiMock will only be called when someone uses Get.find<Service> for the first time
195 ``` 264 ```
196 265
197 -### Explicación completa 266 +### Más detalles sobre la gestión de dependencias.
198 267
199 **Vea una explicación más detallada de la Gestión de dependencias [aquí](./docs/es_ES/dependency_management.md).** 268 **Vea una explicación más detallada de la Gestión de dependencias [aquí](./docs/es_ES/dependency_management.md).**
200 269
@@ -12,6 +12,28 @@ @@ -12,6 +12,28 @@
12 12
13 ![](getx.png) 13 ![](getx.png)
14 14
  15 +- [**Communication and support channels:**](#communication-and-support-channels-)
  16 +- [**About Get**](#about-get)
  17 +- [**Installing**](#installing)
  18 +- [**Counter App in Get**](#counter-app-in-get)
  19 +- [**The Three pillars**](#the-three-pillars)
  20 + * [State management](#state-management)
  21 + + [Reactive State Manager](#reactive-state-manager)
  22 + + [More details about state management](#more-details-about-state-management)
  23 + * [Route management](#route-management)
  24 + + [More details about route management](#more-details-about-route-management)
  25 + + [Video Explanation](#video-explanation)
  26 + * [Dependency management](#dependency-management)
  27 + + [More details about dependency management](#more-details-about-dependency-management)
  28 +- [**How to contribute**](#how-to-contribute)
  29 +- [**Utils**](#utils)
  30 + * [Change Theme](#change-theme)
  31 + * [Other Advanced APIs](#other-advanced-apis)
  32 + + [Optional Global Settings and Manual configurations](#optional-global-settings-and-manual-configurations)
  33 +- [**Breaking changes from 2.0**](#breaking-changes-from-20)
  34 +- [**Why Getx?**](#why-getx-)
  35 +
  36 +
15 # Communication and support channels: 37 # Communication and support channels:
16 38
17 [**Slack (English)**](https://communityinviter.com/apps/getxworkspace/getx) 39 [**Slack (English)**](https://communityinviter.com/apps/getxworkspace/getx)
@@ -20,25 +42,6 @@ @@ -20,25 +42,6 @@
20 42
21 [**Telegram (Portuguese)**](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g) 43 [**Telegram (Portuguese)**](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g)
22 44
23 -# Topics  
24 -  
25 -- [**About Get**](#about-get)  
26 -- [**Installing**](#installing)  
27 -- [**The Three pillars**](#the-three-pillars)  
28 - - [State management](#state-management)  
29 - - [In-depth explanation](#in-depth-explanation)  
30 - - [Route management](#route-management)  
31 - - [In-Depth Explanation](#in-depth-explanation-1)  
32 - - [Dependency management](#dependency-management)  
33 - - [In-depth explanation](#in-depth-explanation-2)  
34 -- [**How to contribute**](#how-to-contribute)  
35 -- [**Utils**](#utils)  
36 - - [Change Theme](#change-theme)  
37 - - [Other Advanced APIs](#other-advanced-apis)  
38 - - [Optional Global Settings and Manual configurations](#optional-global-settings-and-manual-configurations)  
39 -- [**Breaking changes from 2.0**](#breaking-changes-from-20)  
40 -- [**Why GetX?**](#why-getx)  
41 -  
42 # About Get 45 # About Get
43 46
44 - GetX is an extra-light and powerful solution for Flutter. It combines high performance state management, intelligent dependency injection, and route management in a quick and practical way. 47 - GetX is an extra-light and powerful solution for Flutter. It combines high performance state management, intelligent dependency injection, and route management in a quick and practical way.
@@ -64,12 +67,7 @@ Import get in files that it will be used: @@ -64,12 +67,7 @@ Import get in files that it will be used:
64 ```dart 67 ```dart
65 import 'package:get/get.dart'; 68 import 'package:get/get.dart';
66 ``` 69 ```
67 -  
68 -# The Three pillars  
69 -  
70 -## State management  
71 -  
72 -**See an more in-depth explanation of state management [here](./docs/en_US/state_management.md). There you will see more examples and also the differente between the simple stage manager and the reactive state manager** 70 +# Counter App with GetX
73 71
74 The "counter" project created by default on new project on Flutter has over 100 lines (with comments). To show the power of Get, I will demonstrate how to make a "counter" changing the state with each click, switching between pages and sharing the state between screens, all in an organized way, separating the business logic from the view, in ONLY 26 LINES CODE INCLUDING COMMENTS. 72 The "counter" project created by default on new project on Flutter has over 100 lines (with comments). To show the power of Get, I will demonstrate how to make a "counter" changing the state with each click, switching between pages and sharing the state between screens, all in an organized way, separating the business logic from the view, in ONLY 26 LINES CODE INCLUDING COMMENTS.
75 73
@@ -123,19 +121,78 @@ class Other extends StatelessWidget { @@ -123,19 +121,78 @@ class Other extends StatelessWidget {
123 Widget build(context){ 121 Widget build(context){
124 // Access the updated count variable 122 // Access the updated count variable
125 return Scaffold(body: Center(child: Text(c.count.string))); 123 return Scaffold(body: Center(child: Text(c.count.string)));
  124 + }
126 } 125 }
  126 +```
  127 +
  128 +Result:
  129 +
  130 +![](counter-app-gif.gif)
  131 +
  132 +This is a simple project but it already makes clear how powerful Get is. As your project grows, this difference will become more significant.
  133 +
  134 +Get was designed to work with teams, but it makes the job of an individual developer simple.
  135 +
  136 +Improve your deadlines, deliver everything on time without losing performance. Get is not for everyone, but if you identified with that phrase, Get is for you!
  137 +
  138 +# The Three pillars
  139 +
  140 +## State management
  141 +
  142 +There are currently several state managers for Flutter. However, most of them involve using ChangeNotifier to update widgets and this is a bad and very bad approach to performance of medium or large applications. You can check in the official Flutter documentation that [ChangeNotifier should be used with 1 or a maximum of 2 listeners](https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html), making it practically unusable for any application medium or large.
127 143
  144 +Get isn't better or worse than any other state manager, but that you should analyze these points as well as the points below to choose between using Get in pure form (Vanilla), or using it in conjunction with another state manager.
  145 +
  146 +Definitely, Get is not the enemy of any other state manager, because Get is a microframework, not just a state manager, and can be used either alone or in conjunction with them.
  147 +
  148 +Get has two different state managers: the simple state manager (we'll call it GetBuilder) and the reactive state manager (who has the package name, GetX)
  149 +
  150 +### Reactive State Manager
  151 +
  152 +Reactive programming can alienate many people because it is said to be complicated. GetX turns reactive programming into something quite simple:
  153 +
  154 +- You won't need to create StreamControllers.
  155 +- You won't need to create a StreamBuilder for each variable
  156 +- You will not need to create a class for each state.
  157 +- You will not need to create a get for an initial value.
  158 +
  159 +Reactive programming with Get is as easy as using setState.
  160 +
  161 +Let's imagine that you have a name variable and want that every time you change it, all widgets that use it are automatically changed.
  162 +
  163 +This is your count variable:
  164 +
  165 +```dart
  166 +var name = 'Jonatas Borges';
  167 +```
  168 +
  169 +To make it observable, you just need to add ".obs" to the end of it:
  170 +
  171 +```dart
  172 +var name = 'Jonatas Borges'.obs;
128 ``` 173 ```
129 174
130 -This is a simple project but it already makes clear how powerful Get is. As your project grows, this difference will become more significant. Get was designed to work with teams, but it makes the job of an individual developer simple. Improve your deadlines, deliver everything on time without losing performance. Get is not for everyone, but if you identified with that phrase, Get is for you! 175 +And in the UI, when you want to show that value and update the screen whenever tha values changes, simply do this:
  176 +
  177 +```dart
  178 +Obx (() => Text (controller.name));
  179 +```
131 180
132 -### In-depth explanation 181 +That's all. It's *that* simple.
  182 +
  183 +### More details about state management
133 184
134 **See an more in-depth explanation of state management [here](./docs/en_US/state_management.md). There you will see more examples and also the difference between the simple stage manager and the reactive state manager** 185 **See an more in-depth explanation of state management [here](./docs/en_US/state_management.md). There you will see more examples and also the difference between the simple stage manager and the reactive state manager**
135 186
136 -## Route management 187 +### Video explanation about state management
  188 +
  189 +
  190 +Amateur coder did an awesome video about state management! Link: [Complete GetX State Management](https://www.youtube.com/watch?v=CNpXbeI_slw)
137 191
138 -See a more in-depth explanation of route management [here](./docs/en_US/route_management.md) 192 +You will get a good idea of GetX power.
  193 +
  194 +
  195 +## Route management
139 196
140 If you are going to use routes/snackbars/dialogs/bottomsheets without context, GetX is excellent for you too, just see it: 197 If you are going to use routes/snackbars/dialogs/bottomsheets without context, GetX is excellent for you too, just see it:
141 198
@@ -171,22 +228,18 @@ To go to the next screen and cancel all previous routes (useful in shopping cart @@ -171,22 +228,18 @@ To go to the next screen and cancel all previous routes (useful in shopping cart
171 Get.offAll(NextScreen()); 228 Get.offAll(NextScreen());
172 ``` 229 ```
173 230
174 -To navigate to the next route, and receive or update data as soon as you return from it: 231 +Noticed that you didn't had to use context to do any of these things? That's one of the biggest advantages of using Get route management. With this, you can execute all these methods from within your controller class, without worries.
175 232
176 -```dart  
177 -var data = await Get.to(Payment());  
178 -``` 233 +### More details about route management
179 234
180 -Noticed that you didn't had to use context to do any of these things? That's one of the biggest advantages of using Get route management. With this, you can execute all these methods from within your controller class, without worries. 235 +**Get work with named routes and also offer a lower level control over your routes! There is a in-depth documentation [here](./docs/en_US/route_management.md)**
181 236
182 -### In-Depth Explanation 237 +### Video Explanation
183 238
184 -**Note: Get work with named routes too! As said in the beggining, there is a in-depth documentation [here](./docs/en_US/route_management.md)** 239 +Amateur Coder did an excellent video that cover route management with Get! here is the link: [Complete Getx Navigation](https://www.youtube.com/watch?v=RaqPIoJSTtI)
185 240
186 ## Dependency management 241 ## Dependency management
187 242
188 -See a more in-depth explanation of dependency management [here](./docs/en_US/dependency_management.md)  
189 -  
190 Get has a simple and powerful dependency manager that allows you to retrieve the same class as your Bloc or Controller with just 1 lines of code, no Provider context, no inheritedWidget: 243 Get has a simple and powerful dependency manager that allows you to retrieve the same class as your Bloc or Controller with just 1 lines of code, no Provider context, no inheritedWidget:
191 244
192 ```dart 245 ```dart
@@ -217,14 +270,7 @@ And then you will be able to recover your controller data that was obtained back @@ -217,14 +270,7 @@ And then you will be able to recover your controller data that was obtained back
217 Text(controller.textFromApi); 270 Text(controller.textFromApi);
218 ``` 271 ```
219 272
220 -Looking for lazy loading? You can declare all your controllers, and it will be called only when someone needs it. You can do this with:  
221 -  
222 -```dart  
223 -Get.lazyPut<Service>(()=> ApiMock());  
224 -/// ApiMock will only be called when someone uses Get.find<Service> for the first time  
225 -```  
226 -  
227 -### In-depth explanation 273 +### More details about dependency management
228 274
229 **See a more in-depth explanation of dependency management [here](./docs/en_US/dependency_management.md)** 275 **See a more in-depth explanation of dependency management [here](./docs/en_US/dependency_management.md)**
230 276
@@ -233,7 +279,7 @@ Get.lazyPut<Service>(()=> ApiMock()); @@ -233,7 +279,7 @@ Get.lazyPut<Service>(()=> ApiMock());
233 *Want to contribute to the project? We will be proud to highlight you as one of our collaborators. Here are some points where you can contribute and make Get (and Flutter) even better.* 279 *Want to contribute to the project? We will be proud to highlight you as one of our collaborators. Here are some points where you can contribute and make Get (and Flutter) even better.*
234 280
235 - Helping to translate the readme into other languages. 281 - Helping to translate the readme into other languages.
236 -- Adding documentation to the readme (not even half of Get's functions have been documented yet). 282 +- Adding documentation to the readme (a lot of Get's functions haven't been documented yet).
237 - Write articles or make videos teaching how to use Get (they will be inserted in the Readme and in the future in our Wiki). 283 - Write articles or make videos teaching how to use Get (they will be inserted in the Readme and in the future in our Wiki).
238 - Offering PRs for code/tests. 284 - Offering PRs for code/tests.
239 - Including new functions. 285 - Including new functions.
@@ -12,15 +12,23 @@ @@ -12,15 +12,23 @@
12 12
13 ![](getx.png) 13 ![](getx.png)
14 14
  15 +<h2> Pedimos desculpas por qualquer parte não traduzida aqui. O GetX é atualizado com muita frequência e as traduções podem não vir ao mesmo tempo. Então, para manter essa documentação pelo menos com tudo que a versão em inglês tem, eu vou deixar todos os textos não-traduzidos aqui (eu considero que é melhor ele estar lá em inglês do que não estar), então se alguém quiser traduzir, seria muito útil 😁</h2>
  16 +
  17 +- [Canais para comunicação e suporte:](#canais-para-comunicação-e-suporte)
15 - [Sobre Get](#sobre-get) 18 - [Sobre Get](#sobre-get)
16 -- [Instalando e iniciando](#instalando-e-iniciando) 19 +- [Instalando](#instalando)
  20 +- [App Counter usando GetX](#app-counter-usando-getx)
17 - [Os três pilares](#os-três-pilares) 21 - [Os três pilares](#os-três-pilares)
18 - [Gerenciamento de estado](#gerenciamento-de-estado) 22 - [Gerenciamento de estado](#gerenciamento-de-estado)
19 - - [Explicação completa](#explicação-completa) 23 + - [Reactive state manager](#reactive-state-manager)
  24 + - [Mais detalhes sobre gerenciamento de estado](#mais-detalhes-sobre-gerenciamento-de-estado)
  25 + - [Explicação em video do gerenciamento de estado](#explicação-em-video-do-gerenciamento-de-estado)
20 - [Gerenciamento de rotas](#gerenciamento-de-rotas) 26 - [Gerenciamento de rotas](#gerenciamento-de-rotas)
21 - - [Explicação completa](#explicação-completa-1) 27 + - [Mais detalhes sobre gerenciamento de rotas](#mais-detalhes-sobre-gerenciamento-de-rotas)
  28 + - [Explicação em video do gerenciamento de rotas](#explicação-em-video-do-gerenciamento-de-rotas)
22 - [Gerenciamento de Dependência](#gerenciamento-de-dependência) 29 - [Gerenciamento de Dependência](#gerenciamento-de-dependência)
23 - - [Explicação completa](#explicação-completa-2) 30 + - [Mais detalhes sobre gerenciamento de dependências](#mais-detalhes-sobre-gerenciamento-de-dependências)
  31 +- [Como contribuir](#como-contribuir)
24 - [Utilidades](#utilidades) 32 - [Utilidades](#utilidades)
25 - [Mudar tema (changeTheme)](#mudar-tema-changetheme) 33 - [Mudar tema (changeTheme)](#mudar-tema-changetheme)
26 - [Outras APIs avançadas](#outras-apis-avançadas) 34 - [Outras APIs avançadas](#outras-apis-avançadas)
@@ -30,7 +38,15 @@ @@ -30,7 +38,15 @@
30 - [RxController e GetBuilder se uniram](#rxcontroller-e-getbuilder-se-uniram) 38 - [RxController e GetBuilder se uniram](#rxcontroller-e-getbuilder-se-uniram)
31 - [Rotas nomeadas](#rotas-nomeadas) 39 - [Rotas nomeadas](#rotas-nomeadas)
32 - [Porque essa mudança](#porque-essa-mudança) 40 - [Porque essa mudança](#porque-essa-mudança)
33 -- [Por que GetX](#por-que-getx) 41 +- [Por que GetX?](#por-que-getx)
  42 +
  43 +# Canais para comunicação e suporte:
  44 +
  45 +[**Slack (Inglês)**](https://communityinviter.com/apps/getxworkspace/getx)
  46 +
  47 +[**Discord (Inglês e Português)**](https://discord.com/invite/9Y3wK9)
  48 +
  49 +[**Telegram (Português)**](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g)
34 50
35 # Sobre Get 51 # Sobre Get
36 52
@@ -46,17 +62,7 @@ @@ -46,17 +62,7 @@
46 62
47 **GetX faz seu desenvolvimento mais produtivo, mas quer deixá-lo mais produtivo ainda? Adicione a extensão [GetX extension](https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets) no seu VSCode**. Não disponível para outras IDEs por enquanto. 63 **GetX faz seu desenvolvimento mais produtivo, mas quer deixá-lo mais produtivo ainda? Adicione a extensão [GetX extension](https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets) no seu VSCode**. Não disponível para outras IDEs por enquanto.
48 64
49 -Quer contribuir no projeto? Nós ficaremos orgulhosos de ressaltar você como um dos colaboradores. Aqui vai algumas formas em que você pode contribuir e fazer Get (e Flutter) ainda melhores  
50 -  
51 -- Ajudando a traduzir o README para outras linguagens.  
52 -- Adicionando mais documentação ao README (até o momento, nem metade das funcionalidades do Get foram documentadas).  
53 -- Fazendo artigos/vídeos ensinando a usar o Get (eles serão inseridos no README, e no futuro na nossa Wiki).  
54 -- Fazendo PR's (Pull-Requests) para código/testes.  
55 -- Incluindo novas funcionalidades.  
56 -  
57 -Qualquer contribuição é bem-vinda!  
58 -  
59 -# Instalando e iniciando 65 +# Instalando
60 66
61 Adicione Get ao seu arquivo pubspec.yaml 67 Adicione Get ao seu arquivo pubspec.yaml
62 68
@@ -71,11 +77,7 @@ Importe o get nos arquivos que ele for usado: @@ -71,11 +77,7 @@ Importe o get nos arquivos que ele for usado:
71 import 'package:get/get.dart'; 77 import 'package:get/get.dart';
72 ``` 78 ```
73 79
74 -# Os três pilares  
75 -  
76 -## Gerenciamento de estado  
77 -  
78 -**Veja uma explicação mais completa do gerenciamento de estado [aqui](./docs/pt_BR/state_management.md)** 80 +# App Counter usando GetX
79 81
80 O app 'Counter' criado por padrão no flutter com o comando `flutter create` tem mais de 100 linhas(incluindo os comentários). Para demonstrar o poder do Get, irei demonstrar como fazer o mesmo 'Counter' mudando o estado em cada toque trocando entre páginas e compartilhando o estado entre telas. Tudo de forma organizada, separando a lógica de negócio da View, COM SOMENTE 26 LINHAS INCLUINDO COMENTÁRIOS 82 O app 'Counter' criado por padrão no flutter com o comando `flutter create` tem mais de 100 linhas(incluindo os comentários). Para demonstrar o poder do Get, irei demonstrar como fazer o mesmo 'Counter' mudando o estado em cada toque trocando entre páginas e compartilhando o estado entre telas. Tudo de forma organizada, separando a lógica de negócio da View, COM SOMENTE 26 LINHAS INCLUINDO COMENTÁRIOS
81 83
@@ -131,19 +133,72 @@ class Outra extends StatelessWidget { @@ -131,19 +133,72 @@ class Outra extends StatelessWidget {
131 133
132 ``` 134 ```
133 135
  136 +Resultado:
  137 +
  138 +![](counter-app-gif.gif)
  139 +
134 Esse é um projeto simples mas já deixa claro o quão poderoso o Get é. Enquanto seu projeto cresce, essa diferença se torna bem mais significante. 140 Esse é um projeto simples mas já deixa claro o quão poderoso o Get é. Enquanto seu projeto cresce, essa diferença se torna bem mais significante.
135 141
136 Get foi feito para funcionar com times, mas torna o trabalho de um desenvolvedor individual simples. 142 Get foi feito para funcionar com times, mas torna o trabalho de um desenvolvedor individual simples.
137 143
138 Melhore seus prazos, entregue tudo a tempo sem perder performance. Get não é para todos, mas se você identificar com o que foi dito acima, Get é para você! 144 Melhore seus prazos, entregue tudo a tempo sem perder performance. Get não é para todos, mas se você identificar com o que foi dito acima, Get é para você!
139 145
140 -### Explicação completa  
141 146
142 -**Veja uma explicação mais completa do gerenciamento de estado [aqui](./docs/pt_BR/state_management.md)** 147 +# Os três pilares
  148 +
  149 +## Gerenciamento de estado
  150 +
  151 +Há atualmente vários gerenciadores de estados para o Flutter. Porém, a maioria deles envolve usar `ChangeNotifier` para atualizar os widgets e isso é uma abordagem muito ruim no quesito performance em aplicações de médio ou grande porte. Você pode checar na documentação oficial do Flutter que o [`ChangeNotifier` deveria ser usado com um ou no máximo dois listeners](https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html), fazendo-o praticamente inutilizável em qualquer aplicação média ou grande.
143 152
144 -## Gerenciamento de rotas 153 +Get não é melhor ou pior que nenhum gerenciador de estado, mas você deveria analisar esses pontos tanto quanto os argumentos abaixo para escolher entre usar Get na sua forma pura, ou usando-o em conjunto com outro gerenciador de estado.
145 154
146 -Veja uma explicação mais completa do gerenciamento de rotas [aqui](./docs/pt_BR/route_management.md) 155 +Definitivamente, Get não é o inimigo de nenhum gerenciador, porque Get é um microframework, não apenas um gerenciador, e pode ser usado tanto sozinho quanto em conjunto com eles.
  156 +
  157 +### Reactive state manager
  158 +
  159 +Programação reativa pode alienar muitas pessoas porque é dito que é complicado. GetX transforma a programação reativa em algo bem simples:
  160 +
  161 +* Você não precisa de criar StreamControllers
  162 +* Você não precisa criar um StreamBuilder para cada variável
  163 +* Você não precisa criar uma classe para cada estado
  164 +* Você não precisa criar um get para o valor inicial
  165 +
  166 +Programação reativa com o Get é tão fácil quanto usar setState.
  167 +
  168 +Vamos imaginar que você tenha uma variável e quer que toda vez que ela alterar, todos os widgets que a usam são automaticamente alterados.
  169 +
  170 +Essa é sua variável:
  171 +
  172 +```dart
  173 +var name = 'Jonatas Borges';
  174 +```
  175 +
  176 +Para fazer dela uma variável observável, você só precisa adicionar `.obs` no final:
  177 +
  178 +```dart
  179 +var name = 'Jonatas Borges'.obs;
  180 +```
  181 +
  182 +E Na UI, quando quiser mostrar a variável e escutar as mudanças dela, simplesmente faça isso:
  183 +
  184 +
  185 +```dart
  186 +Obx (() => Text (controller.name));
  187 +```
  188 +
  189 +Só isso. É *simples assim*;
  190 +
  191 +### Mais detalhes sobre gerenciamento de estado
  192 +
  193 +**Veja uma explicação mais completa do gerenciamento de estado [aqui](./docs/pt_BR/state_management.md). Lá terá mais exemplos e também a diferença do simple state manager do reactive state manager**
  194 +
  195 +### Explicação em video do gerenciamento de estado
  196 +
  197 +Amateur Coder fez um vídeo ótimo sobre o gerenciamento de estado! (em inglês). Link: [Complete GetX State Management](https://www.youtube.com/watch?v=CNpXbeI_slw)
  198 +
  199 +Você vai ter uma boa idea do poder do GetX
  200 +
  201 +## Gerenciamento de rotas
147 202
148 Para navegar para uma próxima tela: 203 Para navegar para uma próxima tela:
149 204
@@ -177,13 +232,15 @@ var dados = await Get.to(Pagamento()); @@ -177,13 +232,15 @@ var dados = await Get.to(Pagamento());
177 232
178 Notou que você não precisou usar `context` para fazer nenhuma dessas coisas? Essa é uma das maiores vantagens de usar o gerenciamento de rotas do GetX. Com isso, você pode executar todos esse métodos de dentro da classe Controller, sem preocupações. 233 Notou que você não precisou usar `context` para fazer nenhuma dessas coisas? Essa é uma das maiores vantagens de usar o gerenciamento de rotas do GetX. Com isso, você pode executar todos esse métodos de dentro da classe Controller, sem preocupações.
179 234
180 -### Explicação completa 235 +### Mais detalhes sobre gerenciamento de rotas
181 236
182 **GetX funciona com rotas nomeadas também! Veja uma explicação mais completa do gerenciamento de rotas [aqui](./docs/pt_BR/route_management.md)** 237 **GetX funciona com rotas nomeadas também! Veja uma explicação mais completa do gerenciamento de rotas [aqui](./docs/pt_BR/route_management.md)**
183 238
184 -## Gerenciamento de Dependência 239 +### Explicação em video do gerenciamento de rotas
185 240
186 -**Veja uma explicação mais completa do gerenciamento de dependência [aqui](./docs/pt_BR/dependency_management.md)** 241 +Amateur Coder fez um outro vídeo excelente sobre gerenciamento de rotas! Link: [Complete Getx Navigation](https://www.youtube.com/watch?v=RaqPIoJSTtI)
  242 +
  243 +## Gerenciamento de Dependência
187 244
188 - Nota: Se você está usando o gerenciador de estado do Get, você não precisa se preocupar com isso, só leia a documentação, mas dê uma atenção a api `Bindings`, que vai fazer tudo isso automaticamente para você. 245 - Nota: Se você está usando o gerenciador de estado do Get, você não precisa se preocupar com isso, só leia a documentação, mas dê uma atenção a api `Bindings`, que vai fazer tudo isso automaticamente para você.
189 246
@@ -223,10 +280,22 @@ Get.lazyPut<Service>(()=> ApiMock()); @@ -223,10 +280,22 @@ Get.lazyPut<Service>(()=> ApiMock());
223 /// ApiMock só será chamado quando alguém usar o Get.find<Service> pela primeira vez 280 /// ApiMock só será chamado quando alguém usar o Get.find<Service> pela primeira vez
224 ``` 281 ```
225 282
226 -### Explicação completa 283 +### Mais detalhes sobre gerenciamento de dependências
227 284
228 **Veja uma explicação mais completa do gerenciamento de dependência [aqui](./docs/pt_BR/dependency_management.md)** 285 **Veja uma explicação mais completa do gerenciamento de dependência [aqui](./docs/pt_BR/dependency_management.md)**
229 286
  287 +# Como contribuir
  288 +
  289 +Quer contribuir no projeto? Nós ficaremos orgulhosos de ressaltar você como um dos colaboradores. Aqui vai algumas formas em que você pode contribuir e fazer Get (e Flutter) ainda melhores
  290 +
  291 +- Ajudando a traduzir o README para outras linguagens.
  292 +- Adicionando mais documentação ao README (até o momento, várias das funcionalidades do Get não foram documentadas).
  293 +- Fazendo artigos/vídeos ensinando a usar o Get (eles serão inseridos no README, e no futuro na nossa Wiki).
  294 +- Fazendo PR's (Pull-Requests) para código/testes.
  295 +- Incluindo novas funcionalidades.
  296 +
  297 +Qualquer contribuição é bem-vinda!
  298 +
230 # Utilidades 299 # Utilidades
231 300
232 ## Mudar tema (changeTheme) 301 ## Mudar tema (changeTheme)
1 -# Dependency Management 1 +- [Simple Instance Manager](#simple-instance-manager)
  2 +- [Options](#options)
  3 +- [Bindings](#bindings)
  4 + - [How to use](#how-to-use)
  5 +- [SmartManagement](#smartmanagement)
2 6
3 ## Simple Instance Manager 7 ## Simple Instance Manager
4 8
  1 +- [Route Management](#route-management)
  2 + - [How to use](#how-to-use)
  3 + - [Navigation without named routes](#navigation-without-named-routes)
  4 + - [Navigation with named routes](#navigation-with-named-routes)
  5 + - [Send data to named Routes](#send-data-to-named-routes)
  6 + - [Dynamic urls links](#dynamic-urls-links)
  7 + - [Middleware](#middleware)
  8 + - [Navigation without context](#navigation-without-context)
  9 + - [SnackBars](#snackbars)
  10 + - [Dialogs](#dialogs)
  11 + - [BottomSheets](#bottomsheets)
  12 + - [Nested Navigation](#nested-navigation)
1 13
2 # Route Management 14 # Route Management
3 15
  16 +This is the complete explanation of all there is to Getx when the matter is route management.
  17 +
4 ## How to use 18 ## How to use
5 19
6 Add this to your pubspec.yaml file: 20 Add this to your pubspec.yaml file:
  1 +- [State Management](#state-management)
  2 + - [Reactive State Manager](#reactive-state-manager)
  3 + - [Advantages](#advantages)
  4 + - [Usage](#usage)
  5 + - [Example](#example)
  6 + - [Conditions to rebuild](#conditions-to-rebuild)
  7 + - [Where .obs can be used](#where-obs-can-be-used)
  8 + - [Note about Lists](#note-about-lists)
  9 + - [Why i have to use .value](#why-i-have-to-use-value)
  10 + - [Obx()](#obx)
  11 + - [Workers](#workers)
  12 + - [Mixing the two state managers](#mixing-the-two-state-managers)
  13 + - [Simple State Manager](#simple-state-manager)
  14 + - [Advantages](#advantages-1)
  15 + - [Usage](#usage-1)
  16 + - [How it handles controllers](#how-it-handles-controllers)
  17 + - [You won't need StatefulWidgets anymore](#you-wont-need-statefulwidgets-anymore)
  18 + - [Why it exists](#why-it-exists)
  19 + - [Other ways of using it](#other-ways-of-using-it)
  20 + - [Unique IDs](#unique-ids)
  21 + - [GetBuilder vs GetX vs Obx vs MixinBuilder](#getbuilder-vs-getx-vs-obx-vs-mixinbuilder)
  22 +
1 # State Management 23 # State Management
2 24
3 There are currently several state managers for Flutter. However, most of them involve using ChangeNotifier to update widgets and this is a bad and very bad approach to performance of medium or large applications. You can check in the official Flutter documentation that [ChangeNotifier should be used with 1 or a maximum of 2 listeners](https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html), making it practically unusable for any application medium or large. 25 There are currently several state managers for Flutter. However, most of them involve using ChangeNotifier to update widgets and this is a bad and very bad approach to performance of medium or large applications. You can check in the official Flutter documentation that [ChangeNotifier should be used with 1 or a maximum of 2 listeners](https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html), making it practically unusable for any application medium or large.
  1 +- [Gestión de dependencias](#gestión-de-dependencias)
  2 + - [Simple Instance Manager](#simple-instance-manager)
  3 + - [Options](#options)
  4 + - [Bindings](#bindings)
  5 + - [Cómo utilizar](#cómo-utilizar)
  6 + - [SmartManagement](#smartmanagement)
  7 +
1 8
2 # Gestión de dependencias 9 # Gestión de dependencias
3 10
  1 +- [Gestión de Rutas](#gestión-de-rutas)
  2 + - [¿Cómo utilizarlo](#cómo-utilizarlo)
  3 + - [Navegación sin rutas nombradas](#navegación-sin-rutas-nombradas)
  4 + - [Navegación con rutas nombradas](#navegación-con-rutas-nombradas)
  5 + - [Enviar datos a rutas nombradas](#enviar-datos-a-rutas-nombradas)
  6 + - [Enlaces de URL dinámicos](#enlaces-de-url-dinámicos)
  7 + - [Middleware](#middleware)
  8 + - [Navegación sin contexto](#navegación-sin-contexto)
  9 + - [SnackBars](#snackbars)
  10 + - [Diálogos](#diálogos)
  11 + - [BottomSheets](#bottomsheets)
  12 + - [Navegación anidada](#navegación-anidada)
1 13
2 # Gestión de Rutas 14 # Gestión de Rutas
3 15
  1 +- [Gestión del Estado](#gestión-del-estado)
  2 + - [Gestor de Estado Simple](#gestor-de-estado-simple)
  3 + - [Ventajas](#ventajas)
  4 + - [Uso](#uso)
  5 + - [Cómo maneja los Controllers](#cómo-maneja-los-controllers)
  6 + - [Ya no necesitará StatefulWidgets](#ya-no-necesitará-statefulwidgets)
  7 + - [Por qué existe](#por-qué-existe)
  8 + - [Otras formas de usarlo](#otras-formas-de-usarlo)
  9 + - [ID únicos](#id-únicos)
  10 + - [Reactivo STATE_MANAGER](#reactivo-state_manager)
  11 + - [Ventajas](#ventajas-1)
  12 + - [Uso](#uso-1)
  13 + - [Donde se pueden usar .obs](#donde-se-pueden-usar-obs)
  14 + - [Nota sobre listas](#nota-sobre-listas)
  15 + - [¿Por qué tengo que usar .value](#por-qué-tengo-que-usar-value)
  16 + - [Obx()](#obx)
  17 + - [Workers](#workers)
  18 + - [Mezclando los dos State Managers](#mezclando-los-dos-state-managers)
  19 + - [GetBuilder vs GetX vs Obx vs MixinBuilder](#getbuilder-vs-getx-vs-obx-vs-mixinbuilder)
1 20
2 # Gestión del Estado 21 # Gestión del Estado
3 22
  1 +- [Gerenciamento de dependência](#gerenciamento-de-dependência)
  2 + - [Gerenciamento de dependências simples](#gerenciamento-de-dependências-simples)
  3 + - [Opções](#opções)
  4 + - [Bindings](#bindings)
  5 + - [Como utilizar](#como-utilizar)
  6 +
1 # Gerenciamento de dependência 7 # Gerenciamento de dependência
2 8
3 ## Gerenciamento de dependências simples 9 ## Gerenciamento de dependências simples
  1 +- [Navegação sem rotas nomeadas](#navegação-sem-rotas-nomeadas)
  2 + - [SnackBars](#snackbars)
  3 + - [Dialogs](#dialogs)
  4 + - [BottomSheets](#bottomsheets)
  5 +- [Navegar com rotas nomeadas](#navegar-com-rotas-nomeadas)
  6 + - [Enviar dados para rotas nomeadas](#enviar-dados-para-rotas-nomeadas)
  7 + - [Links de Url dinâmicos](#links-de-url-dinâmicos)
  8 + - [Middleware](#middleware)
  9 + - [Change Theme](#change-theme)
  10 + - [Configurações Globais Opcionais](#configurações-globais-opcionais)
  11 + - [Nested Navigators](#nested-navigators)
1 12
2 ## Navegação sem rotas nomeadas 13 ## Navegação sem rotas nomeadas
3 14
@@ -464,7 +475,7 @@ Get.config( @@ -464,7 +475,7 @@ Get.config(
464 defaultPopGesture = true, 475 defaultPopGesture = true,
465 defaultTransition = Transitions.cupertino 476 defaultTransition = Transitions.cupertino
466 ) 477 )
467 - 478 +```
468 ### Nested Navigators 479 ### Nested Navigators
469 480
470 Get fez a navegação aninhada no Flutter mais fácil ainda. Você não precisa do `context`, e você encontrará sua `navigation stack` pela ID. 481 Get fez a navegação aninhada no Flutter mais fácil ainda. Você não precisa do `context`, e você encontrará sua `navigation stack` pela ID.
  1 +- [Simple State Manager](#simple-state-manager)
  2 + - [Uso do gerenciador de estado simples](#uso-do-gerenciador-de-estado-simples)
  3 + - [Sem StatefulWidget](#sem-statefulwidget)
  4 + - [Formas de uso](#formas-de-uso)
  5 +- [Reactive State Manager](#reactive-state-manager)
  6 + - [GetX vs GetBuilder vs Obx vs MixinBuilder](#getx-vs-getbuilder-vs-obx-vs-mixinbuilder)
  7 +- [Workers](#workers)
1 8
2 -## Gerenciador de estado simples 9 +## Simple State Manager
3 10
4 -Há atualmente vários gerenciadores de estados para o Flutter. Porém, a maioria deles envolve usar `ChangeNotifier` para atualizar os widgets e isso é uma abordagem muito ruim no quesito performance em aplicações de médio ou grande porte. Você pode checar na documentação oficial do Flutter que o [`ChangeNotifier` deveria ser usado com um ou no máximo dois listeners](https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html), fazendo-o praticamente inutilizável em qualquer aplicação média ou grande. Outros gerenciadores de estado são bons, mas tem suas nuances. BLoC é bem seguro e eficiente, mas é muito complexo (especialmente para iniciantes), o que impediu pessoas de desenvolverem com Flutter. MobX é mais fácil que o BLoc e é reativo, quase perfeito eu diria, mas você precisa usar um code generator que, para aplicações de grande porte, reduz a produtividade (você terá que beber vários cafés até que seu código esteja pronto denovo depois de um `flutter clean`, o que não é culpa do MobX, na verdade o code generator que é muito lento!). Provider usa o `InheritedWidget` para entregar o mesmo listener, como uma forma de solucionar o problema reportado acima com o ChangeNotifier, o que indica que qualquer acesso ao ChangeNotifier dele tem que ser dentro da árvore de widgets por causa do `context` necessário para acessar o Inherited. 11 +Há atualmente vários gerenciadores de estados para o Flutter. Porém, a maioria deles envolve usar `ChangeNotifier` para atualizar os widgets e isso é uma abordagem muito ruim no quesito performance em aplicações de médio ou grande porte. Você pode checar na documentação oficial do Flutter que o [`ChangeNotifier` deveria ser usado com um ou no máximo dois listeners](https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html), fazendo-o praticamente inutilizável em qualquer aplicação média ou grande.
5 12
6 -Get não é melhor ou pior que nenhum gerenciador de estado, mas você deveria analisar esses pontos tanto quanto os argumentos abaixo para escolher entre usar Get na sua forma pura, ou usando-o em conjunto com outro gerenciador de estado. Definitivamente, Get não é o inimigo de nenhum gerenciador, porque Get é um microframework, não apenas um gerenciador, e pode ser usado tanto sozinho quanto em conjunto com eles. 13 +Outros gerenciadores de estado são bons, mas tem suas nuances.
7 14
8 -Get tem um gerenciador de estado que é extremamente leve e fácil (escrito em apenas 95 linha de código), que não usa ChangeNotifier, vai atender a necessidade especialmente daqueles novos no Flutter, e não vai causar problemas em aplicações de grande porte. 15 +* BLoC é bem seguro e eficiente, mas é muito complexo (especialmente para iniciantes), o que impediu pessoas de desenvolverem com Flutter.
  16 +* MobX é mais fácil que o BLoc e é reativo, quase perfeito eu diria, mas você precisa usar um code generator que, para aplicações de grande porte, reduz a produtividade (você terá que beber vários cafés até que seu código esteja pronto denovo depois de um `flutter clean`, o que não é culpa do MobX, na verdade o code generator que é muito lento!).
  17 +* Provider usa o `InheritedWidget` para entregar o mesmo listener, como uma forma de solucionar o problema reportado acima com o ChangeNotifier, o que indica que qualquer acesso ao ChangeNotifier dele tem que ser dentro da árvore de widgets por causa do `context` necessário para acessar o Inherited.
  18 +
  19 +Get não é melhor ou pior que nenhum gerenciador de estado, mas você deveria analisar esses pontos tanto quanto os argumentos abaixo para escolher entre usar Get na sua forma pura, ou usando-o em conjunto com outro gerenciador de estado.
  20 +
  21 +Definitivamente, Get não é o inimigo de nenhum gerenciador, porque Get é um microframework, não apenas um gerenciador, e pode ser usado tanto sozinho quanto em conjunto com eles.
  22 +
  23 +Get tem um gerenciador de estado que é extremamente leve e fácil que não usa ChangeNotifier, vai atender a necessidade especialmente daqueles novos no Flutter, e não vai causar problemas em aplicações de grande porte.
9 24
10 **Que melhoras na performance o Get traz?** 25 **Que melhoras na performance o Get traz?**
11 26