{"id":240,"date":"2023-06-09T09:02:08","date_gmt":"2023-06-09T09:02:08","guid":{"rendered":"https:\/\/cagatayoney.com\/?p=240"},"modified":"2023-06-14T17:17:14","modified_gmt":"2023-06-14T17:17:14","slug":"kullanici-girisi-flutter-kullanarak-olusturulmus-gelismis-bir-login-ekrani","status":"publish","type":"post","link":"https:\/\/cagatayoney.com\/?p=240","title":{"rendered":"Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Merhaba. Bug\u00fcnk\u00fc yaz\u0131mda sizlere bir Login Page tasarlad\u0131m. Bu tasar\u0131mla birlikte Flutter&#8217;da bulunan baz\u0131 Widget&#8217;lara da de\u011finmi\u015f olaca\u011f\u0131z.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"551\" height=\"1024\" src=\"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1-551x1024.png\" alt=\"\" class=\"wp-image-243\" srcset=\"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1-551x1024.png 551w, https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1-161x300.png 161w, https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1-768x1428.png 768w, https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1-826x1536.png 826w, https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1-1102x2048.png 1102w, https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1.png 1440w\" sizes=\"auto, (max-width: 551px) 100vw, 551px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Flutter ile Login Page\" width=\"750\" height=\"422\" src=\"https:\/\/www.youtube.com\/embed\/9ivSo2r_0Ps?start=19&#038;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Projede lib klas\u00f6r\u00fc i\u00e7erisine 3 tane klas\u00f6r olu\u015fturuyorum. Pages, Utilities ve Widgets. Bu \u015fekilde yapmak mecburi de\u011fildir ancak kodun okunabilirli\u011fi a\u00e7\u0131s\u0131ndan b\u00f6lmelere ay\u0131rmak her zaman daha iyi olacakt\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ekran\u0131mda arkada bir g\u00f6rsel bulunuyor. \u00d6n tarafta ise beyaz bir kutu i\u00e7erisinde Text, TextField, Button Widget&#8217;lar\u0131m bulunmakta.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Cagatay0\/7180bddd20d030839cca5d4d7a67a855.js\"><\/script>\n\n\n\n<p class=\"wp-block-paragraph\">Stack Widget&#8217;\u0131 i\u00e7erisine iki adet Widget yerle\u015ftirdim. \u0130lk ba\u015fta yazm\u0131\u015f oldu\u011fum Widget ekran\u0131n arka taraf\u0131nda kalmaktad\u0131r. Oraya bir g\u00f6rsel koyuyorum. LoginContainerWidget() diye tan\u0131mland\u0131rd\u0131\u011f\u0131m Widget ise ortada bulunan beyaz kutunun kendisi.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Cagatay0\/c80071fa5afac441e63d19a1ba27e272.js\"><\/script>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Cagatay0\/a10b4b1db8599c3caeffaea5c279d2ef.js\"><\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Burada telefon boyutunu al\u0131p phoneSize de\u011fi\u015fkenine at\u0131yorum. Center Widget&#8217;\u0131 ile merkeze ortalanacak olan Widget&#8217;a Padding ile birlikte sa\u011f ve sol kenarlardan bo\u015fluk b\u0131rak\u0131yorum. Daha sonra Container Widget&#8217;\u0131m\u0131 \u00e7iziyorum. Geni\u015fli\u011finin ekran\u0131n geni\u015fli\u011fi kadar olmas\u0131n\u0131 istiyorum. Kafa kar\u0131\u015ft\u0131rmamas\u0131 gereken nokta, telefonun geni\u015fli\u011fi kadar bir geni\u015flik veriyorum bu Container&#8217;a ancak sa\u011f ve soldan atm\u0131\u015f oldu\u011fumuz Padding&#8217;i unutmamak laz\u0131m. Container&#8217;\u0131m\u0131 olu\u015fturduktan sonra i\u00e7erisine yerle\u015ftirece\u011fim Widget&#8217;lar\u0131 InsideContainerItemWidget adl\u0131 bir Widget olu\u015fturuyorum ve orada tasarl\u0131yorum.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Cagatay0\/1e091099b45310cb171bd5c9c3e069d3.js\"><\/script>\n\n\n\n<p class=\"wp-block-paragraph\">Yukar\u0131dan a\u015fa\u011f\u0131 bir \u015fekilde Widget&#8217;lar\u0131m\u0131 yerle\u015ftirece\u011fim i\u00e7in Column Widget kullan\u0131yorum. Yan yana olmas\u0131n\u0131 isteseydik Row kullanmam\u0131z gerekirdi. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Column Widget&#8217;\u0131n\u0131n i\u00e7erisinde ilk ba\u015fta Login yaz\u0131s\u0131n\u0131n yazmas\u0131n\u0131 istedi\u011fimiz i\u00e7in LoginTextWidget ad\u0131nda tan\u0131mlad\u0131\u011f\u0131m Widget&#8217;\u0131 burada kulland\u0131m. <\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Cagatay0\/3b3a9aad47f80e3a55987338647d8c7b.js\"><\/script>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcst k\u0131sma yap\u0131\u015f\u0131k olmas\u0131n\u0131 istemedi\u011fim i\u00e7in \u00fcst k\u0131sm\u0131 i\u00e7in bir Padding veriyorum.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Daha sonra TextField Widget&#8217;lar\u0131m\u0131 \u00e7izmem gerekiyor. \u0130ki adet TextField kulland\u0131\u011f\u0131m i\u00e7in bir tane TextFieldWidget ad\u0131nda Widget olu\u015fturuyorum ve bunu parametrelerle farkl\u0131 \u015fekilde \u00e7izmesini sa\u011fl\u0131yorum.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Cagatay0\/8fe615b4388fe7accc14840d9c77393b.js\"><\/script>\n\n\n\n<p class=\"wp-block-paragraph\">Yazm\u0131\u015f oldu\u011fum bu Widget 4 adet parametre almak zorunda. TextField Widget&#8217;\u0131n\u0131 kontrol etmek i\u00e7in controller ve focusNode da koydum ancak bu \u00f6rnekte herhangi bir i\u015flem yapt\u0131rmayaca\u011f\u0131z. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ForgotPasswordWidget&#8217;\u0131m\u0131z bir buton olacak. <\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Cagatay0\/1f41604eec34888132bdc878041e0bfd.js\"><\/script>\n\n\n\n<p class=\"wp-block-paragraph\">Burada yine k\u00f6\u015feleri uyum i\u00e7erisinde olsun diye kenarlardan Padding verdim. Sa\u011f tarafa konumlanmas\u0131n\u0131 istedi\u011fim i\u00e7in de Align Widget&#8217;\u0131 ile centerRight yaparak sa\u011f tarafa merkezlemi\u015f oldum. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GestureDetector Widget&#8217;\u0131 sarmalad\u0131\u011f\u0131 Widget&#8217;lara buton \u00f6zelli\u011fi verir. Ayn\u0131 zamanda InkWell Widget&#8217;\u0131 da ayn\u0131 i\u015flevi yapmaktad\u0131r. Benim buradaki tercihim GestureDetector Widget&#8217;\u0131n\u0131 kullanmak oldu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Cagatay0\/490e26955db48ebad3a9b1d338c4a85b.js\"><\/script>\n\n\n\n<p class=\"wp-block-paragraph\">Burada da Login butonumuzu tasarlad\u0131m. Padding&#8217;lerimi verdim ve GestureDetector Widget&#8217;\u0131 ile olu\u015fturdu\u011fum Container&#8217;\u0131 sarmalad\u0131m buton \u00f6zelli\u011fini verdim. Container Widget&#8217;\u0131n\u0131n decoration k\u0131sm\u0131 ile butonu k\u00f6\u015felerden yuvarlad\u0131m ve gradient bir renk verdim. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">LoginButtonWidget&#8217;\u0131n\u0131n alt sat\u0131r\u0131nda bulunan Spacer Widget&#8217;\u0131 bo\u015fluk atar ve aras\u0131na girdi\u011fi Widget&#8217;lar\u0131n aras\u0131nda bo\u015fluk a\u00e7ar. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/Cagatay0\/f014eb4d1cb744f81ac7484de8ef4d79.js\"><\/script>\n\n\n\n<p class=\"wp-block-paragraph\">SignUp butonumu ise alt s\u0131n\u0131rdan biraz bo\u015fluklu olmas\u0131n\u0131 istedi\u011fim i\u00e7in Padding at\u0131yorum ve ekran\u0131m\u0131 tamaml\u0131yorum.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Genel olarak bu yaz\u0131mda basit bir Login ekran\u0131 tasarlayarak Widget&#8217;lara de\u011finmek istedim. <a href=\"https:\/\/github.com\/Cagatay0\/Flutter\/tree\/main\/login_page\">Kaynak kodlar\u0131na buradan ula\u015fabilirsiniz.<\/a> \u0130yi \u00e7al\u0131\u015fmalar dilerim.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba. Bug\u00fcnk\u00fc yaz\u0131mda sizlere bir Login Page tasarlad\u0131m. Bu tasar\u0131mla birlikte Flutter&#8217;da bulunan baz\u0131 Widget&#8217;lara da de\u011finmi\u015f olaca\u011f\u0131z. Projede lib klas\u00f6r\u00fc i\u00e7erisine 3 tane klas\u00f6r olu\u015fturuyorum. Pages, Utilities ve Widgets. Bu \u015fekilde yapmak mecburi de\u011fildir ancak kodun okunabilirli\u011fi a\u00e7\u0131s\u0131ndan b\u00f6lmelere ay\u0131rmak her zaman daha iyi olacakt\u0131r. Ekran\u0131mda arkada bir g\u00f6rsel [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":243,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[22,7,18,35,23,16,19,17],"class_list":["post-240","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-flutter","tag-crossplatformdevelopment","tag-flutter","tag-flutterdevelopment","tag-flutterlogin","tag-fluttertips","tag-fluttertutorial","tag-mobileappdevelopment","tag-mobiluygulamagelistirmerehberi"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131 - \u00c7a\u011fatay \u00d6ney<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cagatayoney.com\/?p=240\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131 - \u00c7a\u011fatay \u00d6ney\" \/>\n<meta property=\"og:description\" content=\"Merhaba. Bug\u00fcnk\u00fc yaz\u0131mda sizlere bir Login Page tasarlad\u0131m. Bu tasar\u0131mla birlikte Flutter&#8217;da bulunan baz\u0131 Widget&#8217;lara da de\u011finmi\u015f olaca\u011f\u0131z. Projede lib klas\u00f6r\u00fc i\u00e7erisine 3 tane klas\u00f6r olu\u015fturuyorum. Pages, Utilities ve Widgets. Bu \u015fekilde yapmak mecburi de\u011fildir ancak kodun okunabilirli\u011fi a\u00e7\u0131s\u0131ndan b\u00f6lmelere ay\u0131rmak her zaman daha iyi olacakt\u0131r. Ekran\u0131mda arkada bir g\u00f6rsel [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cagatayoney.com\/?p=240\" \/>\n<meta property=\"og:site_name\" content=\"\u00c7a\u011fatay \u00d6ney\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-09T09:02:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-14T17:17:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1-551x1024.png\" \/>\n\t<meta property=\"og:image:width\" content=\"551\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"\u00c7a\u011fatay \u00d6ney\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u00c7a\u011fatay \u00d6ney\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cagatayoney.com\/?p=240#article\",\"isPartOf\":{\"@id\":\"https:\/\/cagatayoney.com\/?p=240\"},\"author\":{\"name\":\"\u00c7a\u011fatay \u00d6ney\",\"@id\":\"https:\/\/cagatayoney.com\/#\/schema\/person\/cc1feeedb5532cdba38ff10ec28b2bd3\"},\"headline\":\"Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131\",\"datePublished\":\"2023-06-09T09:02:08+00:00\",\"dateModified\":\"2023-06-14T17:17:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cagatayoney.com\/?p=240\"},\"wordCount\":559,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/cagatayoney.com\/#\/schema\/person\/cc1feeedb5532cdba38ff10ec28b2bd3\"},\"image\":{\"@id\":\"https:\/\/cagatayoney.com\/?p=240#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1.png\",\"keywords\":[\"CrossPlatformDevelopment\",\"Flutter\",\"FlutterDevelopment\",\"FlutterLogin\",\"FlutterTips\",\"FlutterTutorial\",\"MobileAppDevelopment\",\"MobilUygulamaGeli\u015ftirmeRehberi\"],\"articleSection\":[\"Flutter\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/cagatayoney.com\/?p=240#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cagatayoney.com\/?p=240\",\"url\":\"https:\/\/cagatayoney.com\/?p=240\",\"name\":\"Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131 - \u00c7a\u011fatay \u00d6ney\",\"isPartOf\":{\"@id\":\"https:\/\/cagatayoney.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cagatayoney.com\/?p=240#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cagatayoney.com\/?p=240#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1.png\",\"datePublished\":\"2023-06-09T09:02:08+00:00\",\"dateModified\":\"2023-06-14T17:17:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/cagatayoney.com\/?p=240#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cagatayoney.com\/?p=240\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/cagatayoney.com\/?p=240#primaryimage\",\"url\":\"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1.png\",\"contentUrl\":\"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1.png\",\"width\":1440,\"height\":2677},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cagatayoney.com\/?p=240#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/cagatayoney.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cagatayoney.com\/#website\",\"url\":\"https:\/\/cagatayoney.com\/\",\"name\":\"\u00c7a\u011fatay \u00d6ney\",\"description\":\"Mobile Application Developer\",\"publisher\":{\"@id\":\"https:\/\/cagatayoney.com\/#\/schema\/person\/cc1feeedb5532cdba38ff10ec28b2bd3\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cagatayoney.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/cagatayoney.com\/#\/schema\/person\/cc1feeedb5532cdba38ff10ec28b2bd3\",\"name\":\"\u00c7a\u011fatay \u00d6ney\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/cagatayoney.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/666af91777a6180e269af38e58349c1bd120a784de3b982afddb34547376e57e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/666af91777a6180e269af38e58349c1bd120a784de3b982afddb34547376e57e?s=96&d=mm&r=g\",\"caption\":\"\u00c7a\u011fatay \u00d6ney\"},\"logo\":{\"@id\":\"https:\/\/cagatayoney.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/cagatayoney.com\"],\"url\":\"https:\/\/cagatayoney.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131 - \u00c7a\u011fatay \u00d6ney","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cagatayoney.com\/?p=240","og_locale":"tr_TR","og_type":"article","og_title":"Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131 - \u00c7a\u011fatay \u00d6ney","og_description":"Merhaba. Bug\u00fcnk\u00fc yaz\u0131mda sizlere bir Login Page tasarlad\u0131m. Bu tasar\u0131mla birlikte Flutter&#8217;da bulunan baz\u0131 Widget&#8217;lara da de\u011finmi\u015f olaca\u011f\u0131z. Projede lib klas\u00f6r\u00fc i\u00e7erisine 3 tane klas\u00f6r olu\u015fturuyorum. Pages, Utilities ve Widgets. Bu \u015fekilde yapmak mecburi de\u011fildir ancak kodun okunabilirli\u011fi a\u00e7\u0131s\u0131ndan b\u00f6lmelere ay\u0131rmak her zaman daha iyi olacakt\u0131r. Ekran\u0131mda arkada bir g\u00f6rsel [&hellip;]","og_url":"https:\/\/cagatayoney.com\/?p=240","og_site_name":"\u00c7a\u011fatay \u00d6ney","article_published_time":"2023-06-09T09:02:08+00:00","article_modified_time":"2023-06-14T17:17:14+00:00","og_image":[{"width":551,"height":1024,"url":"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1-551x1024.png","type":"image\/png"}],"author":"\u00c7a\u011fatay \u00d6ney","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"\u00c7a\u011fatay \u00d6ney","Tahmini okuma s\u00fcresi":"3 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cagatayoney.com\/?p=240#article","isPartOf":{"@id":"https:\/\/cagatayoney.com\/?p=240"},"author":{"name":"\u00c7a\u011fatay \u00d6ney","@id":"https:\/\/cagatayoney.com\/#\/schema\/person\/cc1feeedb5532cdba38ff10ec28b2bd3"},"headline":"Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131","datePublished":"2023-06-09T09:02:08+00:00","dateModified":"2023-06-14T17:17:14+00:00","mainEntityOfPage":{"@id":"https:\/\/cagatayoney.com\/?p=240"},"wordCount":559,"commentCount":1,"publisher":{"@id":"https:\/\/cagatayoney.com\/#\/schema\/person\/cc1feeedb5532cdba38ff10ec28b2bd3"},"image":{"@id":"https:\/\/cagatayoney.com\/?p=240#primaryimage"},"thumbnailUrl":"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1.png","keywords":["CrossPlatformDevelopment","Flutter","FlutterDevelopment","FlutterLogin","FlutterTips","FlutterTutorial","MobileAppDevelopment","MobilUygulamaGeli\u015ftirmeRehberi"],"articleSection":["Flutter"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cagatayoney.com\/?p=240#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cagatayoney.com\/?p=240","url":"https:\/\/cagatayoney.com\/?p=240","name":"Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131 - \u00c7a\u011fatay \u00d6ney","isPartOf":{"@id":"https:\/\/cagatayoney.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cagatayoney.com\/?p=240#primaryimage"},"image":{"@id":"https:\/\/cagatayoney.com\/?p=240#primaryimage"},"thumbnailUrl":"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1.png","datePublished":"2023-06-09T09:02:08+00:00","dateModified":"2023-06-14T17:17:14+00:00","breadcrumb":{"@id":"https:\/\/cagatayoney.com\/?p=240#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cagatayoney.com\/?p=240"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/cagatayoney.com\/?p=240#primaryimage","url":"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1.png","contentUrl":"https:\/\/cagatayoney.com\/wp-content\/uploads\/2023\/06\/screenshot-2023-06-08_23.34.57.231-1.png","width":1440,"height":2677},{"@type":"BreadcrumbList","@id":"https:\/\/cagatayoney.com\/?p=240#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/cagatayoney.com\/"},{"@type":"ListItem","position":2,"name":"Kullan\u0131c\u0131 Giri\u015fi: Flutter Kullanarak Olu\u015fturulmu\u015f Geli\u015fmi\u015f Bir Login Ekran\u0131"}]},{"@type":"WebSite","@id":"https:\/\/cagatayoney.com\/#website","url":"https:\/\/cagatayoney.com\/","name":"\u00c7a\u011fatay \u00d6ney","description":"Mobile Application Developer","publisher":{"@id":"https:\/\/cagatayoney.com\/#\/schema\/person\/cc1feeedb5532cdba38ff10ec28b2bd3"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cagatayoney.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/cagatayoney.com\/#\/schema\/person\/cc1feeedb5532cdba38ff10ec28b2bd3","name":"\u00c7a\u011fatay \u00d6ney","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/cagatayoney.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/666af91777a6180e269af38e58349c1bd120a784de3b982afddb34547376e57e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/666af91777a6180e269af38e58349c1bd120a784de3b982afddb34547376e57e?s=96&d=mm&r=g","caption":"\u00c7a\u011fatay \u00d6ney"},"logo":{"@id":"https:\/\/cagatayoney.com\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/cagatayoney.com"],"url":"https:\/\/cagatayoney.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/cagatayoney.com\/index.php?rest_route=\/wp\/v2\/posts\/240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cagatayoney.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cagatayoney.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cagatayoney.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cagatayoney.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=240"}],"version-history":[{"count":2,"href":"https:\/\/cagatayoney.com\/index.php?rest_route=\/wp\/v2\/posts\/240\/revisions"}],"predecessor-version":[{"id":251,"href":"https:\/\/cagatayoney.com\/index.php?rest_route=\/wp\/v2\/posts\/240\/revisions\/251"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cagatayoney.com\/index.php?rest_route=\/wp\/v2\/media\/243"}],"wp:attachment":[{"href":"https:\/\/cagatayoney.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cagatayoney.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cagatayoney.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}