Flutter ile Mobil Uygulama Geliştirme: Etkili Sorun Giderme Kontrol Listesi
Giriş
Flutter, tek bir kod tabanıyla hem Android hem de iOS uygulamaları geliştirmeyi mümkün kılan güçlü bir çerçevedir. Ancak geliştirme sürecinde çeşitli teknik sorunlarla karşılaşabilirsiniz. Bu makalede, Flutter ile mobil uygulama geliştirirken sık rastlanan problemleri hızlıca tespit edip çözmenize yardımcı olacak uygulamalı ve sistematik bir sorun giderme kontrol listesi sunacağım.
Flutter Sorun Giderme Kontrol Listesi
Aşağıdaki liste, Flutter projelerinde sık görülen sorunları ve etkili çözüm önerilerini içerir. Adımları sistematik uygulayarak sorunları hızlıca aşabilirsiniz.
- Ortam Kurulumunu Doğrulayın
-
flutter doctorkomutunu çalıştırarak Flutter SDK, Android/iOS araçları ve bağlı cihazların durumunu kontrol edin.- Eksik veya hatalı bileşenler varsa, ilgili SDK ve araçları yükleyip güncelleyin.
-
- Bağımlılıkları Güncel Tutun
-
pubspec.yamldosyasındaki paket sürümlerini kontrol edin.flutter pub getile paketleri indirin,flutter pub upgradeile güncellemeleri uygulayın.
-
- Derleme ve Çalışma Zamanı Hatalarını İnceleyin
-
- Hata mesajlarını dikkatle okuyun ve Flutter dokümantasyonu ile hata kayıtlarında benzer sorunları araştırın.
- Özellikle null safety, tip uyumsuzlukları ve widget hatalarına odaklanın.
-
- Hot Reload ve Hot Restart Özelliklerini Kullanın
-
- UI değişikliklerini hızlı görmek için
hot reloadkullanın. - State ile ilgili sorunlarda
hot restartyaparak uygulamayı tamamen yeniden başlatın.
- UI değişikliklerini hızlı görmek için
-
- Performans Analizi Yapın
-
Flutter DevToolsile uygulamanızın performansını izleyin.- Yavaş çalışan widget’ları ve gereksiz rebuild işlemlerini tespit edin.
-
- Platforma Özel Sorunları Kontrol Edin
-
- Android ve iOS cihazlarda ayrı ayrı test yapın.
- Platforma özgü izinler, konfigürasyonlar ve paket uyumluluklarını doğrulayın.
-
- Log ve Debug Çıktılarını Detaylı İnceleyin
-
flutter run --verbosekomutuyla ayrıntılı log alın.- Android için Logcat, iOS için Xcode konsolunu kullanarak hata mesajlarını takip edin.
-
- State Yönetimini Doğru Kullandığınızdan Emin Olun
-
- Provider, Bloc, Riverpod gibi state yönetimi çözümlerini doğru yapılandırın.
- Yanlış state yönetimi UI sorunlarına ve performans düşüşlerine yol açabilir.
-
- Uygulama İzinlerini Kontrol Edin
-
AndroidManifest.xmlveInfo.plistdosyalarında gerekli izinlerin tanımlı olduğundan emin olun.- Eksik izinler uygulamanın beklenmedik davranmasına sebep olabilir.
-
- Cache ve Build Dosyalarını Temizleyin
-
flutter cleankomutunu kullanarak proje önbelleğini temizleyin.- Projeyi yeniden derleyerek eski veya bozuk dosyaların etkisini ortadan kaldırın.
-
Örnek: Basit Sorun Giderme Akış Diyagramı
Aşağıda, Flutter uygulamanızda karşılaştığınız bir hatayı çözmek için izleyebileceğiniz temel akış diyagramı örneği bulunmaktadır:
Başla
|
v
flutter doctor çalıştır
|
+-- Eksik veya hata var mı? -- Evet --> Gerekli kurulumları yap --> Başla
|
Hayır
|
v
Bağımlılıkları güncelle
|
v
Uygulamayı derle
|
+-- Derleme hatası var mı? -- Evet --> Hata mesajını incele ve düzelt --> Başla
|
Hayır
|
v
Uygulamayı çalıştır
|
+-- Runtime(Çalışma zamanı) hatası var mı? -- Evet --> Logları incele ve düzelt --> Başla
|
Hayır
|
v
Performans sorunları var mı?
|
+-- Evet --> DevTools ile analiz et ve optimize et --> Başla
|
Hayır
|
v
Sorun giderme tamamlandı
Pratik Kod Örneği: Basit Hot Reload Kullanımı
Flutter geliştirme sırasında sık kullanılan hot reload özelliği, UI değişikliklerini hızlıca görmenizi sağlar. Aşağıda basit bir Flutter widget’ı ve hot reload ile değişiklik yapma örneği verilmiştir:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Hot Reload Örneği')),
body: Center(
child: Text('Merhaba Flutter!'),
),
),
);
}
}
Bu kodu çalıştırdıktan sonra, 'Merhaba Flutter!' metnini değiştirdiğinizde, hot reload ile uygulamayı yeniden başlatmadan anında görebilirsiniz.
Sonuç
Flutter ile mobil uygulama geliştirirken sorunları sistematik şekilde ele almak, geliştirme sürecini hızlandırır ve daha stabil uygulamalar ortaya çıkarır. Yukarıdaki kontrol listesi ve akış diyagramı, problemleri tanımlamanız ve çözmeniz için pratik bir rehber sağlar. Düzenli olarak flutter doctor komutunu kullanmak, bağımlılıkları güncel tutmak ve performans analiz araçlarını gözlemlemek, kaliteli uygulamalar geliştirmenize yardımcı olacaktır.
Flutter vs Native: Tartışma artık bitsin :)
“Flutter mı native mi?” sorusunu son yıllarda çok sık duyuyorum. Açık konuşayım, bu cümle bana artık biraz eski geliyor. Çünkü Flutter’ı gerçekten kullanmış, production uygulama çıkarmış biri için bu tartışma çoktan başka bir yere evrildi.
Hâlâ “flutter mı seçelim native mi?” noktasında takılıyorsak, genelde konunun tamamına bakılmıyor demektir. 2025’e geldiğimizde bu tartışma teknik bir tartışma olmaktan çıktı. Daha çok karar verme biçimiyle, projeye nasıl yaklaşıldığıyla ilgili bir mesele hâline geldi.
Şunu baştan netleştirelim. Zaten Flutter native çalışır. Dart kodu AOT olarak derlenir. Android’de native binary çıkar, iOS’ta native binary çıkar. UI WebView üzerinden dönmez, JavaScript yoktur. Flutter kendi render engine’i ile ekranı doğrudan GPU’ya çizer. Yani Flutter web değildir, hybrid değildir, React Native hiç değildir. Bu kısım artık tartışmaya açık değil.

