Nipodemos

several changes in docs

@@ -11,20 +11,35 @@ @@ -11,20 +11,35 @@
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)  
17 - - [Explicación completa](#explicación-completa)  
18 - - [Gestión de Rutas](#gestión-de-rutas)  
19 - - [Explicación completa](#explicación-completa-1)  
20 - - [Gestión de dependencias](#gestión-de-dependencias)  
21 - - [Explicación completa](#explicación-completa-2) 22 + * [Gestión del Estado](#gesti-n-del-estado)
  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)
  25 + * [Gestión de Rutas](#gesti-n-de-rutas)
  26 + + [Más detalles sobre la gestión de rutas.](#m-s-detalles-sobre-la-gesti-n-de-rutas)
  27 + * [Gestión de dependencias](#gesti-n-de-dependencias)
  28 + + [Más detalles sobre la gestión de dependencias.](#m-s-detalles-sobre-la-gesti-n-de-dependencias)
22 - [Utils](#utils) 29 - [Utils](#utils)
23 - - [Cambiar de tema](#cambiar-de-tema)  
24 - - [Otras API avanzadas y configuraciones manuales](#otras-api-avanzadas-y-configuraciones-manuales)  
25 - - [Configuraciones globales opcionales](#configuraciones-globales-opcionales) 30 + * [Cambiar de tema](#cambiar-de-tema)
  31 + * [Otras API avanzadas y configuraciones manuales](#otras-api-avanzadas-y-configuraciones-manuales)
  32 + + [Configuraciones globales opcionales](#configuraciones-globales-opcionales)
26 - [Rompiendo cambios desde 2.0](#rompiendo-cambios-desde-20) 33 - [Rompiendo cambios desde 2.0](#rompiendo-cambios-desde-20)
27 -- [¿Por qué Getx?](#por-qué-getx) 34 +- [¿Por qué Getx?](#-por-qu--getx-)
  35 +
  36 +# Communication and support channels:
  37 +
  38 +[**Slack (English)**](https://communityinviter.com/apps/getxworkspace/getx)
  39 +
  40 +[**Discord (English and Portuguese)**](https://discord.com/invite/9Y3wK9)
  41 +
  42 +[**Telegram (Portuguese)**](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g)
28 43
29 # Sobre GetX 44 # Sobre GetX
30 45
@@ -38,6 +53,8 @@ @@ -38,6 +53,8 @@
38 53
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)** 54 **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 55
  56 +# Como contribuir
  57 +
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.* 58 *¿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 59
43 - Ayudando a traducir el archivo Léame a otros idiomas. 60 - Ayudando a traducir el archivo Léame a otros idiomas.
@@ -50,9 +67,22 @@ @@ -50,9 +67,22 @@
50 67
51 - Incluyendo nuevas funciones. 68 - Incluyendo nuevas funciones.
52 69
53 -# Los tres pilares 70 +# Installing
54 71
55 -## Gestión del Estado 72 +Add Get to your pubspec.yaml file:
  73 +
  74 +```yaml
  75 +dependencies:
  76 + get:
  77 +```
  78 +
  79 +Import get in files that it will be used:
  80 +
  81 +```dart
  82 +import 'package:get/get.dart';
  83 +```
  84 +
  85 +# Proyeto Counter no GetX
56 86
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 87 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 88
@@ -114,14 +144,46 @@ class Other extends StatelessWidget { @@ -114,14 +144,46 @@ class Other extends StatelessWidget {
114 144
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! 145 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 146
117 -### Explicación completa 147 +# Los tres pilares
  148 +
  149 +## Gestión del Estado
  150 +
  151 +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.
  152 +
  153 +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.
  154 +
  155 +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.
  156 +
  157 +### Reactivo STATE_MANAGER
  158 +
  159 +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!).
  160 +
  161 +Imaginemos que tiene una variable "name" y desea que cada vez que la modifique, todos los widgets que la usan cambien automáticamente.
  162 +
  163 +Ej. esta es tu variable "name":
  164 +
  165 +```dart
  166 +var name = 'Jonatas Borges';
  167 +```
  168 +
  169 +Para que sea observable, solo necesita agregar ".obs" al final:
  170 +
  171 +```dart
  172 +var name = 'Jonatas Borges'.obs;
  173 +```
  174 +
  175 +¿StreamBuilder? ¿initialValue? ¿builder? No, solo necesitas jugar con esta variable dentro de un widget Obx.
  176 +
  177 +```dart
  178 +Obx(() => Text (controller.name));
  179 +```
  180 +
  181 +### Más detalles sobre la gestión del estado.
118 182
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** 183 **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 184
121 ## Gestión de Rutas 185 ## Gestión de Rutas
122 186
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: 187 Para navegar a una nueva pantalla:
126 188
127 ```dart 189 ```dart
@@ -152,13 +214,15 @@ Para navegar a la siguiente ruta y recibir o actualizar datos tan pronto como se @@ -152,13 +214,15 @@ Para navegar a la siguiente ruta y recibir o actualizar datos tan pronto como se
152 var data = await Get.to(Payment()); 214 var data = await Get.to(Payment());
153 ``` 215 ```
154 216
155 -### Explicación completa 217 +### Más detalles sobre la gestión de rutas.
156 218
157 **Vea una explicación más detallada de la Gestión de Rutas [aquí](./docs/es_ES/route_management.md).** 219 **Vea una explicación más detallada de la Gestión de Rutas [aquí](./docs/es_ES/route_management.md).**
158 220
159 -## Gestión de dependencias 221 +### Video Explanation
160 222
161 -Vea una explicación más detallada de la Gestión de dependencias [aquí](./docs/es_ES/dependency_management.md). 223 +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)
  224 +
  225 +## Gestión de dependencias
162 226
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. 227 - 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 228
@@ -194,7 +258,7 @@ Get.lazyPut<Service>(()=> ApiMock()); @@ -194,7 +258,7 @@ Get.lazyPut<Service>(()=> ApiMock());
194 /// ApiMock will only be called when someone uses Get.find<Service> for the first time 258 /// ApiMock will only be called when someone uses Get.find<Service> for the first time
195 ``` 259 ```
196 260
197 -### Explicación completa 261 +### Más detalles sobre la gestión de dependencias.
198 262
199 **Vea una explicación más detallada de la Gestión de dependencias [aquí](./docs/es_ES/dependency_management.md).** 263 **Vea una explicación más detallada de la Gestión de dependencias [aquí](./docs/es_ES/dependency_management.md).**
200 264
@@ -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,74 @@ class Other extends StatelessWidget { @@ -123,19 +121,74 @@ 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 +This is a simple project but it already makes clear how powerful Get is. As your project grows, this difference will become more significant.
  129 +
  130 +Get was designed to work with teams, but it makes the job of an individual developer simple.
  131 +
  132 +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!
  133 +
  134 +# The Three pillars
  135 +
  136 +## State management
  137 +
  138 +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.
  139 +
  140 +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.
127 141
  142 +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.
  143 +
  144 +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)
  145 +
  146 +### Reactive State Manager
  147 +
  148 +Reactive programming can alienate many people because it is said to be complicated. GetX turns reactive programming into something quite simple:
  149 +
  150 +- You won't need to create StreamControllers.
  151 +- You won't need to create a StreamBuilder for each variable
  152 +- You will not need to create a class for each state.
  153 +- You will not need to create a get for an initial value.
  154 +
  155 +Reactive programming with Get is as easy as using setState.
  156 +
  157 +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.
  158 +
  159 +This is your count variable:
  160 +
  161 +```dart
  162 +var name = 'Jonatas Borges';
  163 +```
  164 +
  165 +To make it observable, you just need to add ".obs" to the end of it:
  166 +
  167 +```dart
  168 +var name = 'Jonatas Borges'.obs;
  169 +```
  170 +
  171 +And in the UI, when you want to show that value and update the screen whenever tha values changes, simply do this:
  172 +
  173 +```dart
  174 +Obx (() => Text (controller.name));
128 ``` 175 ```
129 176
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! 177 +That's all. It's *that* simple.
131 178
132 -### In-depth explanation 179 +### More details about state management
133 180
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** 181 **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 182
136 -## Route management 183 +### Video explanation about state management
  184 +
  185 +
  186 +Amateur coder did an awesome video about state management! Link: [Complete GetX State Management](https://www.youtube.com/watch?v=CNpXbeI_slw)
137 187
138 -See a more in-depth explanation of route management [here](./docs/en_US/route_management.md) 188 +You will get a good idea of GetX power.
  189 +
  190 +
  191 +## Route management
139 192
140 If you are going to use routes/snackbars/dialogs/bottomsheets without context, GetX is excellent for you too, just see it: 193 If you are going to use routes/snackbars/dialogs/bottomsheets without context, GetX is excellent for you too, just see it:
141 194
@@ -171,22 +224,18 @@ To go to the next screen and cancel all previous routes (useful in shopping cart @@ -171,22 +224,18 @@ To go to the next screen and cancel all previous routes (useful in shopping cart
171 Get.offAll(NextScreen()); 224 Get.offAll(NextScreen());
172 ``` 225 ```
173 226
174 -To navigate to the next route, and receive or update data as soon as you return from it: 227 +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 228
176 -```dart  
177 -var data = await Get.to(Payment());  
178 -``` 229 +### More details about route management
179 230
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. 231 +**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 232
182 -### In-Depth Explanation 233 +### Video Explanation
183 234
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)** 235 +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 236
186 ## Dependency management 237 ## Dependency management
187 238
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: 239 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 240
192 ```dart 241 ```dart
@@ -217,14 +266,7 @@ And then you will be able to recover your controller data that was obtained back @@ -217,14 +266,7 @@ And then you will be able to recover your controller data that was obtained back
217 Text(controller.textFromApi); 266 Text(controller.textFromApi);
218 ``` 267 ```
219 268
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 269 +### More details about dependency management
228 270
229 **See a more in-depth explanation of dependency management [here](./docs/en_US/dependency_management.md)** 271 **See a more in-depth explanation of dependency management [here](./docs/en_US/dependency_management.md)**
230 272
@@ -233,7 +275,7 @@ Get.lazyPut<Service>(()=> ApiMock()); @@ -233,7 +275,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.* 275 *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 276
235 - Helping to translate the readme into other languages. 277 - 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). 278 +- 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). 279 - 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. 280 - Offering PRs for code/tests.
239 - Including new functions. 281 - Including new functions.
@@ -12,25 +12,41 @@ @@ -12,25 +12,41 @@
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)  
17 -- [Os três pilares](#os-três-pilares)  
18 - - [Gerenciamento de estado](#gerenciamento-de-estado)  
19 - - [Explicação completa](#explicação-completa)  
20 - - [Gerenciamento de rotas](#gerenciamento-de-rotas)  
21 - - [Explicação completa](#explicação-completa-1)  
22 - - [Gerenciamento de Dependência](#gerenciamento-de-dependência)  
23 - - [Explicação completa](#explicação-completa-2) 19 +- [Instalando](#instalando)
  20 +- [App Counter usando GetX](#app-counter-usando-getx)
  21 +- [Os três pilares](#os-tr-s-pilares)
  22 + * [Gerenciamento de estado](#gerenciamento-de-estado)
  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)
  26 + * [Gerenciamento de rotas](#gerenciamento-de-rotas)
  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)
  29 + * [Gerenciamento de Dependência](#gerenciamento-de-dependência)
  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)  
26 - - [Outras APIs avançadas](#outras-apis-avançadas)  
27 - - [Configurações Globais opcionais e configurações manuais](#configurações-globais-opcionais-e-configurações-manuais) 33 + * [Mudar tema (changeTheme)](#mudar-tema--changetheme-)
  34 + * [Outras APIs avançadas](#outras-apis-avan-adas)
  35 + + [Configurações Globais opcionais e configurações manuais](#configura--es-globais-opcionais-e-configura--es-manuais)
28 - [Breaking Changes da versão 2 para 3](#breaking-changes-da-versão-2-para-3) 36 - [Breaking Changes da versão 2 para 3](#breaking-changes-da-versão-2-para-3)
29 - - [Tipagem Rx](#tipagem-rx)  
30 - - [RxController e GetBuilder se uniram](#rxcontroller-e-getbuilder-se-uniram)  
31 - - [Rotas nomeadas](#rotas-nomeadas)  
32 - - [Porque essa mudança](#porque-essa-mudança)  
33 -- [Por que GetX](#por-que-getx) 37 + * [Tipagem Rx](#tipagem-rx)
  38 + * [RxController e GetBuilder se uniram](#rxcontroller-e-getbuilder-se-uniram)
  39 + * [Rotas nomeadas](#rotas-nomeadas)
  40 + + [Porque essa mudança](#porque-essa-mudança)
  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
@@ -137,13 +139,62 @@ Get foi feito para funcionar com times, mas torna o trabalho de um desenvolvedor @@ -137,13 +139,62 @@ Get foi feito para funcionar com times, mas torna o trabalho de um desenvolvedor
137 139
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ê! 140 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 141
140 -### Explicação completa  
141 142
142 -**Veja uma explicação mais completa do gerenciamento de estado [aqui](./docs/pt_BR/state_management.md)** 143 +# Os três pilares
143 144
144 -## Gerenciamento de rotas 145 +## Gerenciamento de estado
  146 +
  147 +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.
  148 +
  149 +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.
  150 +
  151 +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.
  152 +
  153 +### Reactive state manager
  154 +
  155 +Programação reativa pode alienar muitas pessoas porque é dito que é complicado. GetX transforma a programação reativa em algo bem simples:
  156 +
  157 +* Você não precisa de criar StreamControllers
  158 +* Você não precisa criar um StreamBuilder para cada variável
  159 +* Você não precisa criar uma classe para cada estado
  160 +* Você não precisa criar um get para o valor inicial
  161 +
  162 +Programação reativa com o Get é tão fácil quanto usar setState.
  163 +
  164 +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.
  165 +
  166 +Essa é sua variável:
  167 +
  168 +```dart
  169 +var name = 'Jonatas Borges';
  170 +```
145 171
146 -Veja uma explicação mais completa do gerenciamento de rotas [aqui](./docs/pt_BR/route_management.md) 172 +Para fazer dela uma variável observável, você só precisa adicionar `.obs` no final:
  173 +
  174 +```dart
  175 +var name = 'Jonatas Borges'.obs;
  176 +```
  177 +
  178 +E Na UI, quando quiser mostrar a variável e escutar as mudanças dela, simplesmente faça isso:
  179 +
  180 +
  181 +```dart
  182 +Obx (() => Text (controller.name));
  183 +```
  184 +
  185 +Só isso. É *simples assim*;
  186 +
  187 +### Mais detalhes sobre gerenciamento de estado
  188 +
  189 +**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**
  190 +
  191 +### Explicação em video do gerenciamento de estado
  192 +
  193 +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)
  194 +
  195 +Você vai ter uma boa idea do poder do GetX
  196 +
  197 +## Gerenciamento de rotas
147 198
148 Para navegar para uma próxima tela: 199 Para navegar para uma próxima tela:
149 200
@@ -177,13 +228,19 @@ var dados = await Get.to(Pagamento()); @@ -177,13 +228,19 @@ var dados = await Get.to(Pagamento());
177 228
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. 229 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 230
180 -### Explicação completa 231 +### Mais detalhes sobre gerenciamento de rotas
181 232
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)** 233 **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 234
184 -## Gerenciamento de Dependência 235 +### Explicação em video do gerenciamento de rotas
185 236
186 -**Veja uma explicação mais completa do gerenciamento de dependência [aqui](./docs/pt_BR/dependency_management.md)** 237 +Amateur Coder fez um outro vídeo excelente sobre gerenciamento de rotas! Link: [Complete Getx Navigation](https://www.youtube.com/watch?v=RaqPIoJSTtI)
  238 +
  239 +O Próprio criador desse package, jonatas, fez um vídeo sobre o get. Esse é o vídeo de como ele fez o app do example, um app que usa a api do coronavírus pra mostrar dados
  240 +
  241 +É muito interessante porque tem várias coisas do get lá pra se aprender. Link: [Gestão de estados DESCOMPLICADA com GetX aplicado a comunicação API Rest](https://www.youtube.com/watch?v=3qjebK6kwSM)
  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 -  
2 # Route Management 1 # Route Management
3 2
  3 +This is the complete explanation of all there is to Getx when the matter is route management.
  4 +
4 ## How to use 5 ## How to use
5 6
6 Add this to your pubspec.yaml file: 7 Add this to your pubspec.yaml file:
@@ -464,7 +464,7 @@ Get.config( @@ -464,7 +464,7 @@ Get.config(
464 defaultPopGesture = true, 464 defaultPopGesture = true,
465 defaultTransition = Transitions.cupertino 465 defaultTransition = Transitions.cupertino
466 ) 466 )
467 - 467 +```
468 ### Nested Navigators 468 ### Nested Navigators
469 469
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. 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.
1 1
2 ## Gerenciador de estado simples 2 ## Gerenciador de estado simples
3 3
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. 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.
5 5
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. 6 +Outros gerenciadores de estado são bons, mas tem suas nuances.
7 7
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. 8 +* BLoC é bem seguro e eficiente, mas é muito complexo (especialmente para iniciantes), o que impediu pessoas de desenvolverem com Flutter.
  9 +* 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!).
  10 +* 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 +
  12 +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.
  13 +
  14 +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.
  15 +
  16 +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 17
10 **Que melhoras na performance o Get traz?** 18 **Que melhoras na performance o Get traz?**
11 19