Showing
1 changed file
with
33 additions
and
30 deletions
@@ -3,23 +3,23 @@ | @@ -3,23 +3,23 @@ | ||
3 | - [Advantages(Avantajlar)](#advantages(avantajlar)) | 3 | - [Advantages(Avantajlar)](#advantages(avantajlar)) |
4 | - [Maksimum Performans:](#maksimum-performans) | 4 | - [Maksimum Performans:](#maksimum-performans) |
5 | - [Reaktif bir değişken bildirmek](#reaktif-bir-değişken-bildirmek) | 5 | - [Reaktif bir değişken bildirmek](#reaktif-bir-değişken-bildirmek) |
6 | - - [Reaktif bir state'e(duruma) sahip olmak kolaydır.](#reaktif-bir-state'e-(duruma)-sahip-olmak-kolaydır) | ||
7 | - - [Görünümdeki değerleri kullanmak](#using-the-values-in-the-view) | ||
8 | - - [Yeniden oluşturulacak koşullar](#conditions-to-rebuild) | ||
9 | - - [Nerede .obs kullanılabilir](#where-obs-can-be-used) | ||
10 | - - [Listeler hakkında not](#note-about-lists) | ||
11 | - - [Neden .value kullanmak zorundayım?](#why-i-have-to-use-value) | 6 | + - [Reaktif bir state'e(duruma) sahip olmak kolaydır.](#reaktif-bir-state'e(duruma)-sahip-olmak-kolaydır) |
7 | + - [Görünümdeki değerleri kullanmak](#görünümdeki-değerleri-kullanmak) | ||
8 | + - [Yeniden oluşturulacak koşullar](#yeniden-oluşturulacak-koşullar) | ||
9 | + - [Nerede .obs kullanılabilir](#nerede-.obs-kullanılabilir) | ||
10 | + - [Listeler hakkında not](#listeler-hakkında-not) | ||
11 | + - [Neden .value kullanmak zorundayım?](#neden-.value-kullanmak-zorundayım?) | ||
12 | - [Obx()](#obx) | 12 | - [Obx()](#obx) |
13 | - [Çalışanlar](#Çalışanlar) | 13 | - [Çalışanlar](#Çalışanlar) |
14 | - + [Simple State Manager (Basit Durum Yöneticisi)](#simple-state-manager) | ||
15 | - - [Avantajlar](#advantages-1) | ||
16 | - - [Kullanımı](#usage) | ||
17 | - - [Controller'lar nasıl çalışır](#how-it-handles-controllers) | ||
18 | - - [Artık StatefulWidget'lara ihtiyacınız olmayacak](#you-wont-need-statefulwidgets-anymore) | ||
19 | - - [Neden var](#why-it-exists) | ||
20 | - - [Kullanmanın diğer yolları](#other-ways-of-using-it) | ||
21 | - - [Unique IDs (Benzersiz Kimlikler)](#unique-ids) | ||
22 | - + [İki state managers ile Mixing](#mixing-the-two-state-managers) | 14 | + + [Simple State Manager(Basit Durum Yöneticisi)](#simple-state-manager(basit-durum-yöneticisi)) |
15 | + - [Avantajlar](#avantajlar) | ||
16 | + - [Kullanımı](#kullanımı) | ||
17 | + - [Controller'lar nasıl çalışır](#controller'lar-nasıl-çalışır) | ||
18 | + - [Artık StatefulWidget'lara ihtiyacınız olmayacak](#artık-statefulwidget'lara-ihtiyacınız-olmayacak) | ||
19 | + - [Neden var](#neden-vart) | ||
20 | + - [Kullanmanın diğer yolları](#kullanmanın-diğer-yolları) | ||
21 | + - [Unique IDs(Benzersiz Kimlikler)](#unique-ids(benzersiz-kimlikler)) | ||
22 | + + [İki state managers ile Mixing](#İki-state-managers-ile-mixing) | ||
23 | + [GetBuilder vs GetX vs Obx vs MixinBuilder](#getbuilder-vs-getx-vs-obx-vs-mixinbuilder) | 23 | + [GetBuilder vs GetX vs Obx vs MixinBuilder](#getbuilder-vs-getx-vs-obx-vs-mixinbuilder) |
24 | 24 | ||
25 | # State Management (Durum Yönetimi) | 25 | # State Management (Durum Yönetimi) |
@@ -90,7 +90,7 @@ Obx (() => Text (controller.name)); | @@ -90,7 +90,7 @@ Obx (() => Text (controller.name)); | ||
90 | 90 | ||
91 | _Ezberlemek için neye ihtiyacın var?_Sadece `Obx(() =>` . | 91 | _Ezberlemek için neye ihtiyacın var?_Sadece `Obx(() =>` . |
92 | 92 | ||
93 | - | 93 | +You are just passing that Widget through an arrow-function into an `Obx()` (the "Observer" of the _Rx_). |
94 | Bu Widget'ı bir ok işlevinden bir 'Obx()' (_Rx_'in "Observable") içine geçiriyorsunuz. | 94 | Bu Widget'ı bir ok işlevinden bir 'Obx()' (_Rx_'in "Observable") içine geçiriyorsunuz. |
95 | 95 | ||
96 | `Obx` oldukça akıllıdır ve yalnızca `controller.name`nin değeri değiştiğinde değişecektir. | 96 | `Obx` oldukça akıllıdır ve yalnızca `controller.name`nin değeri değiştiğinde değişecektir. |
@@ -111,7 +111,7 @@ Bu nedenle, **GetX** yalnızca _Rx_ değişkeni değerini değiştirdiğinde ekr | @@ -111,7 +111,7 @@ Bu nedenle, **GetX** yalnızca _Rx_ değişkeni değerini değiştirdiğinde ekr | ||
111 | 111 | ||
112 | final isOpen = false.obs; | 112 | final isOpen = false.obs; |
113 | 113 | ||
114 | -// Hiçbir şey olmadı. Işte aynı değer. | 114 | +// NOTHING will happen... same value. |
115 | void onButtonTap() => isOpen.value=false; | 115 | void onButtonTap() => isOpen.value=false; |
116 | ``` | 116 | ``` |
117 | 117 | ||
@@ -196,15 +196,15 @@ final myMap = <String, int>{}.obs; | @@ -196,15 +196,15 @@ final myMap = <String, int>{}.obs; | ||
196 | final user = User().obs; | 196 | final user = User().obs; |
197 | ``` | 197 | ``` |
198 | 198 | ||
199 | -##### Reaktif bir duruma sahip olmak kolaydır. | 199 | +##### Reaktif bir state'e(duruma) sahip olmak kolaydır. |
200 | 200 | ||
201 | Bildiğimiz gibi, _Dart_ şimdi _null safety_ doğru gidiyor. | 201 | Bildiğimiz gibi, _Dart_ şimdi _null safety_ doğru gidiyor. |
202 | Şu andan itibaren hazırlıklı olmak için, _Rx_ değişkenlerinizi her zaman bir **initial value** ile başlatmalısınız. | 202 | Şu andan itibaren hazırlıklı olmak için, _Rx_ değişkenlerinizi her zaman bir **initial value** ile başlatmalısınız. |
203 | 203 | ||
204 | > Bir değişkeni **GetX** ile _observable_ + _initial value_ değerine dönüştürmek en basit ve pratik yaklaşımdır. | 204 | > Bir değişkeni **GetX** ile _observable_ + _initial value_ değerine dönüştürmek en basit ve pratik yaklaşımdır. |
205 | 205 | ||
206 | -Kelimenin tam anlamıyla bir değişkeninizin sonuna bir " `.obs` " ekleyeceksiniz, ve **bu kadar**, şimdi onu gözlemlenebilir hale getirdiniz, | ||
207 | -ve onun `.value(değer)`'i, _initial value_ olacaktır). | 206 | +Kelimenin tam anlamıyla bir değişkeninizin sonuna bir " `.obs` " ekleyeceksiniz, ve **bu kadar**. Şimdi onu gözlemlenebilir hale getirdiniz, |
207 | +ve onun `.value(değer)`'i, _initial value_ olacaktır. | ||
208 | 208 | ||
209 | ### Görünümdeki değerleri kullanmak | 209 | ### Görünümdeki değerleri kullanmak |
210 | 210 | ||
@@ -339,7 +339,7 @@ class User { | @@ -339,7 +339,7 @@ class User { | ||
339 | var age; | 339 | var age; |
340 | } | 340 | } |
341 | 341 | ||
342 | -// örnek verirken: | 342 | +// örnek: |
343 | final user = User(name: "Camila", age: 18).obs; | 343 | final user = User(name: "Camila", age: 18).obs; |
344 | ``` | 344 | ``` |
345 | 345 | ||
@@ -348,14 +348,14 @@ final user = User(name: "Camila", age: 18).obs; | @@ -348,14 +348,14 @@ final user = User(name: "Camila", age: 18).obs; | ||
348 | Listeler, içindeki nesneler gibi tamamen gözlemlenebilir. Bu şekilde, bir listeye bir değer eklerseniz, onu kullanan widget'ları otomatik olarak yeniden oluşturur. | 348 | Listeler, içindeki nesneler gibi tamamen gözlemlenebilir. Bu şekilde, bir listeye bir değer eklerseniz, onu kullanan widget'ları otomatik olarak yeniden oluşturur. |
349 | 349 | ||
350 | Ayrıca listelerde ".value" kullanmanıza gerek yok, harika dart api'ları bunu kaldırmamıza izin verdi. | 350 | Ayrıca listelerde ".value" kullanmanıza gerek yok, harika dart api'ları bunu kaldırmamıza izin verdi. |
351 | -Ne yazık ki, String ve int gibi ilkel türler genişletilemez, bu da kullanımını sağlar.Değer zorunludur, ancak bunlar için get ve setter'larla çalışıyorsanız bu bir sorun olmayacaktır. | 351 | +Ne yazık ki, String ve int gibi ilkel türler genişletilemez, bu da kullanımını sağlar. Değer zorunludur, ancak bunlar için get ve setter'larla çalışıyorsanız bu bir sorun olmayacaktır. |
352 | 352 | ||
353 | ``` dart | 353 | ``` dart |
354 | -// controller içinde | 354 | +// On the controller |
355 | final String title = 'User Info:'.obs | 355 | final String title = 'User Info:'.obs |
356 | final list = List<User>().obs; | 356 | final list = List<User>().obs; |
357 | 357 | ||
358 | -// view içinde | 358 | +// on the view |
359 | Text(controller.title.value), // .value olması gerekir | 359 | Text(controller.title.value), // .value olması gerekir |
360 | ListView.builder ( | 360 | ListView.builder ( |
361 | itemCount: controller.list.length // listelerin buna ihtiyacı yok | 361 | itemCount: controller.list.length // listelerin buna ihtiyacı yok |
@@ -383,7 +383,7 @@ user.age = 18; | @@ -383,7 +383,7 @@ user.age = 18; | ||
383 | // user değişkenini güncellemenin alternatif bir yolu: | 383 | // user değişkenini güncellemenin alternatif bir yolu: |
384 | user(User(name: 'João', age: 35)); | 384 | user(User(name: 'João', age: 35)); |
385 | 385 | ||
386 | -// view içinde: | 386 | +// on view: |
387 | Obx(()=> Text("Name ${user.value.name}: Age: ${user.value.age}")) | 387 | Obx(()=> Text("Name ${user.value.name}: Age: ${user.value.age}")) |
388 | // model değerlerine .value olmadan da erişebilirsiniz: | 388 | // model değerlerine .value olmadan da erişebilirsiniz: |
389 | user().name; | 389 | user().name; |
@@ -404,6 +404,8 @@ Bu kitaplığın toplam ağırlığı, eksiksiz bir çözüm olmasına rağmen t | @@ -404,6 +404,8 @@ Bu kitaplığın toplam ağırlığı, eksiksiz bir çözüm olmasına rağmen t | ||
404 | 404 | ||
405 | Eğer `.value` dan rahatsızsanız MobX harika bir alternatiftir ve Get ile birlikte kullanabilirsiniz. | 405 | Eğer `.value` dan rahatsızsanız MobX harika bir alternatiftir ve Get ile birlikte kullanabilirsiniz. |
406 | 406 | ||
407 | +If you have no problem with the MobX code generator, or have no problem with the BLoC boilerplate, you can simply use Get for routes, and forget that it has state manager. Get SEM and RSM were born out of necessity, my company had a project with more than 90 controllers, and the code generator simply took more than 30 minutes to complete its tasks after a Flutter Clean on a reasonably good machine, if your project it has 5, 10, 15 controllers, any state manager will supply you well. If you have an absurdly large project, and code generator is a problem for you, you have been awarded this solution. | ||
408 | + | ||
407 | MobX code generator ile bir sorununuz yoksa veya BLoC ilgili bir sorununuz yoksa Get ile route'u kullanabilirsiniz. Get SEM ve RSM ile doğdu, şirketimin 90'dan fazla controller'a sahip bir projesi var.Büyük bir projeniz varsa, oldukça iyi bir makinede bir Flutter Clean'den sonra görevlerini tamamlaması 30 dakikadan fazla sürdü. 5, 10, 15 controller, herhangi bir state manager size yardımcı olacaktır. Büyük bir projeniz varsa ve code generator sizin için bir sorunsa, bu çözüm size verildi. | 409 | MobX code generator ile bir sorununuz yoksa veya BLoC ilgili bir sorununuz yoksa Get ile route'u kullanabilirsiniz. Get SEM ve RSM ile doğdu, şirketimin 90'dan fazla controller'a sahip bir projesi var.Büyük bir projeniz varsa, oldukça iyi bir makinede bir Flutter Clean'den sonra görevlerini tamamlaması 30 dakikadan fazla sürdü. 5, 10, 15 controller, herhangi bir state manager size yardımcı olacaktır. Büyük bir projeniz varsa ve code generator sizin için bir sorunsa, bu çözüm size verildi. |
408 | 410 | ||
409 | Açıkçası, birisi projeye katkıda bulunmak ve bir code generator veya benzeri bir şey oluşturmak istiyorsa, bunu readme'de alternatif olarak bağlantı ekleyeceğim, şimdilik diyorum ki, bunu zaten yapan iyi çözümler var, MobX gibi. | 411 | Açıkçası, birisi projeye katkıda bulunmak ve bir code generator veya benzeri bir şey oluşturmak istiyorsa, bunu readme'de alternatif olarak bağlantı ekleyeceğim, şimdilik diyorum ki, bunu zaten yapan iyi çözümler var, MobX gibi. |
@@ -459,7 +461,7 @@ _Rx_ değişkeni her yeni bir değer yaydığında çağrılır. | @@ -459,7 +461,7 @@ _Rx_ değişkeni her yeni bir değer yaydığında çağrılır. | ||
459 | 461 | ||
460 | * NOT: Çalışanlar her zaman bir Controller veya Class başlatırken kullanılmalıdır, bu nedenle her zaman onInit (önerilen), Class oluşturucu veya statefulwidget'in initState üzerinde olmalıdır (bu uygulama çoğu durumda önerilmez, ancak herhangi bir yan etkisi olmamalıdır). | 462 | * NOT: Çalışanlar her zaman bir Controller veya Class başlatırken kullanılmalıdır, bu nedenle her zaman onInit (önerilen), Class oluşturucu veya statefulwidget'in initState üzerinde olmalıdır (bu uygulama çoğu durumda önerilmez, ancak herhangi bir yan etkisi olmamalıdır). |
461 | 463 | ||
462 | -## Simple State Manager (Basit Durum Yöneticisi) | 464 | +## Simple State Manager(Basit Durum Yöneticisi) |
463 | 465 | ||
464 | Get'in son derece hafif ve kolay, ChangeNotifier kullanmayan, özellikle Flutter'a yeni başlayanların ihtiyacını karşılayacak ve büyük uygulamalar için sorun yaratmayacak bir state manager'i var. | 466 | Get'in son derece hafif ve kolay, ChangeNotifier kullanmayan, özellikle Flutter'a yeni başlayanların ihtiyacını karşılayacak ve büyük uygulamalar için sorun yaratmayacak bir state manager'i var. |
465 | 467 | ||
@@ -500,12 +502,12 @@ class Controller extends GetxController { | @@ -500,12 +502,12 @@ class Controller extends GetxController { | ||
500 | } | 502 | } |
501 | // Stateless/Stateful sınıfınızda, artış çağrıldığında Metni güncellemek için Get Builder'ı kullanın | 503 | // Stateless/Stateful sınıfınızda, artış çağrıldığında Metni güncellemek için Get Builder'ı kullanın |
502 | GetBuilder<Controller>( | 504 | GetBuilder<Controller>( |
503 | - init: Controller(), // SADECE ILK SEFERINDE "INIT" YAPIN | 505 | + init: Controller(), // INIT IT ONLY THE FIRST TIME |
504 | builder: (_) => Text( | 506 | builder: (_) => Text( |
505 | '${_.counter}', | 507 | '${_.counter}', |
506 | ), | 508 | ), |
507 | ) | 509 | ) |
508 | -//Controller'ı sadece ilk seferinde "initialize" edin. Aynı controller için ikinci defa ReBuilder kullandıysanız, bunu bir daha yapmayın. Controller, widget içinde "init" işlemi gerçekleştikten sonra otomatik olarak hafızadan kaldırılacaktır. Bunun için endişelenmenize gerek yoktur, Get bunu otomatik olarak yapacaktır. Sadece aynı controller'ı birden fazla kez başlatmadığınıza emin olun yeter. | 510 | +//Initialize your controller only the first time. The second time you are using ReBuilder for the same controller, do not use it again. Your controller will be automatically removed from memory as soon as the widget that marked it as 'init' is deployed. You don't have to worry about that, Get will do it automatically, just make sure you don't start the same controller twice. |
509 | ``` | 511 | ``` |
510 | 512 | ||
511 | **Tamamlandı!** | 513 | **Tamamlandı!** |
@@ -667,7 +669,7 @@ class Controller extends GetxController { | @@ -667,7 +669,7 @@ class Controller extends GetxController { | ||
667 | // static Controller get to => Get.find(); // static olmadan | 669 | // static Controller get to => Get.find(); // static olmadan |
668 | [...] | 670 | [...] |
669 | } | 671 | } |
670 | -// stateful/stateless class içinde | 672 | +// on stateful/stateless class |
671 | GetBuilder<Controller>( | 673 | GetBuilder<Controller>( |
672 | init: Controller(), // Her controller'ı bir kez kullanın | 674 | init: Controller(), // Her controller'ı bir kez kullanın |
673 | builder: (_) => Text( | 675 | builder: (_) => Text( |
@@ -690,7 +692,7 @@ GetBuilder<Controller>( | @@ -690,7 +692,7 @@ GetBuilder<Controller>( | ||
690 | 692 | ||
691 | ``` | 693 | ``` |
692 | 694 | ||
693 | -### Unique IDs (Benzersiz Kimlikler) | 695 | +### Unique IDs(Benzersiz Kimlikler) |
694 | 696 | ||
695 | Bir widget'ın controller'ını güncellemek istiyorsanız GetBuilder onlara benzersiz kimlikler atayabilirsiniz: | 697 | Bir widget'ın controller'ını güncellemek istiyorsanız GetBuilder onlara benzersiz kimlikler atayabilirsiniz: |
696 | 698 | ||
@@ -734,6 +736,7 @@ bir controller'a T modelinizi ekleyin. | @@ -734,6 +736,7 @@ bir controller'a T modelinizi ekleyin. | ||
734 | class Controller extends GetController with StateMixin<User>{} | 736 | class Controller extends GetController with StateMixin<User>{} |
735 | ``` | 737 | ``` |
736 | 738 | ||
739 | + | ||
737 | `change()` yöntemi istediğimiz zaman State'i değiştirir. | 740 | `change()` yöntemi istediğimiz zaman State'i değiştirir. |
738 | Sadece verileri ve state'i bu şekilde iletin: | 741 | Sadece verileri ve state'i bu şekilde iletin: |
739 | 742 |
-
Please register or login to post a comment