Peki o zaman neden hâlâ “Native daha performanslı” lafı dönüp duruyor?
Bence burada asıl karışan şey performansla kontrolün aynı kefeye konması. Oysa bunlar farklı şeyler. Ve kafa karışıklığı tam da buradan çıkıyor.
UI tarafında konuşalım. Animasyonlar, scroll’lar, ekran geçişleri… Düzgün yazılmış bir Flutter uygulamasıyla native bir uygulama arasında, kullanıcıya hissettiren bir performans farkı yok. Hatta bazı animasyon ağırlıklı ekranlarda Flutter daha tutarlı bile olabiliyor. Bunun sebebi tek bir render pipeline’a sahip olması. O yüzden bugün hala UI performansı üzerinden Flutter’ı eleştirmek bana çok anlamlı gelmiyor.
Asıl fark, işin platforma ne kadar yakın çalıştığı noktada başlıyor.
Native geliştirirken işletim sisteminin içindesin. Lifecycle senin elinde, background servisler senin kontrolünde, sensörler, Bluetooth, kamera gibi konularda doğrudan söz sahibisin. Flutter’da ise işler biraz daha katmanlı ilerliyor. Dart tarafındasın ve native tarafa geçerken platform channel kullanıyorsun. Bu kötü bir şey değil ama şu gerçeği de kabul etmek gerekiyor: Flutter native’e çok yakındır ama native kadar “içeride” değildir.
Bu fark her projede kendini göstermez. Hatta birçok projede hiç hissetmezsin bile. Ama bazı projelerde net şekilde ortaya çıkar. Özellikle yoğun background işlem yapan, sürekli sensör okuyan, OS lifecycle’ına çok hassas çalışan uygulamalarda Flutter tek başına yetmemeye başlar. O noktada genelde Flutter + native plugin yazma yoluna girilir. Bu yanlış bir yaklaşım değildir ama artık saf Flutter’da olmadığını kabul etmiş olursun.
Bu arada şunu da net söylemek istiyorum. Flutter projelerinde yaşanan performans problemlerinin büyük kısmı Flutter’dan kaynaklanmaz. Yanlış state yönetimi, gereksiz rebuild’ler, karmaşık widget ağaçları, kötü mimari… Bunlar varsa native yazsan da aynı problemleri yaşarsın. Flutter bu noktada sadece günah keçisi olur.
Benim gözlemim şu: Bu tartışma yıllardır bitmiyor çünkü genelde teknoloji seçimi, düzgün flutter yapısının kurulması proje başlamadan önce değil, sorunlar çıktıktan sonra sorgulanıyor. Proje yavaşlıyor, ekip zorlanıyor, bakım maliyeti artıyor… Sonra dönüp “Flutter mı hatalıydı?” deniyor. Oysa çoğu zaman sorun yanlış başlangıç kararlarında oluyor.
Kendi tecrübemden söyleyeyim. Flutter’ı kullandığım ve “iyi ki Flutter seçmişiz” dediğim bir sürü proje oldu. Hatta hiç pişman olmadım bu seçimden. Sadece ilk flutter a geçtiğimiz zamanlarda biz de bazı hatalar yaptık 🙂 Bunları çabuk farkedip düzelttik ve ustalaştık bu konuda.
Hızlı MVP çıkarmamız gereken, tek kod tabanıyla iOS ve Android’e aynı anda gitmek istediğimiz, UI ve iterasyon hızının kritik olduğu projelerde Flutter gerçekten çok güçlüydü. Bir projede, başladıktan sonra uzun bir süreden sonra ilk defa flutter kütüphanelerinin yetmediği bir yere denk geldim. Onda da kendi plugin imizi yazıp konuyu çözdük. Yani yine bir sorun yaşamadık.
Burada iş sadece teknik değil, ekip yapısıyla da ilgili. Küçük bir ekip, hızlı hareket etmesi gereken bir ürün ve sınırlı bütçe varsa Flutter ciddi avantaj sağlar. Ama büyük ekipler, uzun vadeli kurumsal projeler, çok sık geliştirici değişimi olan yapılar söz konusuysa, teknoloji seçiminin bakım maliyetine etkisi çok daha belirgin hâle gelir.
Yanlış teknoloji seçiminin faturası genelde hemen çıkmaz. İlk aylar her şey yolunda gider. Ama 6 ay sonra, “buraya dokunmayalım”, “şu kısmı bozmayalım”, “bunu değiştirmek riskli” gibi cümleler artmaya başlar. İşte o noktada mesele Flutter mı Native mi olmaktan çıkar; doğru karar verilip verilmediğine gelir.
O yüzden bana göre “Flutter mı Native mi daha hızlı?” sorusu artık yanlış soru. Asıl soru şu olmalı: Bu proje işletim sistemine ne kadar yakın olmak zorunda? Eğer cevap “çok yakın” ise native daha doğru bir tercih olur. Eğer cevap “çok da gerek yok” ise Flutter gayet güçlü bir çözümdür.
Toparlarsam, Flutter vs native sorusu yerine asıl soru işletim sistemine yakınlığı ve ne kadar çok os tabanlı iş yaptığıdır. Seçim bence buna göre yapılmalıdır. Çok derin bir şekilde os ile çalışıyor ve kütüphaneler performans sorunu çıkaracak bir durum var ise ben anca o zaman native seçerim. Yoksa bugün geldiğimiz noktada hem performans, hem maaliyet hem de kodun okunabilirliği açısından kesinlikle flutter ile devam etmeyi öneririm. Ancak tekrar çok önemli bir notu ekleyerek bitireyim. Düzgün bir flutter yapısı kurmzsanız olmaz. O zaman da flutter ı suçlamak yerine yapıya kuranların ne yaptığına odaklanmak gerekir. Yani herkes bugün flutter kolay ben yaparım diye ortaya çıkabiliyor ama ne kadar düzgün bir yapı kurduğu ve performansa dikkat edip etmediği çok tartışılır. Keşke native yapsaydık dediğiniz bir noktaya gelebilirsiniz dikkatli ve düzgün bir yapı kurulmaz ise.
Flutter ile tek kod ve tüm platformlar
Flutter, Google tarafından geliştirilen, iOS, Android, Web ve Desktop için yüksek performanslı, tüketicinin beklentilerini karşılayan uygulamalar oluşturmayı hedefleyen bir mobil uygulama frameworkü olarak bilinir. Ancak Flutter’ın avantajları sadece bunlarla sınırlı değil. İşte Flutter’ı benzersiz kılan birkaç özellik:
1. Tek Kod Tabanı
Flutter, geliştiricilere iOS, Android, Web ve Desktop için uygulamaları tek bir kod tabanıyla yazma olanağı sunar. Bu, geliştirme sürecini hızlandırır ve işleri kolaylaştırır. Maliyetden tasarruf imkanı sağlar. 4 platforma da geliştirme yapacaksanız tek bir developer ile de işlerinizi yapmanız mümkün hale gelir.
Örnek bir “Merhaba Dünya” uygulaması:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Merhaba Dünya',
home: Scaffold(
appBar: AppBar(
title: Text('Merhaba Dünya'),
),
body: Center(
child: Text('Merhaba Dünya!'),
),
),
);
}
}
2. Hot Reload
Flutter’ın “hot reload” özelliği, geliştiricilerin yapılan değişiklikleri anında görmesini sağlar. Bu, hataların hızlıca bulunmasını ve düzeltilmesini sağlar ve geliştirme sürecini önemli ölçüde hızlandırır.
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Hot Reload Örneği',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Hot Reload Örneği"),
),
body: Center(
child: Text("Değişiklikleri anında görün!"),
),
);
}
}
Bu kodu çalıştırın ve "Değişiklikleri anında görün!" metnini değiştirin. Hot Reload özelliği sayesinde uygulamanın durumunu kaybetmeden değişikliği hemen görebilirsiniz.
3. Performans
Flutter, Dart dilinde yazılmıştır ve Dart, Just-In-Time ve Ahead-Of-Time derleme yeteneklerine sahiptir. Bu özellikler, uygulamanın başlangıç süresini hızlandırır ve performansını iyileştirir.
4. Zengin Widget Kütüphanesi
Flutter, kullanıcıların modern ve çekici bir arayüz oluşturmasını sağlayan bir dizi widget sunar. Bu widget’lar hızlı ve kolay bir şekilde uygulamaya entegre edilebilir.
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Zengin Widgetler',
home: Scaffold(
appBar: AppBar(
title: Text('Zengin Widgetler'),
),
body: Center(
child: RaisedButton(
onPressed: () {},
child: Text('Bir Buton Widgeti'),
),
),
),
);
}
}
Bu kod parçası, basit bir buton widget’ini kullanarak kullanıcıya etkileşimli bir öğe sunar.
Flutter, bu gibi özellikleri sayesinde uygulama geliştirmede yeni bir çağ açmaktadır. Tek kod tabanı, hot reload, yüksek performans ve zengin widget kütüphanesi gibi özellikler, geliştiricilere daha hızlı ve daha etkili uygulamalar oluşturma imkanı sağlar. Üstelik bunu tüm platformlara export yapabilme özelliği ile birleştirerek bize zaman kazandırır. Sadece zaman değil ayrıca tek kod sayesinde ortak bir kalite yakalanmış olur. Tekrar eden kodlar azalır. Tabi ki tek kod ortamında kodunuz yine kaliteli olmak zorunda. Yazdığını flutter uygulamasını kötü yazarsanız sonuç tüm platformlarda kötü olacaktır. Bu yüzden işe başlamadan önce iyi araştırmak, örnekleri incelemek ve gerekirse eğitim almak önemlidir. Bir de şuna deyinmeden geçmemek lazım. Flutter bir client geliştirme aracı. Yani siz kapsamlı bir iş yapıyorsanız sağlam bir backend e de ihtiyaç duyacaksınız. Bunun için ayrı bir detaylı backend makalesi yazacağım.

