Showing
2 changed files
with
20 additions
and
29 deletions
@@ -513,7 +513,7 @@ You can use both in any situation, but if you want to tune their application to | @@ -513,7 +513,7 @@ You can use both in any situation, but if you want to tune their application to | ||
513 | If you want a powerful state manager, you can go without fear to GetX. It does not work with variables, but flows, everything in it is streams under the hood. You can use rxDart in conjunction with it, because everything is stream, you can hear the event of each "variable", because everything in it is stream, it is literally BLoC, easier than MobX, and without code generator or decorations . | 513 | If you want a powerful state manager, you can go without fear to GetX. It does not work with variables, but flows, everything in it is streams under the hood. You can use rxDart in conjunction with it, because everything is stream, you can hear the event of each "variable", because everything in it is stream, it is literally BLoC, easier than MobX, and without code generator or decorations . |
514 | 514 | ||
515 | 515 | ||
516 | -## Reactive State Manager | 516 | +## Reactive State Manager - GetX |
517 | 517 | ||
518 | If you want power, Get gives you the most advanced state manager you could ever have. | 518 | If you want power, Get gives you the most advanced state manager you could ever have. |
519 | GetX was built 100% based on Streams, and give you all the firepower that BLoC gave you, with an easier facility than using MobX. | 519 | GetX was built 100% based on Streams, and give you all the firepower that BLoC gave you, with an easier facility than using MobX. |
@@ -9,10 +9,10 @@ | @@ -9,10 +9,10 @@ | ||
9 | <img alt="Awesome Flutter" src="https://img.shields.io/badge/Awesome-Flutter-blue.svg?longCache=true&style=flat-square" /> | 9 | <img alt="Awesome Flutter" src="https://img.shields.io/badge/Awesome-Flutter-blue.svg?longCache=true&style=flat-square" /> |
10 | </a> | 10 | </a> |
11 | 11 | ||
12 | -Get é uma biblioteca poderosa e extra-leve para Flutter que vai te dar superpoderes e aumentar sua produtividade. Navegue sem `context`, abre dialogs, snackbars ou bottomsheets de qualquer lugar do código, gerencie estados e injete dependências de uma forma simples e prática! Get é seguro, estável, atualizado e oferece uma enorge gama de APIs que não estão presentes no framework padrão. | 12 | +Get é uma biblioteca poderosa e extra-leve para Flutter que vai te dar superpoderes e aumentar sua produtividade. Navegue sem precisar do `context`, abra `Dialog`s, `Snackbar`s ou `BottomSheet`s de qualquer lugar no código, gerencie estados e injete dependências de uma forma simples e prática! Get é seguro, estável, atualizado e oferece uma enorme gama de APIs que não estão presentes no framework padrão. |
13 | 13 | ||
14 | ```dart | 14 | ```dart |
15 | -// Flutter navigator padrão | 15 | +// Navigator padrão do Flutter |
16 | Navigator.of(context).push( | 16 | Navigator.of(context).push( |
17 | context, | 17 | context, |
18 | MaterialPageRoute( | 18 | MaterialPageRoute( |
@@ -28,8 +28,8 @@ Get.to(Home()); | @@ -28,8 +28,8 @@ Get.to(Home()); | ||
28 | 28 | ||
29 | ## Começando | 29 | ## Começando |
30 | 30 | ||
31 | -A navegação convencional do Flutter tem uma grande quantidade de boilerplate (muito código que se repete demais), requer o `context` para navegar entre telas, abrir dialogs e usar snackbars no framework é entediante. | ||
32 | -Somando a isso, quando uma rota é enviada, o `MaterialApp` inteiro pode ser reconstruído causando travamentos. Isso não acontece com o Get. | 31 | +A navegação convencional do Flutter tem uma grande quantidade de boilerplate (código que se repete demais), requer o `context` para navegar entre telas/rotas, abrir dialogs e usar snackbars no framework, e é entediante. |
32 | +Somando a isso, quando uma rota é enviada (uma tela carregada), o `MaterialApp` inteiro pode ser reconstruído podendo causando travamentos. Isso não acontece com o Get. | ||
33 | Essa biblioteca vai mudar a forma que você trabalha com o Framework e salvar seu código dos boilerplates, aumentando sua produtividade, e eliminando os bugs de reconstrução da sua aplicação. | 33 | Essa biblioteca vai mudar a forma que você trabalha com o Framework e salvar seu código dos boilerplates, aumentando sua produtividade, e eliminando os bugs de reconstrução da sua aplicação. |
34 | 34 | ||
35 | - [Começando](#começando) | 35 | - [Começando](#começando) |
@@ -59,9 +59,9 @@ Essa biblioteca vai mudar a forma que você trabalha com o Framework e salvar se | @@ -59,9 +59,9 @@ Essa biblioteca vai mudar a forma que você trabalha com o Framework e salvar se | ||
59 | 59 | ||
60 | #### Você pode contribuir no projeto de várias formas: | 60 | #### Você pode contribuir no projeto de várias formas: |
61 | - Ajudando a traduzir o README para outras linguagens. | 61 | - Ajudando a traduzir o README para outras linguagens. |
62 | -- Adicionando mais documentação ao REAME (nem metado das funcionalidade do Get foram documentadas ainda). | ||
63 | -- Fazendo artigos/videos sobre o Get (eles serão inseridos no README, e no futuro na nossa Wiki). | ||
64 | -- Fazendo PRs (Pull-Requests) para código/testes. | 62 | +- Adicionando mais documentação ao README (até o momento, nem metade das funcionalidades do Get foram documentadas). |
63 | +- Fazendo artigos/vídeos sobre o Get (eles serão inseridos no README, e no futuro na nossa Wiki). | ||
64 | +- Fazendo PR's (Pull-Requests) para código/testes. | ||
65 | - Incluindo novas funcionalidades. | 65 | - Incluindo novas funcionalidades. |
66 | 66 | ||
67 | Qualquer contribuição é bem-vinda! | 67 | Qualquer contribuição é bem-vinda! |
@@ -73,9 +73,9 @@ Qualquer contribuição é bem-vinda! | @@ -73,9 +73,9 @@ Qualquer contribuição é bem-vinda! | ||
73 | (procure pela versão mais recente em pub.dev) --> | 73 | (procure pela versão mais recente em pub.dev) --> |
74 | 74 | ||
75 | Adicione Get ao seu arquivo pubspec.yaml | 75 | Adicione Get ao seu arquivo pubspec.yaml |
76 | -<!-- according to the version of Flutter you are using. --> | 76 | +<!-- de acordo com a versão do flutter que você estiver usando --> |
77 | 77 | ||
78 | -Troque seu `MaterialApp` por `GetMaterialApp` e aproveite! | 78 | +Troque seu `MaterialApp()` por `GetMaterialApp()` e aproveite! |
79 | ```dart | 79 | ```dart |
80 | import 'package:get/get.dart'; | 80 | import 'package:get/get.dart'; |
81 | 81 | ||
@@ -85,31 +85,29 @@ GetMaterialApp( // Before: MaterialApp( | @@ -85,31 +85,29 @@ GetMaterialApp( // Before: MaterialApp( | ||
85 | ``` | 85 | ``` |
86 | 86 | ||
87 | ## Navegação sem rotas nomeadas | 87 | ## Navegação sem rotas nomeadas |
88 | -Para navegar para uma próxima tela: | ||
89 | 88 | ||
89 | +Para navegar para uma próxima tela: | ||
90 | ```dart | 90 | ```dart |
91 | Get.to(ProximaTela()); | 91 | Get.to(ProximaTela()); |
92 | ``` | 92 | ``` |
93 | 93 | ||
94 | Para retornar para a tela anterior: | 94 | Para retornar para a tela anterior: |
95 | - | ||
96 | ```dart | 95 | ```dart |
97 | Get.back(); | 96 | Get.back(); |
98 | ``` | 97 | ``` |
99 | 98 | ||
100 | Para ir para a próxima tela e NÃO deixar opção para voltar para a tela anterior (bom para SplashScreens, telas de login e etc.): | 99 | Para ir para a próxima tela e NÃO deixar opção para voltar para a tela anterior (bom para SplashScreens, telas de login e etc.): |
101 | - | ||
102 | ```dart | 100 | ```dart |
103 | Get.off(ProximaTela()); | 101 | Get.off(ProximaTela()); |
104 | ``` | 102 | ``` |
105 | 103 | ||
106 | -Para ir para a próxima tela e cancelar todas as rotas anteriores (útil em telas de carrinho, votações e testes): | 104 | +Para ir para a próxima tela e cancelar todas as rotas anteriores (útil em telas de carrinho, votações ou testes): |
107 | 105 | ||
108 | ```dart | 106 | ```dart |
109 | Get.offAll(ProximaTela()); | 107 | Get.offAll(ProximaTela()); |
110 | ``` | 108 | ``` |
111 | 109 | ||
112 | -Para navegar para a próxima rota, e recebar ou atualizar dados assim que retornar da rota: | 110 | +Para navegar para a próxima rota, e receber ou atualizar dados assim que retornar da rota: |
113 | ```dart | 111 | ```dart |
114 | var dados = await Get.to(Pagamento()); | 112 | var dados = await Get.to(Pagamento()); |
115 | ``` | 113 | ``` |
@@ -125,10 +123,9 @@ if (dados == 'sucesso') fazerQualquerCoisa(); | @@ -125,10 +123,9 @@ if (dados == 'sucesso') fazerQualquerCoisa(); | ||
125 | ``` | 123 | ``` |
126 | 124 | ||
127 | Não quer aprender nossa sintaxe? | 125 | Não quer aprender nossa sintaxe? |
128 | -Apenas mude o `Navigator` (letra maiúscula) para `navigator` (letra minúscula), e você terá todas as funcionalidades da navigation padrão, sem precisar usar `context` | 126 | +Apenas mude o `Navigator` (letra maiúscula) para `navigator` (letra minúscula), e você terá todas as funcionalidades de navegação padrão, sem precisar usar `context` |
129 | 127 | ||
130 | Exemplo: | 128 | Exemplo: |
131 | - | ||
132 | ```dart | 129 | ```dart |
133 | // Navigator padrão do Flutter | 130 | // Navigator padrão do Flutter |
134 | Navigator.of(context).push( | 131 | Navigator.of(context).push( |
@@ -155,7 +152,7 @@ Get.to(HomePage()); | @@ -155,7 +152,7 @@ Get.to(HomePage()); | ||
155 | 152 | ||
156 | ### SnackBars | 153 | ### SnackBars |
157 | 154 | ||
158 | -Para ter um `SnackBar` simples no Flutter, você precisa pegar o `context` do Scaffold, ou você precisa de uma `GlobalKey` atrelada ao seu Scaffold | 155 | +Para ter um `SnackBar` simples no Flutter, você precisa pegar o `context` do Scaffold, ou você precisa de uma `GlobalKey` atrelada ao seu Scaffold. |
159 | ```dart | 156 | ```dart |
160 | final snackBar = SnackBar( | 157 | final snackBar = SnackBar( |
161 | content: Text('Olá!'), | 158 | content: Text('Olá!'), |
@@ -170,12 +167,11 @@ Scaffold.of(context).showSnackBar(snackBar); | @@ -170,12 +167,11 @@ Scaffold.of(context).showSnackBar(snackBar); | ||
170 | ``` | 167 | ``` |
171 | 168 | ||
172 | Com o Get: | 169 | Com o Get: |
173 | - | ||
174 | ```dart | 170 | ```dart |
175 | Get.snackbar('Olá', 'eu sou uma SnackBar moderna e linda!'); | 171 | Get.snackbar('Olá', 'eu sou uma SnackBar moderna e linda!'); |
176 | ``` | 172 | ``` |
177 | 173 | ||
178 | -Com Get, tudo que você precisa fazer é chamar `Get.snackbar` de qualquer lugar no seu código, ou custumizá-lo da forma que quiser! | 174 | +Com Get, tudo que você precisa fazer é chamar `Get.snackbar()` de qualquer lugar no seu código, e/ou customizá-lo da forma que quiser! |
179 | 175 | ||
180 | ```dart | 176 | ```dart |
181 | Get.snackbar( | 177 | Get.snackbar( |
@@ -227,18 +223,16 @@ Get.snackbar( | @@ -227,18 +223,16 @@ Get.snackbar( | ||
227 | // Form userInputForm | 223 | // Form userInputForm |
228 | /////////////////////////////////// | 224 | /////////////////////////////////// |
229 | ``` | 225 | ``` |
230 | -Se você prefere a SnackBar tradicional, ou quer customizar por completo, incluindo até adicionar apenas uma linha (Get.snackbar usa um `title` e `message` obrigatórios), você pode usar `Get.rawSnackbar();` que fornece a RAW API na qual Get.snackbar foi contruído. | 226 | +Se você prefere a SnackBar tradicional, ou quer customizar por completo, como por exemplo fazer ele ter só uma linha (`Get.snackbar` tem os parâmetros `title` e `message` obrigatórios), você pode usar `Get.rawSnackbar();` que fornece a RAW API na qual `Get.snackbar` foi contruído. |
231 | 227 | ||
232 | ### Dialogs | 228 | ### Dialogs |
233 | 229 | ||
234 | Para abrir um dialog: | 230 | Para abrir um dialog: |
235 | - | ||
236 | ```dart | 231 | ```dart |
237 | -Get.dialog(SeuDialogWidget()); | 232 | +Get.dialog(SeuWidgetDialog()); |
238 | ``` | 233 | ``` |
239 | 234 | ||
240 | Para abrir um dialog padrão: | 235 | Para abrir um dialog padrão: |
241 | - | ||
242 | ```dart | 236 | ```dart |
243 | Get.defaultDialog( | 237 | Get.defaultDialog( |
244 | onConfirm: () => print("Ok"), | 238 | onConfirm: () => print("Ok"), |
@@ -522,11 +516,8 @@ GetBuilder é focado precisamente em múltiplos controles de estados. Imagine qu | @@ -522,11 +516,8 @@ GetBuilder é focado precisamente em múltiplos controles de estados. Imagine qu | ||
522 | 516 | ||
523 | Dessa forma, se você quiser controlar individualmente, você pode assinalar ID's para isso, ou usar GetX. Isso é com você, apenas lembre-se que quando mais "widgets individuais" você tiver, mais a performance do GetX vai se sobressair. Mas o GetBuilder vai ser superior quando há multiplas mudanças de estado. | 517 | Dessa forma, se você quiser controlar individualmente, você pode assinalar ID's para isso, ou usar GetX. Isso é com você, apenas lembre-se que quando mais "widgets individuais" você tiver, mais a performance do GetX vai se sobressair. Mas o GetBuilder vai ser superior quando há multiplas mudanças de estado. |
524 | 518 | ||
525 | -Você pode usar os dois em qualquer situação, mas se quiser refinar a aplicação para a melhor performance possível, eu diria isso: se as suas variáveis são alteradas em momentos diferentes, use GetX | ||
526 | - | ||
527 | -You can use both in any situation, but if you want to tune their application to the maximum possible performance, I would say that: if your variables are changed at different times, use GetX, because there is no competition for it when the subject is to rebuild only what is necessary, if you do not need unique IDs, because all your variables will be changed when you perform an action, use GetBuilder, because it is a simple state updater in blocks, made in a few lines of code, to make just what he promises to do: update state in blocks. There is no way to compare RAM, CPU, or anything else from a giant state manager to a simple StatefulWidget (like GetBuilder) that is updated when you call update(this). It was done in a simple way, to have the least computational logic involved, just to fulfill a single purpose and spend the minimum resources possible for that purpose. | ||
528 | -If you want a powerful state manager, you can go without fear to GetX. It does not work with variables, but flows, everything in it is streams under the hood. You can use rxDart in conjunction with it, because everything is stream, you can hear the event of each "variable", because everything in it is stream, it is literally BLoC, easier than MobX, and without code generator or decorations . | ||
529 | - | 519 | +Você pode usar os dois em qualquer situação, mas se quiser refinar a aplicação para a melhor performance possível, eu diria isso: se as suas variáveis são alteradas em momentos diferentes, use GetX, porque não tem competição para isso quando o widget é pra reconstruir somente o que é necessário. Se você não precisa de IDs únicas, porque todas as suas variáveis serão alteradas quando você fazer uma ação, use GetBuilder, porque é um atualizador de estado em blocos simples, feito com apenas algumas linhas de código, para fazer justamente o que ele promete fazer: atualizar estado em blocos. Não há forma de comparar RAM, CPU, etc de um gerenciador de estado gigante com um simples StatefulWidget (como GetBuilder) que é atualizado quando você chama `update(this)`. Foi feito de uma forma simples, para ter o mínimo de lógica computacional, somente para cumprir um único papel e gastar o mínimo de recursos possível. |
520 | +Se você quer um gerenciador de estados poderoso, você pode ir sem medo para o GetX. Ele não funciona com variáveis, mas sim fluxos. Tudo está em seus streams por baixo dos panos. Você pode usar `rxDart` em conjunto com ele, porque tudo é um stream, você pode ouvir o evento de cada "variável", porque tudo é um stream, é literalmente BLoc, só que mais fácil que MobX e sem code generators ou decorations. | ||
530 | 521 | ||
531 | ## Reactive State Manager - GetX | 522 | ## Reactive State Manager - GetX |
532 | 523 |
-
Please register or login to post a comment