Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, Flutter kullanarak Google Maps uygulaması geliştirme sürecini adım adım gösteren bir eğitim serisidir. Eğitmen, kod yazarak uygulama geliştirme sürecini detaylı olarak anlatmaktadır.
- Eğitim, mevcut Google Maps uygulamasının geliştirilmesi, kart görünümünün şekillendirilmesi, Firebase servisinden gelen JSON verilerinin parse edilmesi ve Cache Network Image paketinin kullanımı ile başlamaktadır. Daha sonra atomik widget oluşturma, bottom sheet kullanımı, servis katmanı oluşturma, kod refactorization ve tema ekleme gibi konular ele alınmaktadır.
- Eğitimde ayrıca PathCard widgetı oluşturma, image yükleme sırasında loading ve error durumlarını yönetme, single child scroll view kullanımı, veri gösterimi için gerekli kod düzenlemeleri ve uygulamanın Google Play Store'a nasıl atılacağı gibi pratik bilgiler de sunulmaktadır. Eğitmen, kendi geliştirdiği HTTP wrapper paketi hakkında da bilgi vermektedir.
- Flutter'da Google Maps Projesi
- Bu içerik, Flutter'da adım adım story serisinin ikincisidir.
- Önceki derste Google Maps ve Firebase servisinden veri çekme işlemi yapılmıştı.
- Bu derste kartların şekillendirilmesi, detay eklenmesi ve detay pop-up açılması gibi işlemler yapılacak.
- 01:22Kodun Düzenlenmesi
- Mevcut kodun daha iyi bir şekilde düzenlenmesi için değişiklikler yapılacak.
- Width değerlerinin daha etkili bir şekilde kullanılması için düzenleme yapılacak.
- Kartın düzenlemesi için kodun düzenlenmesi ve factor kullanılarak düzenleme yapılacak.
- 03:40Servis Verilerinin İşlenmesi
- Servisten gelen response verileri inceleniyor ve detaylar ekrana basılacak.
- JSON verilerinin parsing işlemi için iki yöntem kullanılabilir: JSON to date veya JSON sediation.
- Kartın dışarı çıkartılması ve daha esnek bir yapıyla düzenleme yapılıyor.
- 07:53İmajların Cache Edilmesi
- İmajların uzaktan çağrılması için cache network image paketi kullanılacak.
- Bu paket sayesinde imajların her seferinde download edilmesi yerine cache edilecek.
- Cache network image paketi pubspec.yaml dosyasına ekleniyor.
- 08:32Cash Network Kütüphanesi
- Cash Network kütüphanesi, projede eklenen bir paket olup, kod patlamaması durumunda paketin sorunsuz olduğunu gösterir.
- Projede core bir paket eklenirse, paketin native bağımlılığı olduğundan dolayı projeyi tekrar açmak gerekir.
- Cash Network, tüm projelerde imaj açıldığında yüklenmesini sağlayarak hem resim çekimini hem de veri keşfini optimize eder.
- 09:42PathCard Widget Oluşturma
- PathCard widget'ı, koruman altında view ve view'ın içerisinde widgets oluşturulmasıyla oluşturulur.
- PathCard widget'ı, final string image url ve final string title gibi özelliklere sahiptir.
- Atomik widget oluştururken, title ve photo image cache network özellikleri kullanılır.
- 12:03Cash Network Kullanımı
- Cash Network kütüphanesi, yüklenirken (loading) ve hata durumunda (error) özel widget'lar ekleyebilme özelliğine sahiptir.
- Yüklenirken Center ve CircleProgressIndicator gibi widget'lar kullanılabilir.
- Projede genel olarak kullanılacak bir imaj için, Cash Network imajını import ederek ve özel bir widget oluşturarak daha esnek kullanım sağlanabilir.
- 15:29Flutter'da Fonksiyon Parametreleri
- "Extract" metodu kullanılarak bir fonksiyon dışarıya çıkarılabilir.
- Void callback ile function açmanın farkı, callback dışarıdaki fonksiyonu tetiklemek için kullanılırken, function geriye bir değer döndürür.
- Void callback kullanarak dışarıdaki on press fonksiyonu tetiklenebilir.
- 16:51Bottom Sheet Kullanımı
- Flutter'da bottom sheet, bottom dialog ve model bottom sheet gibi farklı özellikler bulunur.
- Bottom sheet kullanırken context ve bir widget döndüren bir builder fonksiyonu gereklidir.
- Bottom sheet'in on closing özelliği, kapanma durumunda yapılacak işlemler için kullanılır.
- 17:55Bottom Sheet Tasarımı
- Bottom sheet'in tasarımı için widget'ı genellikle dışarıda yazmak daha iyi bir uygulamadır.
- Tasarım içindeki değişikliklerin kalması için bottom sheet'i verme şekli önemlidir.
- Private annotation kullanmak, diğer sınıflardan bu özelliği görmezden gelmenizi sağlar.
- 20:03Bottom Sheet Özellikleri
- Bottom sheet'in arka plan rengi background color özelliği ile ayarlanabilir.
- Shape özelliği kullanılarak bottom sheet'in şekli değiştirilebilir.
- Border radius özelliği ile bottom sheet'in kenarları yuvarlanabilir.
- 24:20Divider Kullanımı
- Bottom sheet'in üst kısmında çentik efekti oluşturmak için divider kullanılır.
- Divider'ın color, thickness ve indent özellikleri ile görünümü ayarlanabilir.
- Page width değeri kullanılarak sayfanın genişliğinin belirli bir yüzdesi alınabilir.
- 27:00Atomik Widget Oluşturma
- Atomik widget'lar oluşturarak kod tekrarını azaltmak mümkündür.
- Atomik widget'lar için media query kullanılarak dinamik değerler alınabilir.
- Final keyword ile dışarıdan alınacak değerler tanımlanabilir.
- 29:24Flutter Tasarım Düzenlemeleri
- Tasarım düzenlemeleri yapılıyor ve indent değerleri ayarlanıyor.
- Cache manager ve image kütüphaneleri kullanılıyor.
- Auto size text widget'i kullanılarak metinlerin otomatik boyutlandırılabilmesi sağlanıyor.
- 31:42Kod Kalitesi ve Performans
- Körü körüne kod yazmanın eleştirilendiği ve daha iyi kodlama pratiklerinin önerildiği belirtiliyor.
- App content'ın statik yerine instance olarak alınması gerektiği vurgulanıyor.
- API servis URL'lerinin doğru şekilde tanımlanması gerektiği gösteriliyor.
- 33:08Tasarım Sorunları ve Çözümleri
- Google Maps view'da verilen detay tasarımı sığmadığı için sorun yaşanıyor.
- Auto size text'in max lines ve min lines özellikleri kullanılarak metin boyutu ayarlanabiliyor.
- Single child scroll view kullanılarak sayfa scroll özelliği ekleniyor.
- 35:18Görüntü Ayarları ve Scroll Sorunları
- Box fit özelliği kullanılarak görüntü boyutu ayarlanabiliyor.
- Single child scroll view'in fizik özelliği never scroll olarak ayarlanarak scroll sorunu çözülüyor.
- Scroll view'lar arasında çakışma sorunu yaşanıyor ve bu sorunun çözümü için farklı yaklaşımlar inceleniyor.
- 38:14Servis Katmanı Oluşturma
- Servis katmanı oluşturuluyor ve Google Firebase servisi ekleniyor.
- HTTP ve JSON paketleri projeye ekleniyor.
- Servis katmanında veri çekme işlemleri yapılıyor ve bu veriler ana modüle aktarılıyor.
- 41:49Kod Temizliği ve Servis Tasarımı
- Konuşmacı, kod temizliği yaparak if terimleri ve casting işlemleri kullanarak response'ları kontrol ediyor.
- Servis güvenliği için interface kullanarak Google Firebase servisini soyutlaştırıyor ve içini doldurulmasını sağlıyor.
- Projede servis katmanını temizlediğini, imajları cashlediğini, data çektiğini ve otomatik widget'ları yazdığını belirtiyor.
- 44:10Hata Ayıklama ve Debugging
- Google Maps modelinde bir hata olduğunu fark ediyor ve debug point koyarak problemi incelemeye başlıyor.
- Firebase endpoint'indeki request'i kontrol ediyor ve veri erişimini ayarlıyor.
- Projeyi son kez çalıştırarak temiz bir proje oluşturmayı amaçlıyor.
- 46:13Tasarım ve Tema Ekleme
- Pancy Flutter sitesinden tasarım ekleyerek temayı alıyor ve material temalardan renk seçiyor.
- İndirilen temayı proje içerisine atıyor ve dosyaların tümünün korunmasını öneriyor.
- Base servis oluşturarak merkezi bir şekilde kontrol sağlıyor.
- 49:46Proje Tamamlama ve Yayına Hazırlık
- Proje tamamlandıktan sonra temayı ve kodu atıyor.
- Android'de tab'a basıldığında görülecek bilgileri ekliyor.
- Store'a atmadan önce logo ve isim gibi gerekli bilgileri ekleyerek projeyi tamamlıyor.
- 53:03Flutter Tema Ayarları
- Appbar kullanıldığında backgroundda mor renk geldiğini gösteriyor.
- Scaffold'a theme verildiğinde bottom bileşenlerin otomatik olarak mor renk aldığını belirtiyor.
- Flutter'un temayı verilen değerlerle otomatik uygulaması şık bir özellik olarak değerlendiriliyor.
- 55:04Proje Test Etme ve İmprovement
- Android ve iOS platformlarında proje test ediliyor.
- Projede bazı kod optimizasyonları yapılması gerektiği belirtiliyor.
- Proje tasarımı ve responsive design açısından istenilen sonuç elde edildiği vurgulanıyor.
- 57:54Git ve Versiyon Kontrol
- Proje için yeni bir branch oluşturulup refactor ve detail değişiklikleri için commit yapılıyor.
- Değişikliklerin master branch'e merge edilmesi ve review süreci anlatılıyor.
- Geliştirme sürecinde mantalite (mantık) ve ne istediğinizi bilmek öneminden bahsediliyor.
- 1:00:13Gelecek Projeler
- HTTP wrapper paketi geliştirildiği ve bu paketle requestlerin tek satırda model verilerek yönetilebileceği belirtiliyor.
- Geliştirilen paketin cash duration özelliği ile request sonuçlarının önbelleğe alınabileceği söyleniyor.
- Paketin yakında sunulacağı ve birlikte geliştirileceği belirtiliyor.