Flutter’ın son gelişmelerini takip etmek ve tüm bu eşsiz özelliklerini keşfetmek için https://flutter.dev sitesini ziyaret edebilirsiniz. Nasıl kurulur, kullanılır ve son stabil sürümleri nelerdir https://docs.flutter.dev adresinde mevcut. Her stabil sürüm upgrade i ile çok daha iyi hale gelen flutter ı siz de öğrenebilir ve projelerinizde kullanabilirsiniz.
Flutter ile herşey daha kolay!
Herkese merhaba,
Uzun zamandır bir yazı paylaşmadığımı farkederek genel olarak bir paylaşım yapmak istedim.
Biliyorsunuz eskiden yaptığım paylaşımlarda ios da swift , android de ise java ve kotlin kullanarak native mobil uygulama geliştirme yaptığımızdan ve flutter a geçtiğimizden bahsetmiştim.
Bu serüven devam ediyor ve yeni yapılan uygulamaları flutter da yapıyoruz. Ancak eskiden gelen bazı uygulamalar hala native swift ve java,kotlin de devam ediyor. Büyük uygulamaları flutter a geçirmek kolay değil tabiki ancak sıfırdan yazılan uygulamalarda flutter ın kolaylıklarını çok aramaya başladık.
Son 3 senedir flutter ile uğraştığımızı düşünürsek oldukça deneyimimiz oldu bu konuda. İlk başlarda eski yönteme göre alışması zor olsada bir kere alıştığınızda artık herşey daha hızlı ve kolay oluyor. Hele birde hazırladığınız bir çatı var ise bu iş artık her projede daha kolay hala geliyor.
Flutter ve Getx kütühanesi de bu işi beraber daha da hızlandırıyor.
Sizler için flutter getx örneği hazırladım. Bu örnekde flutter ı çalıştırmayı ve biraz ön bilgisi olanların anlayabileceği sade bir yapı mevcut. İçerisinde bir başlangıç seti mevcut. Nasıl bir çatı kurmalıyız? Hangi kütüphaneleri kullanmalıyız hepsi mevcut.
https://github.com/balabanferhat/FlutterGetXWithNavigation
Ayrıca sayfamdaki diğer flutter örneklerini de inceleyebilirsiniz.
Flutter 2.0’a geçiyoruz…
Herkese merhaba,
Bu sene mart ayının başında Flutter için major bir versiyon yayınlandı. Takip edenler hemen görmüştür ama etmeyenler için bu ne anlama geliyor biraz bahsedelim.
Google, Flutter ile hedeflediği tüm cihazlarda çalışabilme özelliğini ve arkada çalışan dart dilini sürekli geliştiriyor. Android ve ios cihazlarda çalışan native uygulama çıktısı üreten bu altyapıyı uzun zamandır deniyoruz ve store a çıkan başarılı uygulamalar oldu. Performansından oldukça memnun kaldık. Bir native mobil uygulama geliştiricisi olarak yani uzun yıllar ios da objective-c ve swiftt dilinde , android de ise java ve kotlin de kod geliştiren biri olarak, memnun kalmamız bence çok şey ifade ediyor. Flutter ı kullandıkça pratikliğe alışıyorsunuz ve her platform için ayrı kod geliştirme işine geri dönmek istemiyorsunuz. Ortama ısındıkça çıkabilecek hataları daha kolay öngörüyor ve gideriyorsunuz.
Flutter 2.0 da , iOS, Android, Windows, macOS, ve Linux; ve bunun yanında Chrome, Firefox, Safari, ve Edge de çalışan web deneyimi bizlere sunuluyor. Flutter ayrıca araç içi yazılımlarda, TV lerde, ve akıllı ev cihazlarında da kullanılabiliyor.
Şimdi büyük sayılabilecek bir çalışan projeyi flutter 1.22.6 dan flutter 2.0 a geçirmeye çalışacağız.
Flutter kullananlar projenin kullandığı kütüphaneleri görünce büyüklüğünü tahmin edebilir.
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.0
curved_navigation_bar: ^0.3.3
google_fonts: ^1.1.0
flutter_svg: ^0.19.1
url_launcher: ^5.5.3
get: ^3.25.4
pull_to_refresh: ^1.6.2
scroll_to_index: ^1.0.6
http: ^0.12.2
hive: ^1.4.4+1
video_player: ^1.0.1
get_storage: ^1.4.0
auto_size_text:
flutter_rating_bar:
html_unescape: 1.0.1+3
quiver: ^2.1.3
image_picker: ^0.6.7+12
dio: ^3.0.10
progress_indicators: ^0.1.5
random_string: ^2.1.0
scrollable_positioned_list:
flutter_keyboard_visibility: ^3.2.2
credit_card: 0.1.6
visibility_detector: ^0.1.5
flutter_typeahead:
flag: ^3.0.5
syncfusion_flutter_charts: ^18.3.42
charts_flutter: ^0.9.0
hive_flutter: ^0.3.1
#connectivity: ^0.4.9+3 ########### not used anymore , done in restconnecttor- Ferhat
syncfusion_flutter_datepicker: ^18.3.51-beta
syncfusion_localizations: ^18.3.44
syncfusion_flutter_sliders: ^18.3.44-beta
intl: ^0.16.1
webview_flutter: ^1.0.5
rflutter_alert: ^1.1.0
flutter_datetime_picker: ^1.4.0
image_cropper: ^1.3.1
simple_tooltip: ^0.1.16
dio_http_cache: ^0.2.11
cached_network_image: ^2.3.3
flutter_staggered_grid_view: “^0.3.2”
readmore: ^1.0.1
camera: ^0.5.8+17
filesize: ^1.0.4
video_compress: ^2.1.1
timer_count_down: ^1.0.4+1
syncfusion_flutter_gauges: ^18.4.31
modal_progress_hud: ^0.1.3
modal_bottom_sheet: ^1.0.0+1
flutter_html: ^1.2.0
agora_rtc_engine: ^3.1.3
agora_rtm: ^0.9.11
random_color: ^1.0.5
font_awesome_flutter: 8.8.1
#wakelock: ^0.2.0+1
#yoyo_player: ^0.1.0 #video player içindeki eski
video_thumbnail: ^0.2.5+1
share: ^0.6.5+4
permission_handler: ^5.0.1
flutter_facebook_auth: ^2.0.1
google_sign_in: 4.5.1
in_app_purchase: ^0.3.5+1
apple_sign_in: ^0.1.0
flutter_auth_buttons: ^0.6.0
device_info: ^0.4.1+4
crypto: ^2.1.5
flutter_cache_manager: ^1.4.2
package_info: ^0.4.3+4
swipedetector: ^1.2.0
onesignal_flutter: ^2.0.0
flutter_inappwebview: ^4.0.0+4
dev_dependencies:
flutter_test:
sdk: flutter
flutter_launcher_icons: “^0.8.0”
flutter channel stable
ile stable channel a geçebillirsiniz değilseniz. Flutter 2.0 dev branch den stable a aktarıldı.
flutter upgrade
komutu ile stable channel da iken upgrade başlatarak işlemin bitmesini bekliyoruz.
Upgrade tamamlanınca bize şu şekilde rapor veriyor
Flutter 2.0.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision b1395592de (5 days ago) • 2021-04-01 14:25:01 -0700
Engine • revision 2dce47073a
Tools • Dart 2.12.2
Running flutter doctor…
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.4, on Mac OS X 10.15.7 19H2 darwin-x64, locale en-TR)
[✓] Android toolchain – develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode – develop for iOS and macOS
[✓] Chrome – develop for the web
[✓] Android Studio (version 4.1)
[✓] VS Code (version 1.55.0)
[✓] Connected device (2 available)
Şu ana kadar herşey yolunda gibi ama ufak projelerde geçerken bazı paketlerin uyumsuz olduğunu görüp yerine başka paketler bulmak zorunda kaldığımızdan bu projede başımıza gelebilecekleri azçok tahmin edebiliyorum.
Paketleri otomatik upgrade yapabilirmiyiz deniyoruz.
flutter pub upgrade
Resolving dependencies…
Because abc_app depends on flutter_localizations any from sdk which depends on intl 0.17.0, intl 0.17.0 is required.
So, because abc_app depends on intl ^0.16.1, version solving failed.
pub finished with exit code 1
Tabiki işe yaramadı. Otomatik geçişler genelde işe yaramazlar ve uğraşmak zorunda kalırsınız.
Projede internilization kütüphanesi intl 0.16.1 i kulllanıyormuş ilk patlayan yer burası oldu.
intl: ^0.16.1
0.17.0 en azından olmalı diyor. Değiştirip kaydediyoruz.
Sonra tekrar pub upgrade yapınca hatamız değişiyor.
Because abc_app depends on charts_flutter ^0.9.0 which depends on intl >=0.15.2 <0.17.0, intl >=0.15.2 <0.17.0 is required.
So, because abc_app depends on intl ^0.17.0, version solving failed.
Burada bize charts_flutter 0.17.0 ı beğenmedi daha düşük kullanmamız gerektiğini söylüyor. Tabiki öncekine dönmeyeceğiz burada charts_fluttter son versiyonu neymiş ona bakacağız.
Biz
charts_flutter: ^0.9.0
kullanıyorduk. 0.10.0 çıkmış ona geçirip tekrar deniyoruz.
Ve bi anda pub upgrade bize bir rapor sunuyor.
Resolving dependencies…
> _fe_analyzer_shared 14.0.0 (was 12.0.0) (19.0.0 available)
> agora_rtc_engine 3.3.2 (was 3.2.1)
agora_rtm 0.9.14
> analyzer 0.41.2 (was 0.40.6) (1.3.0 available)
apple_sign_in 0.1.0
archive 2.0.13 (3.1.2 available)
args 1.6.0 (2.0.0 available)
> async 2.5.0 (was 2.5.0-nullsafety.1)
auto_size_text 2.1.0
> boolean_selector 2.1.0 (was 2.1.0-nullsafety.1)
> build 1.6.2 (was 1.5.1) (2.0.0 available)
> build_config 0.4.7 (was 0.4.3)
cached_network_image 2.3.3 (3.0.0 available)
camera 0.5.8+17 (0.8.1 available)
> characters 1.1.0 (was 1.1.0-nullsafety.3)
> charcode 1.2.0 (was 1.2.0-nullsafety.1)
> charts_common 0.10.0 (was 0.9.0)
> charts_flutter 0.10.0 (was 0.9.0)
> checked_yaml 1.0.4 (was 1.0.2) (2.0.1 available)
chewie 0.12.2 (1.0.0 available)
chewie_audio 1.1.2 (1.2.0 available)
> cli_util 0.3.0 (was 0.2.0)
> clock 1.1.0 (was 1.1.0-nullsafety.1)
> collection 1.15.0 (was 1.15.0-nullsafety.3)
convert 2.1.1 (3.0.0 available)
credit_card 0.1.6 (0.1.8 available)
crypto 2.1.5 (3.0.1 available)
> css_colors 1.1.0 (was 1.0.2)
csslib 0.16.2 (0.17.0 available)
> cupertino_icons 1.0.2 (was 1.0.0)
> curved_navigation_bar 0.3.7 (was 0.3.4)
> dart_style 1.3.12 (was 1.3.10) (2.0.0 available)
device_info 0.4.2+10 (2.0.0 available)
device_info_platform_interface 1.0.1 (2.0.1 available)
dio 3.0.10 (4.0.0 available)
dio_http_cache 0.2.11
> fake_async 1.2.0 (was 1.2.0-nullsafety.1)
> ffi 1.0.0 (was 0.1.3)
> file 6.1.0 (was 5.2.1)
filesize 1.0.4
> flag 3.2.2 (was 3.1.0)
flutter 0.0.0 from sdk flutter
flutter_auth_buttons 0.6.0 (discontinued)
flutter_blurhash 0.5.0 (0.6.0 available)
flutter_cache_manager 1.4.2 (3.0.1 available)
> flutter_datetime_picker 1.5.0 (was 1.4.0)
> flutter_facebook_auth 2.0.2+1 (was 2.0.1) (3.3.2 available)
flutter_facebook_auth_platform_interface 1.0.1 (2.4.0 available)
flutter_facebook_auth_web 1.0.6 (2.4.1 available)
flutter_html 1.2.0 (1.3.0 available)
flutter_inappwebview 4.0.0+4 (5.3.1+1 available)
> flutter_keyboard_visibility 3.3.0 (was 3.2.2) (5.0.0 available)
flutter_launcher_icons 0.8.1 (0.9.0 available)
flutter_layout_grid 0.10.5 (1.0.1 available)
flutter_localizations 0.0.0 from sdk flutter
flutter_plugin_android_lifecycle 1.0.11 (2.0.1 available)
> flutter_rating_bar 4.0.0 (was 3.0.1+1)
> flutter_staggered_grid_view 0.3.4 (was 0.3.2)
> flutter_svg 0.19.3 (was 0.19.1)
flutter_test 0.0.0 from sdk flutter
flutter_typeahead 1.8.8 (3.1.1 available)
flutter_web_plugins 0.0.0 from sdk flutter
font_awesome_flutter 8.8.1 (9.0.0 available)
> get 3.26.0 (was 3.25.4) (4.1.3 available)
get_storage 1.4.0 (2.0.2 available)
> glob 2.0.1 (was 1.2.0)
> google_fonts 1.1.2 (was 1.1.0) (2.0.0 available)
google_sign_in 4.5.1 (5.0.1 available)
google_sign_in_platform_interface 1.1.2 (2.0.1 available)
google_sign_in_web 0.9.2 (0.10.0 available)
hive 1.4.4+1 (2.0.2 available)
hive_flutter 0.3.1 (1.0.0 available)
> html 0.14.0+4 (was 0.14.0+3) (0.15.0 available)
html_unescape 1.0.1+3 (2.0.0 available)
http 0.12.2 (0.13.1 available)
http_parser 3.1.4 (4.0.0 available)
image 2.1.19 (3.0.2 available)
> image_cropper 1.4.0 (was 1.3.1)
> image_picker 0.6.7+22 (was 0.6.7+12) (0.7.4 available)
> image_picker_platform_interface 1.1.6 (was 1.1.1) (2.0.1 available)
import_js_library 1.0.2
in_app_purchase 0.3.5+1 (0.5.1+2 available)
> intl 0.17.0 (was 0.16.1)
> js 0.6.3 (was 0.6.2)
json_annotation 3.1.1 (4.0.1 available)
> json_serializable 3.5.1 (was 3.5.0) (4.1.0 available)
> logging 1.0.1 (was 0.11.4)
> matcher 0.12.10 (was 0.12.10-nullsafety.1)
> meta 1.3.0 (was 1.3.0-nullsafety.3)
mime 0.9.7 (1.0.0 available)
modal_bottom_sheet 1.0.0+1 (2.0.0 available)
modal_progress_hud 0.1.3
octo_image 0.3.0 (1.0.0+1 available)
onesignal_flutter 2.6.3
package_config 1.9.3 (2.0.0 available)
package_info 0.4.3+4 (2.0.0 available)
> path 1.8.0 (was 1.8.0-nullsafety.1)
path_drawing 0.4.1+1
path_parsing 0.1.4
> path_provider 1.6.28 (was 1.6.27) (2.0.1 available)
path_provider_linux 0.0.1+2 (2.0.0 available)
> path_provider_macos 0.0.4+8 (was 0.0.4+4) (2.0.0 available)
> path_provider_platform_interface 1.0.4 (was 1.0.3) (2.0.1 available)
> path_provider_windows 0.0.5 (was 0.0.4+3) (2.0.0 available)
> pedantic 1.11.0 (was 1.9.0)
permission_handler 5.1.0+2 (6.1.1 available)
permission_handler_platform_interface 2.0.2 (3.1.1 available)
> petitparser 3.1.0 (was 3.0.4) (4.1.0 available)
> platform 3.0.0 (was 2.2.1)
> plugin_platform_interface 1.0.3 (was 1.0.2) (2.0.0 available)
> process 4.2.1 (was 3.0.13)
progress_indicators 0.1.5
> pub_semver 2.0.0 (was 1.4.4)
> pubspec_parse 0.1.8 (was 0.1.5) (1.0.0 available)
> pull_to_refresh 1.6.4 (was 1.6.2)
> quiver 2.1.5 (was 2.1.3) (3.0.1 available)
random_color 1.0.5
random_string 2.1.0
readmore 1.0.1 (2.0.0 available)
rflutter_alert 1.1.0 (2.0.2 available)
rxdart 0.24.1 (0.26.0 available)
scroll_to_index 1.0.6 (2.0.0 available)
> scrollable_positioned_list 0.1.10 (was 0.1.8)
share 0.6.5+4 (2.0.1 available)
simple_tooltip 0.1.16
sky_engine 0.0.99 from sdk flutter
> source_gen 0.9.10+3 (was 0.9.8) (1.0.0 available)
> source_span 1.8.0 (was 1.8.0-nullsafety.2) (1.8.1 available)
> sqflite 1.3.2+4 (was 1.3.2+1) (2.0.0+3 available)
> sqflite_common 1.0.3+3 (was 1.0.2+1) (2.0.0+2 available)
> stack_trace 1.10.0 (was 1.10.0-nullsafety.1)
> stream_channel 2.1.0 (was 2.1.0-nullsafety.1)
> string_scanner 1.1.0 (was 1.1.0-nullsafety.1)
swipedetector 1.2.0
> syncfusion_flutter_charts 18.4.49 (was 18.3.42) (19.1.55+1 available)
> syncfusion_flutter_core 18.4.49 (was 18.4.31) (19.1.55 available)
> syncfusion_flutter_datepicker 18.4.49-beta (was 18.3.51-beta) (19.1.55-beta available)
> syncfusion_flutter_gauges 18.4.49 (was 18.4.31) (19.1.55 available)
> syncfusion_flutter_sliders 18.4.49-beta (was 18.3.44-beta) (19.1.55-beta available)
> syncfusion_localizations 18.4.49 (was 18.3.44) (19.1.55 available)
synchronized 2.2.0+2 (3.0.0 available)
> term_glyph 1.2.0 (was 1.2.0-nullsafety.1)
> test_api 0.2.19 (was 0.2.19-nullsafety.2) (0.3.0 available)
timer_count_down 1.0.4+1 (2.0.0 available)
> typed_data 1.3.0 (was 1.3.0-nullsafety.3)
> url_launcher 5.7.10 (was 5.6.0) (6.0.3 available)
> url_launcher_linux 0.0.1+4 (was 0.0.1+1) (2.0.0 available)
> url_launcher_macos 0.0.1+9 (was 0.0.1+8) (2.0.0 available)
> url_launcher_platform_interface 1.0.9 (was 1.0.8) (2.0.2 available)
> url_launcher_web 0.1.5+3 (was 0.1.3+2) (2.0.0 available)
> url_launcher_windows 0.0.1+3 (was 0.0.1+1) (2.0.0 available)
uuid 2.2.2 (3.0.3 available)
> vector_math 2.1.0 (was 2.1.0-nullsafety.3)
video_compress 2.1.1 (3.0.0 available)
video_player 1.0.1 (2.1.1 available)
video_player_platform_interface 2.2.0 (4.1.0 available)
> video_player_web 0.1.4+1 (was 0.1.4) (2.0.0 available)
video_thumbnail 0.2.5+1 (0.3.3 available)
visibility_detector 0.1.5 (0.2.0 available)
wakelock 0.2.1+1 (0.5.0+2 available)
wakelock_platform_interface 0.1.0+1 (0.2.0 available)
wakelock_web 0.1.0+3 (0.2.0 available)
> watcher 1.0.0 (was 0.9.7+15)
> webview_flutter 1.0.7 (was 1.0.5) (2.0.3 available)
> win32 2.0.5 (was 1.7.3)
> xdg_directories 0.1.2 (was 0.1.0) (0.2.0 available)
xml 4.5.1 (5.1.0 available)
yaml 2.2.1 (3.1.0 available)
These packages are no longer being depended on:
– node_interop 1.2.1
– node_io 1.2.0
– platform_detect 1.4.0
Downloading image_cropper 1.4.0…
Downloading flutter_facebook_auth 2.0.2+1…
Downloading get 3.26.0…
Downloading path_provider 1.6.28…
Downloading path_provider_windows 0.0.5…
Downloading win32 2.0.5…
Downloading scrollable_positioned_list 0.1.10…
Downloading logging 1.0.1…
Downloading glob 2.0.1…
Downloading agora_rtc_engine 3.3.2…
Downloading flutter_rating_bar 4.0.0…
Changed 88 dependencies!
104 packages have newer versions incompatible with dependency constraints.
Try `flutter pub outdated` for more information.
Bi an bunları görünce otomatik download etti ve son güncel paketlere geçecek sanıyorsunuz ama pubspec.yaml da herhangi bir değişiklik yapmadı.
Bu durumda önerdiği üzere flutter pub outdated ile bakıyoruz paketlerin son versiyonları nelermiş nelere geçebiliirz bize rapor çıkarttıyor olacak. Yani kısacası sen uğraş diyor 🙂
Showing outdated packages.
[*] indicates versions that are not the latest available.
Package Name Current Upgradable Resolvable Latest
direct dependencies:
cached_network_image *2.3.3 *2.3.3 *2.5.1 3.0.0
camera *0.5.8+17 *0.5.8+17 *0.7.0+2 0.8.1
credit_card *0.1.6 *0.1.6 0.1.8 0.1.8
crypto *2.1.5 *2.1.5 *2.1.5 3.0.1
device_info *0.4.2+10 *0.4.2+10 2.0.0 2.0.0
dio *3.0.10 *3.0.10 *3.0.10 4.0.0
flutter_auth_buttons *0.6.0 *0.6.0 0.10.0 0.10.0
flutter_cache_manager *1.4.2 *1.4.2 *2.1.2 3.0.1
flutter_facebook_auth *2.0.2+1 *2.0.2+1 *2.0.2+1 3.3.2
flutter_html *1.2.0 *1.2.0 *1.2.0 1.3.0
flutter_inappwebview *4.0.0+4 *4.0.0+4 5.3.1+1 5.3.1+1
flutter_keyboard_visibility *3.3.0 *3.3.0 *4.0.6 5.0.0
flutter_typeahead *1.8.8 *1.8.8 *2.0.0 3.1.1
font_awesome_flutter *8.8.1 *8.8.1 9.0.0 9.0.0
get *3.26.0 *3.26.0 *3.26.0 4.1.3
get_storage *1.4.0 *1.4.0 *1.4.0 2.0.2
google_fonts *1.1.2 *1.1.2 *1.1.2 2.0.0
google_sign_in *4.5.1 *4.5.1 *4.5.9 5.0.1
hive *1.4.4+1 *1.4.4+1 *1.4.4+1 2.0.2
hive_flutter *0.3.1 *0.3.1 *0.3.1 1.0.0
html_unescape *1.0.1+3 *1.0.1+3 2.0.0 2.0.0
http *0.12.2 *0.12.2 *0.12.2 0.13.1
image_picker *0.6.7+22 *0.6.7+22 *0.6.7+22 0.7.4
in_app_purchase *0.3.5+1 *0.3.5+1 *0.3.5+1 0.5.1+2
modal_bottom_sheet *1.0.0+1 *1.0.0+1 2.0.0 2.0.0
package_info *0.4.3+4 *0.4.3+4 2.0.0 2.0.0
permission_handler *5.1.0+2 *5.1.0+2 *5.1.0+2 6.1.1
quiver *2.1.5 *2.1.5 *2.1.5 3.0.1
readmore *1.0.1 *1.0.1 2.0.0 2.0.0
rflutter_alert *1.1.0 *1.1.0 2.0.2 2.0.2
scroll_to_index *1.0.6 *1.0.6 2.0.0 2.0.0
share *0.6.5+4 *0.6.5+4 2.0.1 2.0.1
syncfusion_flutter_charts *18.4.49 *18.4.49 19.1.55+1 19.1.55+1
syncfusion_flutter_datepicker *18.4.49-beta *18.4.49-beta 19.1.55-beta 19.1.55-beta
syncfusion_flutter_gauges *18.4.49 *18.4.49 19.1.55 19.1.55
syncfusion_flutter_sliders *18.4.49-beta *18.4.49-beta 19.1.55-beta 19.1.55-beta
syncfusion_localizations *18.4.49 *18.4.49 19.1.55 19.1.55
timer_count_down *1.0.4+1 *1.0.4+1 2.0.0 2.0.0
url_launcher *5.7.10 *5.7.10 6.0.3 6.0.3
video_compress *2.1.1 *2.1.1 3.0.0 3.0.0
video_player *1.0.1 *1.0.1 *1.0.1 2.1.1
video_thumbnail *0.2.5+1 *0.2.5+1 0.3.3 0.3.3
visibility_detector *0.1.5 *0.1.5 0.2.0 0.2.0
webview_flutter *1.0.7 *1.0.7 *1.0.7 2.0.3
37 dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml, or run `flutter pub upgrade –major-versions`.
Hala bir umut önerilere devam ediyor bizde zorluyoruz.
flutter pub upgrade –major-versions
Ile geçiş denemesi yapıyoruz.
Changed 26 constraints in pubspec.yaml:
url_launcher: ^5.5.3 -> ^6.0.3
scroll_to_index: ^1.0.6 -> ^2.0.0
html_unescape: 1.0.1+3 -> ^2.0.0
flutter_keyboard_visibility: ^3.2.2 -> ^4.0.6
credit_card: 0.1.6 -> ^0.1.8
visibility_detector: ^0.1.5 -> ^0.2.0
syncfusion_flutter_charts: ^18.3.42 -> ^19.1.55+1
syncfusion_flutter_datepicker: ^18.3.51-beta -> ^19.1.55-beta
syncfusion_localizations: ^18.3.44 -> ^19.1.55
syncfusion_flutter_sliders: ^18.3.44-beta -> ^19.1.55-beta
rflutter_alert: ^1.1.0 -> ^2.0.2
readmore: ^1.0.1 -> ^2.0.0
camera: ^0.5.8+17 -> ^0.7.0+2
video_compress: ^2.1.1 -> ^3.0.0
timer_count_down: ^1.0.4+1 -> ^2.0.0
syncfusion_flutter_gauges: ^18.4.31 -> ^19.1.55
modal_bottom_sheet: ^1.0.0+1 -> ^2.0.0
font_awesome_flutter: 8.8.1 -> ^9.0.0
video_thumbnail: ^0.2.5+1 -> ^0.3.3
share: ^0.6.5+4 -> ^2.0.1
google_sign_in: 4.5.1 -> ^4.5.9
flutter_auth_buttons: ^0.6.0 -> ^0.10.0
device_info: ^0.4.1+4 -> ^2.0.0
flutter_cache_manager: ^1.4.2 -> ^2.1.2
package_info: ^0.4.3+4 -> ^2.0.0
flutter_inappwebview: ^4.0.0+4 -> ^5.3.1+1
Evet şimdi bazı güncellemeler yaptı pubspec de
Şimdi kodlara baktığımızda bazı yerlerde hatalar olduğunu görüyoruz. Sıra ile düzeltmeler yapmak gerekiyor kodda. Bu hataların bir kısmı Flutter 2.0 ile dart dili versiyonu da 2.12.2 ye geçmiş oldu. Bir kısmı ise yeni kütüphanelerde olan değişiklikler.
Başlamadan önce dart dili güncellendiği için VsCode kulllanıyorsanız ki öyle tahmin ediyorum. Bi kapatıp açmanızda fayda var. Hem proje baştan yüklensin hem bi kendine gelsin 🙂 Açıkcası kapatıp açınca farklı hatalar çıktığını veya hataların düzeldiğini gördüm çoğu kez.
Örneğin inappwebview ile ilgili çizilli olan yerler hatalı diyor.
child: InAppWebView(
initialUrlRequest:
URLRequest(url: Uri.parse(webViewController.url)),onWebViewCreated: (InAppWebViewController controller) {
_webViewController = controller;
},
onProgressChanged: (InAppWebViewController controller, int progress) {
//log(“progress : ” + progress.toString());
webViewController.progress.value = progress / 100;
},
onReceivedServerTrustAuthRequest: (InAppWebViewController controller,
URLAuthenticationChallenge challenge) async {
return ServerTrustAuthResponse(
action: ServerTrustAuthResponseAction.PROCEED);
},
),
Bizde bu noktada araştırma ve düzeltmelere başlıyoruz.
Burada yeni kütüphanede kulllanılan özellikleri bulmak için widget ismine tıklayıp içine girip bakmak gerekiyor.
Mesela initialUrl artık initialUrlRequest olmuş. Bunun gibi tek tek bakıp düzeltmeniz gerekiyor.
Üstelik tipi String den URLRequest e dönmüş.
initialUrlRequest: URLRequest(url: webViewController.url)),
Şeklinde güncelliyoruz.
Kütüphanenin son halinin pub.dev deki example larına tekrar bakmanız gerekebilir bu değişiklikleri yaparken.
Düzeltme snrrası kod bu hale geliyor.
InAppWebView(
initialUrlRequest: URLRequest(url: webViewController.url),
onWebViewCreated: (InAppWebViewController controller) {
_webViewController = controller;
},
onProgressChanged: (InAppWebViewController controller, int progress) {
//log(“progress : ” + progress.toString());
webViewController.progress.value = progress / 100;
},
onReceivedServerTrustAuthRequest: (InAppWebViewController controller,
URLAuthenticationChallenge challenge) async {
return ServerTrustAuthResponse(
action: ServerTrustAuthResponseAction.PROCEED);
},
Burada bütün değişikleri anlatmayacağım her kırmızı noktada araştırma yapıp değişiklik ne olacak bulabiliyorsunuz biraz uğraşmak gerekiyor. Bazı upgrade olan kütüphaneleri geri çekmek zorunda kaldık flutter 2.0 da sorun yaratmıyorsa ve kodda çok değişiklik gerekiyorsa bu durumda geri çekip daha sonra o kısmı baştan ele almanız gerekebilir.
Son olarak Android build fail oldu.
BUILD FAILED in 1m 29s
The build failed likely due to AndroidX incompatibilities in a plugin. The tool is about to try using Jetifier to solve the incompatibility.
[!] Flutter tried to create the file `android/settings_aar.gradle`, but failed.
To manually update `settings.gradle`, follow these steps:
1. Copy `settings.gradle` as `settings_aar.gradle`
2. Remove the following code from `settings_aar.gradle`:
def localPropertiesFile = new File(rootProject.projectDir, “local.properties”)
def properties = new Properties()
assert localPropertiesFile.exists()
localPropertiesFile.withReader(“UTF-8”) { reader -> properties.load(reader) }
def flutterSdkPath = properties.getProperty(“flutter.sdk”)
assert flutterSdkPath != null, “flutter.sdk not set in local.properties”
apply from: “$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle”
Önerilen düzeltmeyi yapınca bu sefer başka bir hata
BUILD FAILED in 803ms
ProcessException: Process exited abnormally:
FAILURE: Build failed with an exception.
* What went wrong:
Project ‘app’ not found in root project ‘android’.
Android studio ile android projesini açıp bir bakalım ne oluyor ne bitiyor. Bu son yaptığımız setttings.gradle işlemini geri alıyoruz. Android studio içinden run yapıyoruz vee build oluyor. Sanırım vscode-dart refresh sorunu yaşadık yine.
Bu aradada projede variant ımız release kalmış buda soruna yol açmış olabilir onuda debug yapıp deniyoruz.
Bazı paketlerde sıkıntı çıktı biz bir flutter clean sonra tekrar pub get yapalım vscode dan.
Sonra tekrar android studio yu açtık ve paketlerden biri gradle dosyasında hata verdiğini gördük. Baktığımızda gradle 3.6.3 kulllanıyordu. Bizde 3.6.3 e geçirdik ana gradle dosyamızı
classpath ‘com.android.tools.build:gradle:3.5.0’
classpath ‘com.android.tools.build:gradle:3.6.3’
Yani Fllutter 2.0 a geçtiğinizde build.gradle dosyalarınızda kendiliğinden güncellenmiyor malesef. Kendiniz sorun var ise tespit edip çözmeniz gerekiyor.
Flutter yazarken Android dünyasını da iOS dünyasını da bilmek gerekiyor. Biraz Android Studio ve XCode a hakim olmak lazım. Çünkü arka tarafta flutter yine onlar üzerinden derleme yapıyor.
2.0 ın bize çok güzellikler ve kolaylııklar getirmesini umuyorrum. Umarım herkes kolay geçiş yapar. Bizim yaklaşık bir 3 saatimizi aldı ama projeyi baştan sona test etmek lazım. Umarım sorun çıkmaz başka.
—
Test sonucu:
Tabiki sorunlar çıktı sadece 1 kütüphaneyi daha üst bir versiyonu geçirelim dedik bir ufak sorundan dolayı, bir sürü başka kütüphane etkilendi. Daha sonra bi 3 saat daha uğraştık ve tüm kütüphaneler neredeyse son versiyonlarına gelmiş oldu. Hatta bazı kütüphaneleri silmek zorunda bile kaldık çünkü 2.0 update ini yapmamışlar.
Kütüphane seçerken beğeni, pub puanı ve popülerlik oranına bakmanın ne kadar önemli olduğu bir kez daha ortaya çıktı. Sıradan ve az kullanılan bir kütüphane risk teşkil eder çünkü yapan kişi bırakabilir , güncellemeyebilir.
Sonuçta 6 saatten fazla sürdü ama geçişi başarılı yapabildik.
Trend : Flutter
Stackoverflow bilmeyenler için anlatmak gerekirse yazılımcıların çok kullandığı ve her türlü teknik soruyu sorduğu ve cevabını aldığı çok popüler bir web sitesi.
Bu sayede bizde sorulan sorular üzerinden kimin hangi konu ile daha çok ilgilendiğini görebilliyoruz.
Özellikle React-Native ile rekabet eden (kullanıcı sayısı olarak) Flutter, bu yarışta 2019 ortalarında öne geçmiş görünyor.
2020 yılında grafik bu şekilde.

2021 de ise fark oldukça açılmış. Buda flutter ın farkı daha da açacağını ve react in düşüşe geçeceğinin bir göstergesi bana göre.

Özellikle web tarafı Flutter da geliştikçe React tercih etmelerine gerek kalmayacak kimsenin. Daha önceki yazılarımda Flutter’ın dart dilinde tek bir kod yazarak hem android hem ios gerçek Native Mobil Uygulama yapabildiğinden bahsetmiştim. React malesef tam native değil arada bir javascript katmanı var ve buda biraz performans sorunu yada hatalara yol açabiliyor. Flutter ile hazırlanan küttüphanelerin modülleri tam native çevirisi yapıyor ve sonuç-çıktı gerçek bir native uygulama.
Ancak dikkat! Flutter’ı yanlış kullanırsanız sonuç React’dan kötü oluyor. State management çok önemli bir kavram Flutter da ve yanlış yapılırsa ciddi performans sorunları oluşuyor.
Ancak konumuz şimdi bu değil. Bu yazıda Fllutter’ın giderek yaygınlaştığını ve React’in giderek düşeceğini vurgulamak istedim.
Şimdi çok ilginç bir grafik daha paylaşacağım. Biliyorsunuz mobil uygulama geliştirken uzun yıllar android de java ve son olarak kotlin , ios da ise objective-c ile başlayan maceramız swift dili ile devam etti.
Java çok eski ve birçok yerde kulllanılan bir dil olduğundan onla kıyaslamak doğru olmaz flutter ı. Ancak son yıllarda android uygulama geliştirme dili olarak popüler olan Kotlin dilini karşılaştırma için kulllanabileceğimizi düşünüyorum.

Grafikte gördüğünüz gibi swift ve kotlin i sollamış durumda Flutter. Önümüzdeki zamanda Flutter ın 2017 de çıktığını düşünürsek bu yıllarda düşüşe geçen Swift de, 2021 den sonra düşecek olan Kotlin’de Flutter bu hızda giderse düşüş göstermeye devam edecek gibi görünüyor.
Yeni mobil uygulama geliştirecek arkadaşlara tavsiyem şu olacak. Trendi takip edin. Bu sayede güncel kalabilirsiniz. Bu tavsiyem hem yazılımcı arkadaşlara hem de mobil uygulama yaptırmak isteyenlere.
Sağlıkla ve sevgiyle kalın!




