Flutter ­čĺÖ B├╝y├╝meye A├ž─▒k Proje Yap─▒s─▒

Bu yaz─▒mda sizlere projelerinizin geli┼čtirmeye ve b├╝y├╝meye a├ž─▒k olmas─▒ i├žin uygulanmas─▒ gereken kurallardan bahsedece─čim. ├ľncelikle nas─▒l bir klas├Âr yap─▒s─▒ kullan─▒rsak daha ba┼čar─▒l─▒ bir proje geli┼čtirmesi yapabilece─čimiz konusunda ba┼člayaca─č─▒m anlat─▒ma. Sonuna kadar s─▒k─▒lmadan okuman─▒z size ├žok ┼čey katacakt─▒r :)

Bir├žok projede farkl─▒ yap─▒lar kulland─▒m ve en memnun kald─▒─č─▒m klas├Âr yap─▒s─▒n─▒ sizlere anlataca─č─▒m. ├ľncelikle MVC ├╝zerinde konu┼čmak istiyorum. MVC dedi─čimiz ve s─▒kl─▒kla duydu─čumuz bu mimari desen projelerimizde kulland─▒─č─▒m─▒z Model, View ve Controller yap─▒lar─▒m─▒z─▒ birbirinden ay─▒rmakt─▒r k─▒saca.

Modellerimizi, servislerimizi ve aray├╝z kodlar─▒m─▒z─▒ ayr─▒ bir dart dosyas─▒nda ve ayr─▒ klas├Ârlerde tutarsak hata ay─▒klama ve geli┼čtirme i┼člerimizi vakit kaybetmeden ve profesyonelce yapabiliriz. Bu do─črultuda fonksiyon ve widget isimlerinin t├╝m├╝n├╝n ÔÇścamelCaseÔÇÖ (ilk kelimenin k├╝├ž├╝k harfle ba┼člay─▒p di─čerlerinin b├╝y├╝k harfle devam etmesi ├Ârn. functionName ya da homeScreen) olarak kullan─▒lmas─▒, klas├Âr ve dosya isimlerinin ise underscore ( ├Ârn. home_page.dart ) ile ay─▒rarak k├╝├ž├╝k harfle kullan─▒lmas─▒ makbuld├╝r :)

GitHub ├╝zerinde ├Ârnek bir Flutter projesi olu┼čturup kulland─▒─č─▒m dosya ve klas├Âr yap─▒s─▒n─▒ yorumlarla peki┼čtirerek anlatt─▒m.

Yanda g├Ârd├╝─č├╝n├╝z ├╝zere main.dart dosyas─▒n─▒n yan─▒na src klas├Âr├╝ olu┼čturdum. Projenin t├╝m dosyalar─▒ bunun i├žinde. Bunun alt─▒na da config, model, provider, service, ui ve utils adlar─▒nda klas├Ârler olu┼čturdum.

G├Âz├╝n├╝z korkmas─▒n istedi─činiz kadar dosya olu┼čturun, uygulaman─▒zda bir performans d├╝┼č├╝┼č├╝ ya da boyut sorunu yaratmaz :)

┼×imdi burada i├ž i├že olu┼čturdu─čumuz bir s├╝r├╝ dosya var. Burada olu┼čturdu─čum dosyalardaki fonksiyon ve widgetlar─▒ tek bir dosyada da birle┼čtirebilirdik ancak o durumda projemiz tamamen bir spagetti koddan ibaret olurdu , b├╝y├╝yemez ve geli┼čtirilemezdi.

