Mobil Programlama 2025 Üç Ders
Kaynak: https://lolonolo.com/2025/09/09/mobil-programlama-2025-uc-ders-sinav-sorulari/
📖 Konu özeti (sınav öncesi tekrar)
Mobil Programlama 2025 Üç Ders Sınav Soruları
Mobil Programlama 2025 Üç Ders Sınav Soruları
Giriş
Mobil programlama, günümüz teknoloji dünyasının merkezinde yer alır ve bu alanda 2020’li yılların başlarında en yaygın kullanılan işletim sistemi “Android” olmuştur. Flutter, bu mobil dünyaya tek bir kod tabanıyla hem Android hem de iOS için modern uygulamalar geliştirmeyi sağlayan bir kullanıcı arayüzü (UI) geliştirme kitidir. Flutter bir programlama dili değildir; uygulamalar “Dart” programlama dili kullanılarak yazılır.
Flutter Projesinin Temelleri ve Kurulum
Bir Flutter projesi, çeşitli yapılandırma dosyaları ve komutları ile yönetilir. Örneğin, projenin Windows masaüstü platformunda da çalışmasını sağlamak için `flutter config` terminal komutu kullanılır. Projenin bağımlı olduğu paketlerin belirli bir sürümünün kullanılmasını zorunlu kılmak için ise `pubspec.yaml` dosyasındaki `dependency_overrides` bölümü düzenlenir. Uygulamanın internet gibi sistem özelliklerine erişebilmesi için, Android tarafında `AndroidManifest.xml` dosyasına gerekli izinlerin eklenmesi zorunludur.
Flutter Widget Mimarisi
Flutter’da arayüz, widget adı verilen yapı taşlarından oluşur. Durumu değişmeyen ve kullanıcı etkileşimi almayan statik bir arayüz bileşeni oluşturmak için `StatelessWidget` sınıfından miras alınır. Arayüzün düzenlenmesinde ise çeşitli layout widget’ları kullanılır. `GridView`, öğeleri kaydırılabilir bir ızgara (tablo) görünümünde düzenler. Bir sayfanın temel görsel iskeletini (başlık çubuğu, ana gövde vb.) oluşturan `Scaffold` widget’ının ise `appBar` ve `body` gibi parametreleri vardır, ancak `home` adında bir parametresi yoktur. Sayfa aşağı kaydırıldığında başlık kısmının gizlenmesi gibi gelişmiş kaydırma efektleri için ise `Sliver` widget’ları kullanılır.
Durum Yönetimi ve Navigasyon (State Management & Navigation)
Uygulama içinde verilerin yönetilmesi ve sayfalar arası geçiş, mobil programlamanın en önemli konularındandır. `Provider` gibi durum yönetimi kütüphanelerinde, veri modelinde bir değişiklik olduğunda arayüzü güncelleyen widget’ları haberdar etmek için `notifyListeners()` fonksiyonu çağrılır. `setState` metodu ise, durumu değişen widget’ın altındaki widget’lara yeni veriyi genellikle “yapıcı fonksiyonları” (constructor) aracılığıyla aktarır. Sayfalar arası geçişte ise Navigator API’ı kullanılır. Bu API `Route`, `Page` ve `Router` gibi temel bileşenlerden oluşur; “Screen” ise spesifik bir API bileşeni değil, genel bir kavramdır. `Scaffold` widget’ı da bir sayfa düzeni aracıdır, Navigator 2.0 API’ına özgü bir bileşen değildir.
Dart Dili ve İleri Konular
Flutter’ın arkasındaki güç olan Dart dili, modern ve esnek bir yapıya sahiptir. Fonksiyon tanımlarken parametrelerin veya geri dönüş türünün belirtilmesi zorunlu olmasa da, bir fonksiyon çağrılırken “normal (zorunlu) parametrelere değer girilmesi” zorunludur. Dart, mevcut sınıflara yeni fonksiyonlar eklemeyi sağlayan “genişletme metotları” (extension methods) ve sadece okunabilir özellikler tanımlamayı sağlayan “getiriciler” (getters) gibi ileri seviye özellikler de sunar.
Performans ve Hata Ayıklama
Uygulamanın performansı ve kararlılığı kritik öneme sahiptir. Flutter uygulamasının geliştirme ortamında oluşturulan paket boyutu, marketten indirilen optimize edilmiş boyuttan genellikle daha büyük olur. Uygulamanın çalışma zamanı davranışlarını, bellek kullanımını ve performansını takip etmek için ise “DartDevTools” adı verilen kapsamlı araç seti kullanılır. Veritabanı işlemleri için ise, iOS ve Android’de yerel olarak gelen ve ayrı bir servis gerektirmeyen sunucusuz bir veritabanı olan “SQLite” yaygın olarak kullanılır.
Sonuç
Flutter ile mobil uygulama geliştirmek, güçlü Dart dilinin özelliklerini, esnek widget mimarisini ve zengin API setlerini bir arada kullanmayı gerektirir. 2021 yılı itibarıyla Android ve iOS gibi platformları destekleyen ancak henüz “HarmonyOS” gibi yeni sistemleri resmi olarak desteklemeyen Flutter, platformlar arası uygulama geliştirmede günümüzün en popüler araçlarından biri olmaya devam etmektedir.
Mobil Programlama 2025 Üç Ders Sınav Soruları
Mobil Programlama 2025 Üç Ders Sınav Soruları

Android işletim sisteminde İnternet erişimine sahip olabilmemiz için yukarıdaki kod parçacığı aşağıdaki dosyalardan hangisine yazılmalıdır?

Dart Programlama dilinde bir sınıf içerisinde yukarıdaki kodun işlevini aşağıdakilerden hangisi doğru ifade etmektedir?
Scaffold'un appBar, body, floatingActionButton gibi parametreleri vardır ve klasik Android uygulama ekranı iskeletini oluşturur; widget ağacında bulunması zorunlu değildir. home parametresi ise Scaffold'a değil MaterialApp'e aittir, bu yüzden A yanlıştır.

Yukarıdaki kod parçasında “setState” içerisinde “_active” değeri güncellenmiş ve bu değere göre hiyerarşide içteki bir widget arkaplan rengini seçecektir.
Hal böyle iken, setState metodu arayüz bileşenlerinin oluşturduğu ağaçta güncellenecek arayüz bileşeninden daha dış seviyede bulunuyorsa, arayüz güncellenmesinde değişen veri içteki arayüz bileşenlerine (widget) aktarılma yöntemi aşağıdakilerden hangisidir?
Flutter'da veri, widget ağacında yukarıdan aşağıya yapıcı (constructor) parametreleriyle aktarılır. setState dıştaki widget'ta çağrıldığında o widget yeniden build edilir ve güncel _active değeri içteki widget'a yapıcı fonksiyonu aracılığıyla parametre olarak geçirilir.