Jonny Borges
Committed by GitHub

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

[docs] several changes in docs
... ... @@ -11,14 +11,22 @@
<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>
![](getx.png)
<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>
- [Communication and support channels:](#communication-and-support-channels)
- [Sobre GetX](#sobre-getx)
- [Como contribuir](#como-contribuir)
- [Installing](#installing)
- [Proyeto Counter no GetX](#proyeto-counter-no-getx)
- [Los tres pilares](#los-tres-pilares)
- [Gestión del Estado](#gestión-del-estado)
- [Explicación completa](#explicación-completa)
- [Reactivo STATE_MANAGER](#reactivo-state_manager)
- [Más detalles sobre la gestión del estado.](#más-detalles-sobre-la-gestión-del-estado)
- [Gestión de Rutas](#gestión-de-rutas)
- [Explicación completa](#explicación-completa-1)
- [Más detalles sobre la gestión de rutas.](#más-detalles-sobre-la-gestión-de-rutas)
- [Video Explanation](#video-explanation)
- [Gestión de dependencias](#gestión-de-dependencias)
- [Explicación completa](#explicación-completa-2)
- [Más detalles sobre la gestión de dependencias.](#más-detalles-sobre-la-gestión-de-dependencias)
- [Utils](#utils)
- [Cambiar de tema](#cambiar-de-tema)
- [Otras API avanzadas y configuraciones manuales](#otras-api-avanzadas-y-configuraciones-manuales)
... ... @@ -26,6 +34,14 @@
- [Rompiendo cambios desde 2.0](#rompiendo-cambios-desde-20)
- [¿Por qué Getx?](#por-qué-getx)
# Communication and support channels:
[**Slack (English)**](https://communityinviter.com/apps/getxworkspace/getx)
[**Discord (English and Portuguese)**](https://discord.com/invite/9Y3wK9)
[**Telegram (Portuguese)**](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g)
# Sobre GetX
- 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 @@
**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)**
# Como contribuir
*¿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.*
- Ayudando a traducir el archivo Léame a otros idiomas.
... ... @@ -50,9 +68,22 @@
- Incluyendo nuevas funciones.
# Los tres pilares
# Installing
## Gestión del Estado
Add Get to your pubspec.yaml file:
```yaml
dependencies:
get:
```
Import get in files that it will be used:
```dart
import 'package:get/get.dart';
```
# Proyeto Counter no GetX
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
... ... @@ -79,8 +110,8 @@ class Controller extends GetXController {
}
```
- Paso 3:
Cree su vista, use StatelessWidget y ahorre algo de RAM, con GetX ya no necesitará usar StatefulWidget.
- Paso 3:
Cree su vista, use StatelessWidget y ahorre algo de RAM, con GetX ya no necesitará usar StatefulWidget.
```dart
class Home extends StatelessWidget {
... ... @@ -112,16 +143,52 @@ class Other extends StatelessWidget {
```
Resultado:
![](counter-app-gif.gif)
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!
### Explicación completa
# Los tres pilares
## Gestión del Estado
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.
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.
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.
### Reactivo STATE_MANAGER
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!).
Imaginemos que tiene una variable "name" y desea que cada vez que la modifique, todos los widgets que la usan cambien automáticamente.
Ej. esta es tu variable "name":
```dart
var name = 'Jonatas Borges';
```
Para que sea observable, solo necesita agregar ".obs" al final:
```dart
var name = 'Jonatas Borges'.obs;
```
¿StreamBuilder? ¿initialValue? ¿builder? No, solo necesitas jugar con esta variable dentro de un widget Obx.
```dart
Obx(() => Text (controller.name));
```
### Más detalles sobre la gestión del estado.
**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**
## Gestión de Rutas
Vea una explicación más detallada de la administración del estado [aquí](./docs/es_ES/route_management.md).
Para navegar a una nueva pantalla:
```dart
... ... @@ -152,13 +219,15 @@ Para navegar a la siguiente ruta y recibir o actualizar datos tan pronto como se
var data = await Get.to(Payment());
```
### Explicación completa
### Más detalles sobre la gestión de rutas.
**Vea una explicación más detallada de la Gestión de Rutas [aquí](./docs/es_ES/route_management.md).**
## Gestión de dependencias
### Video Explanation
Vea una explicación más detallada de la Gestión de dependencias [aquí](./docs/es_ES/dependency_management.md).
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)
## Gestión de dependencias
- 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.
... ... @@ -194,7 +263,7 @@ Get.lazyPut<Service>(()=> ApiMock());
/// ApiMock will only be called when someone uses Get.find<Service> for the first time
```
### Explicación completa
### Más detalles sobre la gestión de dependencias.
**Vea una explicación más detallada de la Gestión de dependencias [aquí](./docs/es_ES/dependency_management.md).**
... ...
... ... @@ -12,6 +12,28 @@
![](getx.png)
- [**Communication and support channels:**](#communication-and-support-channels-)
- [**About Get**](#about-get)
- [**Installing**](#installing)
- [**Counter App in Get**](#counter-app-in-get)
- [**The Three pillars**](#the-three-pillars)
* [State management](#state-management)
+ [Reactive State Manager](#reactive-state-manager)
+ [More details about state management](#more-details-about-state-management)
* [Route management](#route-management)
+ [More details about route management](#more-details-about-route-management)
+ [Video Explanation](#video-explanation)
* [Dependency management](#dependency-management)
+ [More details about dependency management](#more-details-about-dependency-management)
- [**How to contribute**](#how-to-contribute)
- [**Utils**](#utils)
* [Change Theme](#change-theme)
* [Other Advanced APIs](#other-advanced-apis)
+ [Optional Global Settings and Manual configurations](#optional-global-settings-and-manual-configurations)
- [**Breaking changes from 2.0**](#breaking-changes-from-20)
- [**Why Getx?**](#why-getx-)
# Communication and support channels:
[**Slack (English)**](https://communityinviter.com/apps/getxworkspace/getx)
... ... @@ -20,25 +42,6 @@
[**Telegram (Portuguese)**](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g)
# Topics
- [**About Get**](#about-get)
- [**Installing**](#installing)
- [**The Three pillars**](#the-three-pillars)
- [State management](#state-management)
- [In-depth explanation](#in-depth-explanation)
- [Route management](#route-management)
- [In-Depth Explanation](#in-depth-explanation-1)
- [Dependency management](#dependency-management)
- [In-depth explanation](#in-depth-explanation-2)
- [**How to contribute**](#how-to-contribute)
- [**Utils**](#utils)
- [Change Theme](#change-theme)
- [Other Advanced APIs](#other-advanced-apis)
- [Optional Global Settings and Manual configurations](#optional-global-settings-and-manual-configurations)
- [**Breaking changes from 2.0**](#breaking-changes-from-20)
- [**Why GetX?**](#why-getx)
# About Get
- 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:
```dart
import 'package:get/get.dart';
```
# The Three pillars
## State management
**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**
# Counter App with GetX
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.
... ... @@ -123,19 +121,78 @@ class Other extends StatelessWidget {
Widget build(context){
// Access the updated count variable
return Scaffold(body: Center(child: Text(c.count.string)));
}
}
```
Result:
![](counter-app-gif.gif)
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!
# The Three pillars
## State management
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.
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.
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.
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)
### Reactive State Manager
Reactive programming can alienate many people because it is said to be complicated. GetX turns reactive programming into something quite simple:
- You won't need to create StreamControllers.
- You won't need to create a StreamBuilder for each variable
- You will not need to create a class for each state.
- You will not need to create a get for an initial value.
Reactive programming with Get is as easy as using setState.
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.
This is your count variable:
```dart
var name = 'Jonatas Borges';
```
To make it observable, you just need to add ".obs" to the end of it:
```dart
var name = 'Jonatas Borges'.obs;
```
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!
And in the UI, when you want to show that value and update the screen whenever tha values changes, simply do this:
```dart
Obx (() => Text (controller.name));
```
### In-depth explanation
That's all. It's *that* simple.
### More details about state management
**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**
## Route management
### Video explanation about state management
Amateur coder did an awesome video about state management! Link: [Complete GetX State Management](https://www.youtube.com/watch?v=CNpXbeI_slw)
See a more in-depth explanation of route management [here](./docs/en_US/route_management.md)
You will get a good idea of GetX power.
## Route management
If you are going to use routes/snackbars/dialogs/bottomsheets without context, GetX is excellent for you too, just see it:
... ... @@ -171,22 +228,18 @@ To go to the next screen and cancel all previous routes (useful in shopping cart
Get.offAll(NextScreen());
```
To navigate to the next route, and receive or update data as soon as you return from it:
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.
```dart
var data = await Get.to(Payment());
```
### More details about route management
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.
**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)**
### In-Depth Explanation
### Video Explanation
**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)**
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)
## Dependency management
See a more in-depth explanation of dependency management [here](./docs/en_US/dependency_management.md)
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:
```dart
... ... @@ -217,14 +270,7 @@ And then you will be able to recover your controller data that was obtained back
Text(controller.textFromApi);
```
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:
```dart
Get.lazyPut<Service>(()=> ApiMock());
/// ApiMock will only be called when someone uses Get.find<Service> for the first time
```
### In-depth explanation
### More details about dependency management
**See a more in-depth explanation of dependency management [here](./docs/en_US/dependency_management.md)**
... ... @@ -233,7 +279,7 @@ Get.lazyPut<Service>(()=> ApiMock());
*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.*
- Helping to translate the readme into other languages.
- Adding documentation to the readme (not even half of Get's functions have been documented yet).
- Adding documentation to the readme (a lot of Get's functions haven't been documented yet).
- Write articles or make videos teaching how to use Get (they will be inserted in the Readme and in the future in our Wiki).
- Offering PRs for code/tests.
- Including new functions.
... ...
... ... @@ -12,15 +12,23 @@
![](getx.png)
<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>
- [Canais para comunicação e suporte:](#canais-para-comunicação-e-suporte)
- [Sobre Get](#sobre-get)
- [Instalando e iniciando](#instalando-e-iniciando)
- [Instalando](#instalando)
- [App Counter usando GetX](#app-counter-usando-getx)
- [Os três pilares](#os-três-pilares)
- [Gerenciamento de estado](#gerenciamento-de-estado)
- [Explicação completa](#explicação-completa)
- [Reactive state manager](#reactive-state-manager)
- [Mais detalhes sobre gerenciamento de estado](#mais-detalhes-sobre-gerenciamento-de-estado)
- [Explicação em video do gerenciamento de estado](#explicação-em-video-do-gerenciamento-de-estado)
- [Gerenciamento de rotas](#gerenciamento-de-rotas)
- [Explicação completa](#explicação-completa-1)
- [Mais detalhes sobre gerenciamento de rotas](#mais-detalhes-sobre-gerenciamento-de-rotas)
- [Explicação em video do gerenciamento de rotas](#explicação-em-video-do-gerenciamento-de-rotas)
- [Gerenciamento de Dependência](#gerenciamento-de-dependência)
- [Explicação completa](#explicação-completa-2)
- [Mais detalhes sobre gerenciamento de dependências](#mais-detalhes-sobre-gerenciamento-de-dependências)
- [Como contribuir](#como-contribuir)
- [Utilidades](#utilidades)
- [Mudar tema (changeTheme)](#mudar-tema-changetheme)
- [Outras APIs avançadas](#outras-apis-avançadas)
... ... @@ -30,7 +38,15 @@
- [RxController e GetBuilder se uniram](#rxcontroller-e-getbuilder-se-uniram)
- [Rotas nomeadas](#rotas-nomeadas)
- [Porque essa mudança](#porque-essa-mudança)
- [Por que GetX](#por-que-getx)
- [Por que GetX?](#por-que-getx)
# Canais para comunicação e suporte:
[**Slack (Inglês)**](https://communityinviter.com/apps/getxworkspace/getx)
[**Discord (Inglês e Português)**](https://discord.com/invite/9Y3wK9)
[**Telegram (Português)**](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g)
# Sobre Get
... ... @@ -46,17 +62,7 @@
**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.
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
- Ajudando a traduzir o README para outras linguagens.
- Adicionando mais documentação ao README (até o momento, nem metade das funcionalidades do Get foram documentadas).
- Fazendo artigos/vídeos ensinando a usar o Get (eles serão inseridos no README, e no futuro na nossa Wiki).
- Fazendo PR's (Pull-Requests) para código/testes.
- Incluindo novas funcionalidades.
Qualquer contribuição é bem-vinda!
# Instalando e iniciando
# Instalando
Adicione Get ao seu arquivo pubspec.yaml
... ... @@ -71,11 +77,7 @@ Importe o get nos arquivos que ele for usado:
import 'package:get/get.dart';
```
# Os três pilares
## Gerenciamento de estado
**Veja uma explicação mais completa do gerenciamento de estado [aqui](./docs/pt_BR/state_management.md)**
# App Counter usando GetX
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
... ... @@ -131,19 +133,72 @@ class Outra extends StatelessWidget {
```
Resultado:
![](counter-app-gif.gif)
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.
Get foi feito para funcionar com times, mas torna o trabalho de um desenvolvedor individual simples.
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ê!
### Explicação completa
**Veja uma explicação mais completa do gerenciamento de estado [aqui](./docs/pt_BR/state_management.md)**
# Os três pilares
## Gerenciamento de estado
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.
## Gerenciamento de rotas
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.
Veja uma explicação mais completa do gerenciamento de rotas [aqui](./docs/pt_BR/route_management.md)
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.
### Reactive state manager
Programação reativa pode alienar muitas pessoas porque é dito que é complicado. GetX transforma a programação reativa em algo bem simples:
* Você não precisa de criar StreamControllers
* Você não precisa criar um StreamBuilder para cada variável
* Você não precisa criar uma classe para cada estado
* Você não precisa criar um get para o valor inicial
Programação reativa com o Get é tão fácil quanto usar setState.
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.
Essa é sua variável:
```dart
var name = 'Jonatas Borges';
```
Para fazer dela uma variável observável, você só precisa adicionar `.obs` no final:
```dart
var name = 'Jonatas Borges'.obs;
```
E Na UI, quando quiser mostrar a variável e escutar as mudanças dela, simplesmente faça isso:
```dart
Obx (() => Text (controller.name));
```
Só isso. É *simples assim*;
### Mais detalhes sobre gerenciamento de estado
**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**
### Explicação em video do gerenciamento de estado
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)
Você vai ter uma boa idea do poder do GetX
## Gerenciamento de rotas
Para navegar para uma próxima tela:
... ... @@ -177,13 +232,15 @@ var dados = await Get.to(Pagamento());
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.
### Explicação completa
### Mais detalhes sobre gerenciamento de rotas
**GetX funciona com rotas nomeadas também! Veja uma explicação mais completa do gerenciamento de rotas [aqui](./docs/pt_BR/route_management.md)**
## Gerenciamento de Dependência
### Explicação em video do gerenciamento de rotas
**Veja uma explicação mais completa do gerenciamento de dependência [aqui](./docs/pt_BR/dependency_management.md)**
Amateur Coder fez um outro vídeo excelente sobre gerenciamento de rotas! Link: [Complete Getx Navigation](https://www.youtube.com/watch?v=RaqPIoJSTtI)
## Gerenciamento de Dependência
- 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ê.
... ... @@ -223,10 +280,22 @@ Get.lazyPut<Service>(()=> ApiMock());
/// ApiMock só será chamado quando alguém usar o Get.find<Service> pela primeira vez
```
### Explicação completa
### Mais detalhes sobre gerenciamento de dependências
**Veja uma explicação mais completa do gerenciamento de dependência [aqui](./docs/pt_BR/dependency_management.md)**
# Como contribuir
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
- Ajudando a traduzir o README para outras linguagens.
- Adicionando mais documentação ao README (até o momento, várias das funcionalidades do Get não foram documentadas).
- Fazendo artigos/vídeos ensinando a usar o Get (eles serão inseridos no README, e no futuro na nossa Wiki).
- Fazendo PR's (Pull-Requests) para código/testes.
- Incluindo novas funcionalidades.
Qualquer contribuição é bem-vinda!
# Utilidades
## Mudar tema (changeTheme)
... ...
# Dependency Management
- [Simple Instance Manager](#simple-instance-manager)
- [Options](#options)
- [Bindings](#bindings)
- [How to use](#how-to-use)
- [SmartManagement](#smartmanagement)
## Simple Instance Manager
... ...
- [Route Management](#route-management)
- [How to use](#how-to-use)
- [Navigation without named routes](#navigation-without-named-routes)
- [Navigation with named routes](#navigation-with-named-routes)
- [Send data to named Routes](#send-data-to-named-routes)
- [Dynamic urls links](#dynamic-urls-links)
- [Middleware](#middleware)
- [Navigation without context](#navigation-without-context)
- [SnackBars](#snackbars)
- [Dialogs](#dialogs)
- [BottomSheets](#bottomsheets)
- [Nested Navigation](#nested-navigation)
# Route Management
This is the complete explanation of all there is to Getx when the matter is route management.
## How to use
Add this to your pubspec.yaml file:
... ...
- [State Management](#state-management)
- [Reactive State Manager](#reactive-state-manager)
- [Advantages](#advantages)
- [Usage](#usage)
- [Example](#example)
- [Conditions to rebuild](#conditions-to-rebuild)
- [Where .obs can be used](#where-obs-can-be-used)
- [Note about Lists](#note-about-lists)
- [Why i have to use .value](#why-i-have-to-use-value)
- [Obx()](#obx)
- [Workers](#workers)
- [Mixing the two state managers](#mixing-the-two-state-managers)
- [Simple State Manager](#simple-state-manager)
- [Advantages](#advantages-1)
- [Usage](#usage-1)
- [How it handles controllers](#how-it-handles-controllers)
- [You won't need StatefulWidgets anymore](#you-wont-need-statefulwidgets-anymore)
- [Why it exists](#why-it-exists)
- [Other ways of using it](#other-ways-of-using-it)
- [Unique IDs](#unique-ids)
- [GetBuilder vs GetX vs Obx vs MixinBuilder](#getbuilder-vs-getx-vs-obx-vs-mixinbuilder)
# State Management
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.
... ...
- [Gestión de dependencias](#gestión-de-dependencias)
- [Simple Instance Manager](#simple-instance-manager)
- [Options](#options)
- [Bindings](#bindings)
- [Cómo utilizar](#cómo-utilizar)
- [SmartManagement](#smartmanagement)
# Gestión de dependencias
... ...
- [Gestión de Rutas](#gestión-de-rutas)
- [¿Cómo utilizarlo](#cómo-utilizarlo)
- [Navegación sin rutas nombradas](#navegación-sin-rutas-nombradas)
- [Navegación con rutas nombradas](#navegación-con-rutas-nombradas)
- [Enviar datos a rutas nombradas](#enviar-datos-a-rutas-nombradas)
- [Enlaces de URL dinámicos](#enlaces-de-url-dinámicos)
- [Middleware](#middleware)
- [Navegación sin contexto](#navegación-sin-contexto)
- [SnackBars](#snackbars)
- [Diálogos](#diálogos)
- [BottomSheets](#bottomsheets)
- [Navegación anidada](#navegación-anidada)
# Gestión de Rutas
... ...
- [Gestión del Estado](#gestión-del-estado)
- [Gestor de Estado Simple](#gestor-de-estado-simple)
- [Ventajas](#ventajas)
- [Uso](#uso)
- [Cómo maneja los Controllers](#cómo-maneja-los-controllers)
- [Ya no necesitará StatefulWidgets](#ya-no-necesitará-statefulwidgets)
- [Por qué existe](#por-qué-existe)
- [Otras formas de usarlo](#otras-formas-de-usarlo)
- [ID únicos](#id-únicos)
- [Reactivo STATE_MANAGER](#reactivo-state_manager)
- [Ventajas](#ventajas-1)
- [Uso](#uso-1)
- [Donde se pueden usar .obs](#donde-se-pueden-usar-obs)
- [Nota sobre listas](#nota-sobre-listas)
- [¿Por qué tengo que usar .value](#por-qué-tengo-que-usar-value)
- [Obx()](#obx)
- [Workers](#workers)
- [Mezclando los dos State Managers](#mezclando-los-dos-state-managers)
- [GetBuilder vs GetX vs Obx vs MixinBuilder](#getbuilder-vs-getx-vs-obx-vs-mixinbuilder)
# Gestión del Estado
... ...
- [Gerenciamento de dependência](#gerenciamento-de-dependência)
- [Gerenciamento de dependências simples](#gerenciamento-de-dependências-simples)
- [Opções](#opções)
- [Bindings](#bindings)
- [Como utilizar](#como-utilizar)
# Gerenciamento de dependência
## Gerenciamento de dependências simples
... ...
- [Navegação sem rotas nomeadas](#navegação-sem-rotas-nomeadas)
- [SnackBars](#snackbars)
- [Dialogs](#dialogs)
- [BottomSheets](#bottomsheets)
- [Navegar com rotas nomeadas](#navegar-com-rotas-nomeadas)
- [Enviar dados para rotas nomeadas](#enviar-dados-para-rotas-nomeadas)
- [Links de Url dinâmicos](#links-de-url-dinâmicos)
- [Middleware](#middleware)
- [Change Theme](#change-theme)
- [Configurações Globais Opcionais](#configurações-globais-opcionais)
- [Nested Navigators](#nested-navigators)
## Navegação sem rotas nomeadas
... ... @@ -464,7 +475,7 @@ Get.config(
defaultPopGesture = true,
defaultTransition = Transitions.cupertino
)
```
### Nested Navigators
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.
... ...
- [Simple State Manager](#simple-state-manager)
- [Uso do gerenciador de estado simples](#uso-do-gerenciador-de-estado-simples)
- [Sem StatefulWidget](#sem-statefulwidget)
- [Formas de uso](#formas-de-uso)
- [Reactive State Manager](#reactive-state-manager)
- [GetX vs GetBuilder vs Obx vs MixinBuilder](#getx-vs-getbuilder-vs-obx-vs-mixinbuilder)
- [Workers](#workers)
## Gerenciador de estado simples
## Simple State Manager
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.
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.
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.
Outros gerenciadores de estado são bons, mas tem suas nuances.
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.
* 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.
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.
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.
**Que melhoras na performance o Get traz?**
... ...