Flutter 2.0 ile gelen yenilikler
Flutter, Android / iOS için platformlar arası bir mobil geliştirme SDK’sından, aynı kodu Windows, Linux ve macOS’taki bir tarayıcıda yerel olarak çalıştırmanıza izin veren bir araca geçiş yaptı.
Karşımızda Flutter 2.0
3 Mart’ta Google, Fluter 2.0’ın piyasaya sürüldüğü düzenlediği Flutter Engage etkinliğini ile duyurdu. Bu sürüm stabil bir 2.0 sürümüdür ve birçok değişiklik Flutter’ı mobil uygulama geliştirmenin ötesine geçmeye gerçekten hazır hale getirmeyi vaat etmektedir.
Flutter 2.0’nin neden önemli olduğunu anlamanın merkezinde yer alan değişiklik, web geliştirmenin artık resmi olarak kararlı sürümün bir parçası olduğu ve masaüstü desteğinin yakında kararlı kanalda da takip edeceği olmasıdır. Duyuruda Google, Flutter’ın geleceğinin nasıl olacağına dair bir ipucu vermedi fakat büyük şirketlerin mevcut uygulamalarını daha iyi performans için ve geliştiricilerin daha üretken olmasına izin verenlerle değiştirmek için Flutter uygulamaları üzerinde nasıl çalıştığına dair gerçek örnekler verdiler. Örneğin. dünyanın en büyük otomobil üreticisi Toyota şimdi Flutter kullanarak arabalarında bilgi-eğlence sistemini geliştiriyor. Flutter’ın platformlar arası bir SDK olarak ne kadar hızlı geliştiğini gösteren bir başka ilginç duyuru, Canonical’ın Flutter kullanarak yeni Ubuntu yükleyicilerini geliştirmenin yanı sıra masaüstü uygulamaları oluşturmak için varsayılan seçenek olarak Flutter’ı da kullanacaklarını duyurması. Ayrıca, etkinliğin ilerleyen bölümlerinde Ubuntu masaüstünde mükemmel görünen bir Flutter masaüstü uygulaması oluşturmak için kullanacağımız ve yeni Flutter özelliklerinden bazılarını kullanarak Ubuntu’nun Yaru temasının bir Flutter sürümünü de yayınladılar.
Büyük cihazlar için değişiklikler
Duyuruya göre, mobil cihaz olmayan cihazlara daha iyi destek sağlamak için Flutter’da birçok değişiklik meydana geldi. Örneğin, web ve masaüstü uygulamaları için gerekli olan ve şimdiye kadar üçüncü taraf paketler kullanılarak veya bunu kendiniz uygulayarak yapılması gereken bir şeyin bariz bir örneği bir kaydırma çubuğudur (scrollbar). Güncelleme ile beraber, uygulamanıza tam olarak sığabilen, bir kaydırma çubuğunun belirli platformda tam olarak nasıl görünmesi gerektiğine bakan yerleşik bir kaydırma çubuğu var. Ayrıca onu temalandırabilir ve özelleştirebilirsiniz.
Flutter web değişiklikleri
Web flutterda kullanışlıydı fakat performans ve kullanılabilirlik sorunları vardı, bu da hiçbir zaman mobil Flutter kadar iyi hissettirmediği anlamına geliyordu. Flutter 2.0’ın piyasaya sürülmesiyle, özellikle performans söz konusu olduğunda, birçok iyileştirme meydana geldi diyebiliriz. Artık, uygulamanız varsayılan olarak masaüstü web kullanıcıları için CanvasKit kullanarak ve mobil web kullanıcıları için varsayılan HTML oluşturulacaktır. Web uygulamaları oluşturmak için Flutter’ı kullanmayı denediyseniz, köprü (hyperlink) gibi basit bir şeye sahip olmanın pek de sezgisel olmadığını fark etmiş olabilirsiniz. Şimdi en azından, Link sınıfını kullanarak HTML kullanırken yaptığınız gibi biraz daha fazla köprü oluşturabilirsiniz.
Flutter masaüstü değişiklikleri
Performans ve kararlılık oldukça geliştirildi. Web uygulamalarında fare ve klavye ile çalıştırılan daha büyük cihazların genel kullanılabilirliğindeki gelişmeler yayınlandı. Bu da Flutter masaüstü uygulamalarının artık daha kullanışlı olduğu anlamına geliyor. Hala masaüstü uygulamaları için araç eksikliği var ve hala çok sayıda önemli hatalar var, bu nedenle bunu herkese açık dağıtım amaçlı bir sonraki masaüstü uygulaması projenizde şuan için kullanmamaya çalışmak gerek.
Diğer Flutter değişiklikleri
Ayrıca, Flutter ile mobil geliştirmeyi de etkileyen birkaç değişiklik oldu ve bunlardan bazıları; pek çok Flutter geliştiricilerinin istediği bir özellik, Admob reklamları için daha iyi destek sağlamaktı ve artık resmi google_mobile_ads paketine dahil edildi. Bir diğeri otomatik tamamlamadır (auto complete); bunun için artık bir Otomatik Tamamlama widget’ı ve daha özelleştirilebilir bir RawAutocomplete widget’ı var. Web geliştirme ile ilgili bölümde bahsettiğim Link’in eklenmesi, etkileri en çok Flutter web projelerinde çalışanlar tarafından hissedilecek olsa da, aslında tüm platformlar için geçerlidir.
Dart dilinde neler oldu ?
Flutter uygulama geliştirmeyi etkileyen Dart dilinde yapılan değişikliklerin farkında olmak önemlidir. Özellikle, Dart 2.12 ile C dili birlikte çalışabilirlik desteği getirdi ayrıca, kararlı Dart sürümünde null-safety özelliği geldi.
null-safety
Dart’ta yapılan en büyük değişiklik, Google tarafından geliştirilen paketlerin yanı sıra üçüncü taraf paketlerden giderek daha fazla destek alması için sağlam null-safety getirilmesidir. null-safety, derleyici optimizasyonları oluşturur ve çalışma zamanı hatası olasılığını azaltır, bu nedenle şu anda onu desteklemek isteğe bağlı olsa da, en azından uygulamanızı nasıl null-safety hale getireceğinizi anlamaya başlamanız önemlidir.
Genel olarak nasıl çalışıyor ?
Daha önce Kotlin ile çalıştıysanız, Dart’ın null-safety yaklaşımı size biraz tanıdık gelecektir. Aşina olduğunuz tüm türler (String, int, Object, List, kendi sınıflarınız, vb.) artık null olamaz; değerleri asla boş olamaz. Bu, boş değer atanamayan bir dönüş türüne sahip bir işlevin her zaman bir değer döndürmesi gerektiği anlamına gelir, aksi takdirde bir derleme hatası alırsınız ve daha önce bir değer atanan yerel bir değişken olmadığı sürece, her zaman null yapılamayan değişkenleri başlatmanız gerekir. Bir değişkenin null yapılabilir olmasını istiyorsanız, tür adının sonuna bir soru işareti eklemeniz gerekir, örn. bunun gibi bir tamsayı bildirirken:
int? a = 1
Yukarıdaki örnekte olduğu gibi herhangi bir noktada, onu null olarak ayarlayabilirsiniz ve derleyici bunun için kızmaz. Şimdi, null yapılabilir bir değeriniz varsa ve onu null yapılamayan bir değer gerektiren bir şey için kullanırsanız ne olur ona bakalım. Bunu yapmak için boş olmadığını kontrol etmeniz yeterlidir:
void function(int? a) {
if(a != null) {
// a is an int here
}
}
Bir değişkenin var olduğunu ve boş olmadığını 100% kesin olarak biliyorsanız ve eminseniz, sadece ! operatörü kullanmanız yeterlidir:
String guvensizKod(String? s) => s!;
Kaynak: Flutter 2 Engage Etkinliği



