Committed by
GitHub
Merge pull request #408 from kisielwrosole/master
Refactored polish translation
Showing
5 changed files
with
538 additions
and
6 deletions
1 |  | 1 |  |
2 | 2 | ||
3 | -*Idiomas: Español (este archivo), [Inglés](README.md), [Portugués de Brasil](README.pt-br.md).* | 3 | +*Idiomas: Español (este archivo), [Inglés](README.md), [Portugués de Brasil](README.pt-br.md), [Polaco](README.pl.md).* |
4 | 4 | ||
5 | [](https://pub.dev/packages/get) | 5 | [](https://pub.dev/packages/get) |
6 |  | 6 |  |
1 |  | 1 |  |
2 | 2 | ||
3 | -*Languages: English (this file), [Brazilian Portuguese](README.pt-br.md), [Spanish](README-es.md).* | 3 | +*Languages: English (this file), [Brazilian Portuguese](README.pt-br.md), [Spanish](README-es.md),[Polish](README.pl.md).* |
4 | 4 | ||
5 | [](https://pub.dev/packages/get) | 5 | [](https://pub.dev/packages/get) |
6 |  | 6 |  |
@@ -205,10 +205,9 @@ GetMaterialApp( // Before: MaterialApp( | @@ -205,10 +205,9 @@ GetMaterialApp( // Before: MaterialApp( | ||
205 | home: MyHome(), | 205 | home: MyHome(), |
206 | ) | 206 | ) |
207 | ``` | 207 | ``` |
208 | - | ||
209 | -To navigate to a new screen: | ||
210 | - | 208 | +Navigate to new screen: |
211 | ```dart | 209 | ```dart |
210 | + | ||
212 | Get.to(NextScreen()); | 211 | Get.to(NextScreen()); |
213 | ``` | 212 | ``` |
214 | 213 | ||
@@ -253,6 +252,7 @@ Controller controller = Get.put(Controller()); // Rather Controller controller = | @@ -253,6 +252,7 @@ Controller controller = Get.put(Controller()); // Rather Controller controller = | ||
253 | Instead of instantiating your class within the class you are using, you are instantiating it within the Get instance, which will make it available throughout your App. | 252 | Instead of instantiating your class within the class you are using, you are instantiating it within the Get instance, which will make it available throughout your App. |
254 | So you can use your controller (or class Bloc) normally | 253 | So you can use your controller (or class Bloc) normally |
255 | 254 | ||
255 | + | ||
256 | **Tip:** Get dependency management is decloupled from other parts of the package, so if for example your app is already using a state manager (any one, it doesn't matter), you don't need to rewrite it all, you can use this dependency injection with no problems at all | 256 | **Tip:** Get dependency management is decloupled from other parts of the package, so if for example your app is already using a state manager (any one, it doesn't matter), you don't need to rewrite it all, you can use this dependency injection with no problems at all |
257 | 257 | ||
258 | ```dart | 258 | ```dart |
README.pl.md
0 → 100644
1 | + | ||
2 | + | ||
3 | +*Languages: [English](README.md), [Brazilian Portuguese](README.pt-br.md), [Spanish](README-es.md), Polish (Jesteś tu).* | ||
4 | + | ||
5 | +[](https://pub.dev/packages/get) | ||
6 | + | ||
7 | +[](https://gitter.im/flutter_get/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) | ||
8 | +<a href="https://github.com/Solido/awesome-flutter"> | ||
9 | + <img alt="Awesome Flutter" src="https://img.shields.io/badge/Awesome-Flutter-blue.svg?longCache=true&style=flat-square" /> | ||
10 | +</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 | + | ||
13 | + | ||
14 | + | ||
15 | +- [Kanały komunikacji i wsparcia:](#kanały-komunikacji-i-wsparcia) | ||
16 | +- [Wprowadzenie](#wprowadzenie) | ||
17 | +- [Instalacja](#instalacja) | ||
18 | +- [Counter App z GetX](#counter-app-z-getx) | ||
19 | +- [Trzy fialary](#trzy-filary) | ||
20 | + - [Menadżer stanu](#menadżer-stanu) | ||
21 | + - [Reaktywny menadżer stanu](#reaktywny-menadżer-stanu) | ||
22 | + - [Bardziej szczegółowo o menadżerze stanu](#bardziej-szczegółowo-o-menadżerze-stanu) | ||
23 | + - [Video tłumaczące użycie menadżera stanu](#video-tłumaczące-użycie-menadżera-stanu) | ||
24 | + - [Zarzadzanie routami](#zarządzanie-routami) | ||
25 | + - [Więcej o routach](#więcej-o-routach) | ||
26 | + - [Video tłumaczące użycie](#video-tłumaczące-użycie) | ||
27 | + - [Zarządzanie dependencies](#zarządzanie-dependencies) | ||
28 | + - [Bardziej szczefółowo o menadżerze dependencies](#bardziej-szczegółowo-o-menadżerze-dependencies) | ||
29 | +- [Jak włożyć coś od siebie](#jak-włożyć-coś-od-siebie) | ||
30 | +- [Narzędzia](#narzędzia) | ||
31 | + - [Zmiana motywu](#zmiana-motywu) | ||
32 | + - [Inne zaawansowane API](#inne-zaawansowane-api) | ||
33 | + - [Opcjonalne globalne ustawienia i manualna konfiguracja](#opcjonalne-globalne-ustawienia-i-manualna-konfiguracja) | ||
34 | + - [Video tłumaczace inne funkcjonalności GetX](#video-tłumaczące-inne-funkcjonalności-getx) | ||
35 | +- [Zmiany od 2.0](#zmiany-od-20) | ||
36 | + | ||
37 | + | ||
38 | +# Kanały komunikacji i wsparcia: | ||
39 | + | ||
40 | +[**Slack (English)**](https://communityinviter.com/apps/getxworkspace/getx) | ||
41 | + | ||
42 | +[**Discord (English and Portuguese)**](https://discord.com/invite/9Hpt99N) | ||
43 | + | ||
44 | +[**Telegram (Portuguese)**](https://t.me/joinchat/PhdbJRmsZNpAqSLJL6bH7g) | ||
45 | + | ||
46 | +# Wprowadzenie | ||
47 | +- GetX jest bardzo lekką i potężną biblioteką do Flattera. Łączy wysoką wydajność menadżera stanu, inteligętne dodawanie dependencies i zarządzanie routami w szybki i praktyczny sposób. | ||
48 | +- GetX nie jest dla wszystkich, skupia się na jak najmniejszej konsumpcji zasobów (wydajności) ([zobacz benchmarki](https://github.com/jonataslaw/benchmarks)), używaniu łatwej skłani (produktywności) i daniu możliwości pełnego rozbicia View na z logiki biznesowej (organizacja). | ||
49 | +- GetX która da Ci supermoce i zwiększy produktywność w tworzeniu projektu. Oszczędzi godziny zarówno początkującym jak i ekspoertom. | ||
50 | +- Nawiguj bez podawania `context`, używaj open `dialogs`, `snackbarów` oraz `bottomsheetów` z każdego miejsca w kodzie. Zarządzaj stanami i dodawaj dependencies w prosty i praktyczny sposób! | ||
51 | +- Get jest bezpieczny, stabilny i aktualny. Oprócz tego oferuje szeroki zakres API, które nie są zawarte w standardowym frameworku. | ||
52 | +- GetX nie jest przytłaczający. Ma wiele funkcjonalności pozwalajacych na rozpoczęcie programowania bez martwienia się o nic, ale wszystkie te funkcjonalności są w osobnych kontenerach będących dodane dopiero po ich użyciu. Jeśli tylko używasz menadżera stanu, tylko on będzie kompilowany. Jeśli używasz routów, lecz nic z menadżera stanu on nie będzie kompilowany. Możesz skompilować repozytorium benchmark i zobaczysz że używa tylko menadżera stanu. Aplikacje używajace Get są mniejsze niz inne ponieważ wszystkie rozwiązania GetX sa projektowane dla lekkości i wydajności. Jest to też zasługa Flutterowego AOT, które jest niesamowite i eliminuje nieużywane zasoby jak żaden inny framework. | ||
53 | + | ||
54 | +**GetX zwiększa stwoja produktywność, lecz mozesz to jeszcze przyspieszyć instalując rozszerzenie [GetX extension](https://marketplace.visualstudio.com/items?itemName=get-snippets.get-snippets) do swojego VSCode**. Jeszcze nie dostępne w innych IDE. | ||
55 | + | ||
56 | +# Instalacja | ||
57 | + | ||
58 | +Dodaj Get do swojego pliku pubspec.yaml: | ||
59 | + | ||
60 | +```yaml | ||
61 | +dependencies: | ||
62 | + get: | ||
63 | +``` | ||
64 | + | ||
65 | +Zaimportuj Get do plików w których chcesz go użyć: | ||
66 | + | ||
67 | +```dart | ||
68 | +import 'package:get/get.dart'; | ||
69 | +``` | ||
70 | + | ||
71 | +# Counter App z GetX | ||
72 | + | ||
73 | +Przykładowa aplikaja tworzona domyślnie podczas kreacji nowego projektu we Flaterze ma ponad 100 lini kodu (z komentarzami). By pokazać siłę Get pokarzę jak zrobić "licznik" ze zmienianą stan z każdym kliknięciem, zmianą stron i udostępniajac stan pomiędzy ekranami. Wszystko w zorganizowany sposób dzieląc buissnes logic z view w zaledwie 26 LINI KODU WŁĄCZAJĄC W TO KOMENTARZE. | ||
74 | + | ||
75 | +-Krok 1: | ||
76 | +Dodaj "Get" przed MaterialApp, zamieniając je na GetMaterialApp | ||
77 | + | ||
78 | + | ||
79 | +```dart | ||
80 | +void main() => runApp(GetMaterialApp(home: Home())); | ||
81 | +``` | ||
82 | + | ||
83 | +- Note: nie jest to modyfikaja MaterialApp, ponieważ GetMaterialApp nie jest zmodyfikowanym MaterialApp z Fluttera, jest tylko zkonfigurowanym Widgetem mającym domyślnie MaterialApp jako dziecko. Możesz to konfigurować ręcznie, ale nie jest to konieczne. GetMaterialApp jest niezbędne dla działania routów, snackbarów, bootomsheetów, internacjonalizacji, dialogów i wysokopoziomowych api powiązanych z routami i nieobecnościa kontekstu. Nie jest to jednak wymagane do używania zarzadzania stanem i dependencies. | ||
84 | + | ||
85 | +-Krok 2: | ||
86 | +Tworzymy klasę business logic i umieszczmy w niej wszystkie zmienne, metody oraz kontrolery. Możesz zmienić zmienna=ą na obserwowalną używajac prostego ".obs" | ||
87 | + | ||
88 | +```dart | ||
89 | +class Controller extends GetxController{ | ||
90 | + var count = 0.obs; | ||
91 | + increment() => count.value++; | ||
92 | +} | ||
93 | +``` | ||
94 | +- Krok 3: | ||
95 | +Tworzymy View. Użyj StatelessWidget oszczędzajac przy tym RAM. Z Get nie będzie Ci potrzebny StatefullWidget. | ||
96 | + | ||
97 | + | ||
98 | +```dart | ||
99 | +class Home extends StatelessWidget { | ||
100 | + | ||
101 | + // Instantiate your class using Get.put() to make it available for all "child" routes there. | ||
102 | + final Controller c = Get.put(Controller()); | ||
103 | + | ||
104 | + @override | ||
105 | + Widget build(context) => Scaffold( | ||
106 | + // Use Obx(()=> to update Text() whenever count is changed. | ||
107 | + appBar: AppBar(title: Obx(() => Text("Clicks: " + c.count.string))), | ||
108 | + | ||
109 | + // Replace the 8 lines Navigator.push by a simple Get.to(). You don't need context | ||
110 | + body: Center(child: RaisedButton( | ||
111 | + child: Text("Go to Other"), onPressed: () => Get.to(Other()))), | ||
112 | + floatingActionButton: | ||
113 | + FloatingActionButton(child: Icon(Icons.add), onPressed: c.increment)); | ||
114 | +} | ||
115 | + | ||
116 | +class Other extends StatelessWidget { | ||
117 | + // You can ask Get to find a Controller that is being used by another page and redirect you to it. | ||
118 | + final Controller c = Get.find(); | ||
119 | + | ||
120 | + @override | ||
121 | + Widget build(context){ | ||
122 | + // Access the updated count variable | ||
123 | + return Scaffold(body: Center(child: Text(c.count.string))); | ||
124 | + } | ||
125 | +} | ||
126 | +``` | ||
127 | +Wynik: | ||
128 | + | ||
129 | + | ||
130 | + | ||
131 | +Jest to prosty projekt, ale już na jego przykładzie widać potęgę Get. Wzraz ze wzrostem rozmiaru aplikacji ta różnica tylko się powieksza. | ||
132 | + | ||
133 | +Get był projektowany dla pracy z zespołem, ale równie dobrze sprawdza się w indywidualnej pracy. | ||
134 | + | ||
135 | +Zawsze dotrzymuj deadlinów i dostarczaj swoje rozwiązania na czas bez straty na wydajności. Get nie jest dla wszystkich jak już wspominałem, ale jeśli identyfikujesz się z powyższym zdaniem Get jest dla ciebie. | ||
136 | + | ||
137 | +# Trzy filary | ||
138 | + | ||
139 | +## Menadżer stanu | ||
140 | + | ||
141 | +Obecnie istnieje kilka menadżeów dla Fluttera. Jednak większość z nich wymaga używania ChangeNotifier, po to aby zaktualizować widżety, co nie sprawdza się pod kątem wydajności w średnich i dużych aplikacach. Możesz sprawdzić w oficjalnej dokumentacji, że ChangeNotifier powinien być używany z maksimum dwoma listinerami (https://api.flutter.dev/flutter/foundation/ChangeNotifier-class.html), będąc praktycznie bezużytecznym w średnich i duzych projektach. | ||
142 | + | ||
143 | +Get nie jest ani lepszy, ani gorszy od innych menadżerów stanów, ale powinieneś rozpatrzyć te punkty jak i poniższe, aby wybrać między użyciem Get w czystej formie (Vanilla), albo używaniem go wraz z innym menadżerem. | ||
144 | + | ||
145 | +Definitywnie Get nie jest przeciwnikiem żadnego innego menadżera, ponieważ jest on mikroframeworkiem, nie tylko menadżerem stanu. Może być użyty samodzielnie, lub w koegzystencji. | ||
146 | + | ||
147 | +Get ma bardzo lekki i prosty menadżer stanu (napisany w tylko 95 lini kodu), który nie używa ChangeNotifier. Sprosta on wymaganiom szczególnie nowych we Flutterze i nie sprawi problemu nawer w dużych aplikacjach. | ||
148 | + | ||
149 | +### Reaktywny menadżer stanu | ||
150 | + | ||
151 | +Reaktywne programowanie możee dotrącać niektórych, ponieważ powszechnie jest uważane za skomplikowane. GetX zamienia to w coś prostego: | ||
152 | + | ||
153 | +- Nie musisz tworzyć Strw=eamControllerów, | ||
154 | +- Nie musisz tworzyć StreamBuildera dla każdej zmiennej, | ||
155 | +- Nie ma potrzeby tworzenia klasy dla kżdego stanu, | ||
156 | +- Nie musisz tworzyć Get dla inicjalnej zmiennej | ||
157 | + | ||
158 | +Wyobraź sobie, że masz zmienną i za każdym razem jak zmienisz ją chcesz żeby wszystkie widżety używające jej automatycznie się zmieniły | ||
159 | + | ||
160 | +Przykładowa zmienna: | ||
161 | +```dart | ||
162 | +var name = 'Jonatas Borges'; | ||
163 | +``` | ||
164 | + | ||
165 | +By zamienić ją na obserwowalną dodaj ".obx" na końcu: | ||
166 | + | ||
167 | +```dart | ||
168 | +var name = 'Jonatas Borges'.obs; | ||
169 | +``` | ||
170 | + | ||
171 | +I w UI, kiedy chcesz go zaktualizować przy modyfikacji zmiennej po prostu dodaj to: | ||
172 | +```dart | ||
173 | +Obx (() => Text (controller.name)); | ||
174 | +``` | ||
175 | + | ||
176 | +To wszystko. *Proste*, co nie? | ||
177 | + | ||
178 | +### Bardziej szczegółowo o menadżerze stanu | ||
179 | +**Zobacz bardziej szczegółowe wytłumaczenie menadz=żera sranu [tutaj](./docs/en_US/state_management.md). Znajdują się tam przykłady jak o różnice między prostym menadżerem stanu oraz reaktywnym** | ||
180 | + | ||
181 | +### Video tłumaczące użycie menadżera stanu | ||
182 | + | ||
183 | +Amateur COder nagrał o tym niezwykły film: | ||
184 | + | ||
185 | +Link: [Complete GetX State Management](https://www.youtube.com/watch?v=CNpXbeI_slw) | ||
186 | + | ||
187 | +## Zarządzanie routami | ||
188 | + | ||
189 | +Jeśli chcesz używać routes/snackbars/dialogs/bottomsheets z GetX możesz to robić bez contextu. | ||
190 | + | ||
191 | +Zamień MaterialApp na GetMaterialApp | ||
192 | +```dart | ||
193 | +GetMaterialApp( // Before: MaterialApp( | ||
194 | + home: MyHome(), | ||
195 | +) | ||
196 | +``` | ||
197 | + | ||
198 | +By nawigować do nowego ekranu: | ||
199 | + | ||
200 | +```dart | ||
201 | +Get.to(NextScreen()); | ||
202 | +``` | ||
203 | + | ||
204 | +By powrócić do poprzedniego ekranu | ||
205 | + | ||
206 | +```dart | ||
207 | +Get.back(); | ||
208 | +``` | ||
209 | + | ||
210 | +By przejść do następnego ekranu bez możliwości powrotu do poprzedniego (do zastosowania SplashScreenów, ekranów logowania itd.) | ||
211 | + | ||
212 | +```dart | ||
213 | +Get.off(NextScreen()); | ||
214 | +``` | ||
215 | + | ||
216 | +By przejść do następnego ekranu niszcząc poprzednie routy (użyteczne w koszykach, ankietach i testach) | ||
217 | + | ||
218 | +```dart | ||
219 | +Get.offAll(NextScreen()); | ||
220 | +``` | ||
221 | + | ||
222 | +By nawigować do następnego routa i otrzymać, lub uaktualnić dane zaraz po tym jak z niego wrócisz: | ||
223 | +```dart | ||
224 | +var data = await Get.to(Payment()); | ||
225 | +``` | ||
226 | +w innym ekranie wyślij dane z poprzedniego routa:featury | ||
227 | + | ||
228 | +```dart | ||
229 | +Get.back(result: 'sucess'); | ||
230 | +``` | ||
231 | +I użyj następujące np.: | ||
232 | +```dart | ||
233 | +if(data == 'sucess') madeAnything(); | ||
234 | +``` | ||
235 | +Zobacz, ze do żadnej z tych operacji nie potrzebowałeś contextu. Jest to jedna z głównych zalet GetX oszczędzającego na niepotrzebnej ogudowie z kod i dającego możliwość uzywania tych metod w klasie kontrolera. | ||
236 | + | ||
237 | + | ||
238 | +### Więcej o routach | ||
239 | + | ||
240 | +**Get używa named routes i także oferuje niskopoziomową obsługę routów! Zobacz bardziej szczegółową dokumentacje [tutaj](./docs/en_US/route_management.md)** | ||
241 | + | ||
242 | +### Video tłumaczące użycie | ||
243 | + | ||
244 | +Amateur Coder nagrał o tym niezwykły film: | ||
245 | + | ||
246 | +Link: [Complete GetX Navigation](https://www.youtube.com/watch?v=RaqPIoJSTtI) | ||
247 | + | ||
248 | +## Zarządzanie dependencies | ||
249 | + | ||
250 | +Get ma prosty i potężny menadżer dependencies. Pozwala on na otrzymanie tych samych klas jak twoje Bloc lub Kontroler piszac jedną linię kodu bez Provider context i inheritedWidget: | ||
251 | + | ||
252 | +```dart | ||
253 | +Controller controller = Get.put(Controller()); // Rather Controller controller = Controller(); | ||
254 | +``` | ||
255 | + | ||
256 | +- Note: Jeśli używasz menadżera stanu Get zwróć uwafę na binding api, które pozwoli Ci łatwiej połączyć twój widok z kontrolerem. | ||
257 | +https://github.com/jonataslaw/get | ||
258 | +**Tip:** Menadżer dependency Get jest oddzielony od innych części pakietu więc jeśli już używasz menadzera stanu(którego kolwiek,bez różnicy) nie musisz przepisywać tego wszystkiego na nowo. Możesz używać tego dodawania dependencies bez poroblemu. | ||
259 | + | ||
260 | +```dart | ||
261 | +controller.fetchApi(); | ||
262 | +``` | ||
263 | +Wyobraź sobie, że musisz nawigować pomiędzy wieloma routami i potrzebujesz dane z kontrolerów z poprzednich ekranów. Musiałbyś użyć menadżera stanu z dodatkiem Providera albo Get_it, prawda? Otuż nie z Fet. Muszisz po prostu poprosić Get o znalezienie tego kontrolera i nie potrzebujesz przy tym dodatkowych dependencies. | ||
264 | + | ||
265 | +```dart | ||
266 | +Controller controller = Get.find(); | ||
267 | +//Yes, it looks like Magic, Get will find your controller, and will deliver it to you. You can have 1 million controllersfeatury instantiated, Get will always give you the right controller. | ||
268 | +``` | ||
269 | + | ||
270 | +I wtedy będziesz mógł otrzymać bez problemu z niego dane | ||
271 | + | ||
272 | +```dart | ||
273 | +Text(controller.textFromApi); | ||
274 | +``` | ||
275 | +### Bardziej szczegółowo o menadżerze dependencies | ||
276 | + | ||
277 | +**Zobzcz więcej w dokumentacji [tutaj](./docs/en_US/dependency_management.md)** | ||
278 | + | ||
279 | +# Jak włożyć coś od siebie | ||
280 | + | ||
281 | +Możesz uczestniczyć w rozwoju projektu na różny sposób: | ||
282 | +- Pomagając w tłumaczeniu readme na inne języki. | ||
283 | +- Dodając dokumentację do readme ( nawet nie połowa funkcji została jeszcze opisana). | ||
284 | +- Pisząc artykuły i nagrywając filmy uczące użycia biblioteki Get (będą zamieszczone w readme, a w przyszłości na naszej Wiki). | ||
285 | +- Oferując PR-y dla kodu i testów. | ||
286 | +- Dodając nowe funkcje. | ||
287 | + | ||
288 | +Każda współpraca jest mile widziana! | ||
289 | + | ||
290 | +# Narzędzia | ||
291 | + | ||
292 | +## Zmiana motywu | ||
293 | + | ||
294 | +Nie powinno się uzywać innego widżetu niż GetMaterialApp by go zaktualizować. To może powodować duplikacje kluczy. Wiele osób nawykło do prehistorycznego podejścia tworzenia widżetu "ThemeProvider" tylko po to by zmienić motyw aplikacji. Z Get nie jest to absolutnie wymagane. | ||
295 | + | ||
296 | +Możesz stworzyć customowy motyw i łatwo go dodać z Get.changeTheme bez niepotrzebnego kodu. | ||
297 | + | ||
298 | +```dart | ||
299 | +Get.changeTheme(ThemeData.light()); | ||
300 | +``` | ||
301 | + | ||
302 | +Jeśli chcesz stworzyć coś jak przycisk zmieniający motyw aplikacji na onTap, możesz połączyć dwia Get API. Api sprawdzające czy ciemny motyw jest używany i Api zajmujące się zmianą motywu. Po prostu użyj tego w onPressed: | ||
303 | + | ||
304 | +```dart | ||
305 | +Get.changeTheme(Get.isDarkMode? ThemeData.light(): ThemeData.dark());featury | ||
306 | +``` | ||
307 | + | ||
308 | +Kiedy ciemny motyw jest aktywny zmieni się on na jasny, w przeciwnym wypadku zmieni się na ciemny. | ||
309 | + | ||
310 | +Jeśli interesuje Cię jak zmieniać motywy podąrzaj za samouczkiem na Medium uczącym zmiany motywu z Get: | ||
311 | + | ||
312 | +- [Dynamic Themes in 3 lines using Get](https://medium.com/swlh/flutter-dynamic-themes-in-3-lines-c3b375f292e3) - Samouczek stworzony przez [Rod Brown](https://github.com/RodBr). | ||
313 | + | ||
314 | +## Inne zaawansowane API | ||
315 | + | ||
316 | +```dart | ||
317 | +// give the current args from currentScreen | ||
318 | +Get.arguments | ||
319 | + | ||
320 | +// give arguments of previous route | ||
321 | +Get.previousArguments | ||
322 | + | ||
323 | +// give name of previous route | ||
324 | +Get.previousRoute | ||
325 | + | ||
326 | +// give the raw route to access for example, rawRoute.isFirst() | ||
327 | +Get.rawRoute | ||
328 | + | ||
329 | +// give access to Rounting API from GetObserver | ||
330 | +Get.routing | ||
331 | + | ||
332 | +// check if snackbar is open | ||
333 | +Get.isSnackbarOpen | ||
334 | + | ||
335 | +// check if dialog is open | ||
336 | +Get.isDialogOpen | ||
337 | + | ||
338 | +// check if bottomsheet is opefeaturyn | ||
339 | +Get.isBottomSheetOpen | ||
340 | + | ||
341 | +// remove one route. | ||
342 | +Get.removeRoute() | ||
343 | + | ||
344 | +// back repeatedly until the predicate returns true. | ||
345 | +Get.until() | ||
346 | + | ||
347 | +// go to next route and remove all the previous routes until the predicate returns true. | ||
348 | +Get.offUntil() | ||
349 | + | ||
350 | +// go to next named route and remove all the previous routes until the predicate returns true. | ||
351 | +Get.offNamedUntil() | ||
352 | + | ||
353 | +//Check in what platform the app is running | ||
354 | +GetPlatform.isAndroid | ||
355 | +GetPlatform.isIOS | ||
356 | +GetPlatform.isWeb | ||
357 | + | ||
358 | +// Equivalent to the method: MediaQuery.of(context).size.height, but they are immutable. | ||
359 | +Get.height | ||
360 | +Get.width | ||
361 | + | ||
362 | +// Gives the current context of navigator. | ||
363 | +Get.context | ||
364 | + | ||
365 | +// Gives the context of the snackbar/dialog/bottomsheet in the foreground anywhere in your code. | ||
366 | +Get.contextOverlay | ||
367 | + | ||
368 | +// Note: the following methods are extensions on context. Since you | ||
369 | +// have access to context in any place of your UI, you can use it anywhere in the UI code | ||
370 | + | ||
371 | +// If you need a changeable height/width (like browser windows that can be scfeaturyaled) you will need to use context. | ||
372 | +context.width | ||
373 | +context.height | ||
374 | + | ||
375 | +// gives you the power to define half the screen now, a third of it and so on. | ||
376 | +//Useful for responsive applications. | ||
377 | +// param dividedBy (double) optional - default: 1 | ||
378 | +// param reducedBy (double) optional - default: 0 | ||
379 | +context.heightTransformer() | ||
380 | +context.widthTransformer() | ||
381 | + | ||
382 | +/// similar to MediaQuery.of(context).size | ||
383 | +context.mediaQuerySize() | ||
384 | + | ||
385 | +/// similar to MediaQuery.of(context).padding | ||
386 | +context.mediaQueryPadding() | ||
387 | + | ||
388 | +/// similar to MediaQuery.of(context).viewPadding | ||
389 | +context.mediaQueryViewPadding() | ||
390 | + | ||
391 | +/// similar to MediaQuery.of(context).viewInsets; | ||
392 | +context.mediaQueryViewInsets() | ||
393 | + | ||
394 | +/// similar to MediaQuery.of(context).orientation; | ||
395 | +context.orientation() | ||
396 | + | ||
397 | +/// check if device is on landscape mode | ||
398 | +context.isLandscape() | ||
399 | + | ||
400 | +/// check if device is on portrait mode | ||
401 | +context.isPortrait() | ||
402 | + | ||
403 | +/// similar to MediaQuery.of(context).devicePixelRatio; | ||
404 | +context.devicePixelRatio() | ||
405 | + | ||
406 | +/// similar to MediaQuery.of(context).textScaleFactor; | ||
407 | +context.textScaleFactor() | ||
408 | + | ||
409 | +/// get the shortestSide from screen | ||
410 | +context.mediaQueryShortestSide() | ||
411 | + | ||
412 | +/// True if width be larger thfeaturyan 800 | ||
413 | +context.showNavbar() | ||
414 | + | ||
415 | +/// True if the shortestSide is smaller than 600p | ||
416 | +context.isPhone() | ||
417 | + | ||
418 | +/// True if the shortestSide is largest than 600p | ||
419 | +context.isSmallTablet() | ||
420 | + | ||
421 | +/// True if the shortestSide is largest than 720p | ||
422 | +context.isLargeTablet() | ||
423 | + | ||
424 | +/// True if the current device is Tablet | ||
425 | +context.isTablet() | ||
426 | +``` | ||
427 | + | ||
428 | +### Opcjonalne globalne ustawienia i manualna konfiguracja | ||
429 | + | ||
430 | +GetMaterialApp konfiguruje wszystko za Ciebie, ale jeśli chcesz możesz konfigurować Get manualnie. | ||
431 | + | ||
432 | +```dart | ||
433 | +MaterialApp( | ||
434 | + navigatorKey: Get.key, | ||
435 | + navigatorObservers: [GetObserver()], | ||
436 | +); | ||
437 | +``` | ||
438 | + | ||
439 | +Będziesz mógł używać swojego Midware z GetObserver, nie wpływa to na nic. | ||
440 | + | ||
441 | +```dart | ||
442 | +MaterialApp( | ||
443 | + navigatorKey: Get.key, | ||
444 | + navigatorObservers: [ | ||
445 | + GetObserver(MiddleWare.observer) // Here | ||
446 | + ], | ||
447 | +); | ||
448 | +``` | ||
449 | + | ||
450 | +Mozesz stworzyć globalne ustawienia dla Get. Tylko dodaj Get.config do swojego kodu przed użyciem routów, lub bezpośrednio w GetMaterialApp | ||
451 | + | ||
452 | +```dart | ||
453 | +GetMaterialApp( | ||
454 | + enableLog: true, | ||
455 | + defaultTransition: Transition.fade, | ||
456 | + opaqueRoute: Get.isOpaqueRouteDefault, | ||
457 | + popGesture: Get.isPopGestureEnable, | ||
458 | + transitionDuration: Get.defaultDurationTransition, | ||
459 | + defaultGlobalState: Get.defaultGlobalState,https://github.com/jonataslaw/ge | ||
460 | +); | ||
461 | + | ||
462 | +Get.config( | ||
463 | + enableLog = true, | ||
464 | + defaultPopGesture = true, | ||
465 | + defaultTransition = Transitions.cupertino | ||
466 | +) | ||
467 | +``` | ||
468 | + | ||
469 | +## Video tłumaczące inne funkcjonalności GetX | ||
470 | + | ||
471 | + | ||
472 | +Amateur Coder nagrał niezwykły film tłumaczący powyższe zagadnienia! | ||
473 | + | ||
474 | +Link: [GetX Other Features](https://youtu.be/ttQtlX_Q0eU) | ||
475 | + | ||
476 | + | ||
477 | +# Zmiany od 2.0 | ||
478 | + | ||
479 | +1- Typy Rx: | ||
480 | + | ||
481 | +| Przed | Po | | ||
482 | +| ------- | ---------- | | ||
483 | +| StringX | `RxString` | | ||
484 | +| IntX | `RxInt` | | ||
485 | +| MapX | `RxMax` | | ||
486 | +| ListX | `RxList` | | ||
487 | +| NumX | `RxNum` | | ||
488 | +| DoubleX | `RxDouble` | | ||
489 | + | ||
490 | +RXController i GetBuilder teraz zostały połączone. Nie musisz już pamiętać którego kontrolerachcesz użyć, po prostu korzystaj z GetxController, będzie działać zarówno dla prostego jak i reaktywnego menadżera stanów. | ||
491 | + | ||
492 | +2- NamedRoutes | ||
493 | +Wcześniej: | ||
494 | + | ||
495 | +```dart | ||
496 | +GetMaterialApp( | ||
497 | + namedRoutes: { | ||
498 | + '/': GetRoute(page: Home()), | ||
499 | + } | ||
500 | +) | ||
501 | +``` | ||
502 | + | ||
503 | +Teraz: | ||
504 | + | ||
505 | +```dart | ||
506 | +GetMaterialApp( | ||
507 | + getPages: [ | ||
508 | + GetPage(name: '/', page:()=> Home()), | ||
509 | + ] | ||
510 | +) | ||
511 | +``` | ||
512 | + | ||
513 | +Po co ta zmiana? | ||
514 | +Często może być niezbędnym decydowanie która strona będzie wyswietlana w zależności od parametru, lub tokenu logowania. Wczesniejsze podejscie było nieelastyczne nie pozwalając na to. Zawarcie strony w funkcji zmniejszyło sporzycie RAM-u, ze względu na niealokowanie routów od początku działania aplikacji. Pozwoliło to także na takie podejscie: | ||
515 | + | ||
516 | +```dart | ||
517 | + | ||
518 | +GetStorage box = GetStorage(); | ||
519 | + | ||
520 | +GetMaterialApp( | ||
521 | + getPages: [ | ||
522 | + GetPage(name: '/', page:(){ | ||
523 | + return box.hasData('token') ? Home() : Login(); | ||
524 | + }) | ||
525 | + ] | ||
526 | +) | ||
527 | +``` |
1 |  | 1 |  |
2 | 2 | ||
3 | -*Idiomas: [Inglês](README.md), Português Brasileiro (este arquivo), [Espanhol](README-es.md).* | 3 | +*Idiomas: [Inglês](README.md), Português Brasileiro (este arquivo), [Espanhol](README-es.md), [Polaco](README.pl.md).* |
4 | 4 | ||
5 | [](https://pub.dev/packages/get) | 5 | [](https://pub.dev/packages/get) |
6 |  | 6 |  |
-
Please register or login to post a comment