├ľncelikle projede state management olarak Provider kulland─▒m ve dosyalamay─▒ ona g├Âre yapt─▒m. Provider kulland─▒─č─▒m─▒zda ├Ânceki yaz─▒mda da belirtti─čim gibi en ba┼čta ├žal─▒┼čan fonksiyonu MultiProvider ile sarmalay─▒p olu┼čturdu─čumuz providerÔÇÖlar─▒ bunun i├žine ekliyorduk. Bunun d─▒┼č─▒nda MaterialApp() widgetÔÇÖ─▒m─▒zda bir├žok parametre mevcut. T├╝m parametreler doldu─čunda ├Âzellikle b├╝y├╝k bir projede main.dart dosyas─▒ ger├žekten ├žok kar─▒┼č─▒yor. Bunun ├Ân├╝ne ge├žmek i├žin config klas├Âr├╝n├╝n alt─▒na Navigation, Color ve Theme gibi sabit yap─▒lar─▒ olu┼čturdum. Ayr─▒ca yine uygulama i├žinde birden ├žok defa kullanaca─č─▒m─▒z ve sabit olan verileri de Constants ad─▒nda bir klas├Ârde tutuyorum. Bu sabit veriler ├Ârne─čin uygulama i├žindeki renk nesneleri, baz─▒ stringler ve asset isimleri olabilir.

Constantlar de─či┼čmeyecek de─čerlerdir. Dart bize constant kullan─▒m─▒nda bir g├╝zellik yapm─▒┼č. De─čer ismini k├╝├ž├╝k ÔÇśkÔÇÖ harfi ile ba┼člayarak yazarsak projenin t├╝m dosyalar─▒nda ÔÇśkÔÇÖya basarak kolayca eri┼čebiliyoruz.

Bir di─čer ├Âzellik de isimli rota kullanmak. Rotalara isim verip bu sayfalara gitmek b├╝y├╝k kolayl─▒k evet. Peki ya bir servis dosyas─▒nda context olmadan bir sayfa a├žabilir miyiz? Normalde a├žmak imkans─▒z ancak bir NavigationService yazarak bunu m├╝mk├╝n hale getirebiliriz! Yine MaterialApp parametrelerinde bulunan onGenerateRoute fonksiyonuna biraz m├╝dahale ediyoruz. GitHub ├╝zerinde payla┼čt─▒─č─▒m projede config/navigation/navigation_service.dart ve config/navigation/navigator_route_service.dart dosyalar─▒n─▒ inceleyebilirsiniz. A┼ča─č─▒daki kod ├Ârne─činde MaterialAppÔÇÖe NavigationServiceÔÇÖimizi ekliyoruz.

Herhangi bir sayfay─▒ a├žmak i├žin de bu servisi a┼ča─č─▒daki gibi context olmadan kullanabiliriz.

S├Âz├╝n ├Âz├╝ karmakar─▒┼č─▒k yaz─▒lm─▒┼č bir projeyi geli┼čtirmek ├živi dolu bir kaptaki kar─▒┼č─▒k ├živileri tek tek ay─▒rmaya benzer. Projede geli┼čtirmek istedi─činiz yeri ararken birden bir s─▒k─▒nt─▒ gelir ve t├╝m projeyi size b─▒kt─▒rarak yapt─▒r─▒r. L├╝tfen yazd─▒─č─▒m ┼čeyleri projenizde uygulayarak geli┼čtirme yapmaya ├žal─▒┼č─▒n. Temiz kod g├Ârmek ger├žekten motivasyon ve ┼čevk vererek ├žal─▒┼čma iste─činizi artt─▒r─▒r.

Yaz─▒lar─▒ma zaman bulduk├ža devam ediyorum. Umar─▒m yazd─▒klar─▒m i┼činize yaram─▒┼čt─▒r. Konu hakk─▒ndaki herhangi bir sorunuz olursa hi├ž ├žekinmeden bana ula┼čabilirsiniz. Elimden geldi─či kadar─▒yla yard─▒mc─▒ olmaktan mutluluk duyar─▒m. FlutterÔÇÖ─▒ ├Â─črendi─čim ve ├žok sevdi─čim Emre ALTUNB─░LEK ve Veli BACIK hocalar─▒ma sayg─▒lar─▒mla..

Bilgi payla┼čt─▒k├ža ├žo─čal─▒r. Sa─čl─▒kl─▒ g├╝nleriniz olsunÔÇŽ

Flutter Developer with ­čĺÖ

Flutter Developer with ­čĺÖ