Ara Sınav (Vize) 2025-2026 25 soru

Mobil Programlama 2025-2026 Ara Sınav (Vize)

Kaynak: https://lolonolo.com/2026/09/14/mobil-programlama-2025-2026-vize-sorulari-guz/

📖 Konu özeti (sınav öncesi tekrar)

Mobil Programlama 2025-2026 Vize Soruları (Güz)

Mobil Programlama 2025-2026 Vize Soruları (Güz)

Flutter’ın Temelleri ve Dart Dilinin Yapısı

Mobil programlamada devrim yaratan akıllı telefonlar, kullanıcılara sonradan uygulama yükleme imkânı sunarak yazılım ekosistemini (uygulama mağazalarını) doğurmuştur. Günümüzde bu uygulamaları tek bir kod tabanıyla hem iOS, hem Android (hatta Windows ve Linux) için geliştirmeyi sağlayan en popüler araçlardan biri Google’ın geliştirdiği Flutter çerçevesidir. Flutter’da projeyi yapılandırmak ve Windows masaüstü geliştirmeyi açmak için terminalde “flutter config” komutları kullanılırken, geliştiriciler ihtiyaç duydukları kütüphaneleri pub.dev adresinden bulup, projenin pubspec.yaml dosyasına eklerler. Aynı dosya (pubspec.yaml), projede kullanılacak resim ve font gibi varlıkların (assets) tanıtıldığı ve daha sonra AssetBundle ile kod içinde çağrıldığı yerdir. Flutter’ın gücü, arkasında yatan Dart dilinden gelir. Dart dilinde koleksiyon yapıları çok esnektir; verileri anahtar-değer (key-value) şeklinde tutmak için Map yapısı kullanılırken, farklı türleri kabul eden List gibi yapılar Jenerik (Generic) türler olarak adlandırılır. Ayrıca Dart dilinde, bilinmeyen metot çağrılarını yakalamak için sınıfların içine noSuchMethod fonksiyonu eklenebilir veya listeleri birleştirmek/kopyalamak için güvenli “spread” operatörü olan … ? kullanılır.

Widget Ağacı (UI), Kısıtlar ve Navigasyon

Flutter’da her şey bir Widget’tır. Geliştirici kendi widget’ını oluşturduğunda, ekrana ne çizileceğini belirtmek için build fonksiyonunu @override etmek (ezmek) zorundadır. Tasarım yaparken, arka plan rengi, padding ve border gibi özellikleri aynı anda uygulamak için Container kullanılır; ancak birden fazla objeyi yan yana dizmek istiyorsak Row kullanmalıyız. Flutter’ın mizanpaj kurallarına göre, en dıştaki bir Container’a genişlik ve yükseklik verseniz bile, üst seviyesindeki kısıt (constraint) onu ekranı kaplamaya zorlayabilir. Tasarıma dokunma etkileşimi katmak istediğimizde objeyi GestureDetector ile sarıp onTap fonksiyonunu tetikleriz. Hazır tasarımlar için de Material bileşenler kurtarıcıdır; örneğin listelerde ikon ve yazıyı bir arada tutan ListTile en sık kullanılan Material bileşendir. Uygulama içinde sayfalar arası geçişi yönetmek için Navigator API (Route, Router, Navigator, Page) kullanılır. Rota ayarları yapılırken MaterialApp’in routes parametresine Map<String, WidgetBuilder> tipinde değerler verilirken; daha detaylı yönlendirme kuralları (onGenerateRoute) CupertinoApp veya MaterialApp üzerinde tanımlanır.

25 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
Aşağıdakilerden hangisi Material düzenleyici arayüz bileşenlerinden biridir?
DDoğru cevap
Açıklama
Flutter’da ListTile, Material Design kurallarına uygun olarak hazırlanmış, genellikle listelerde (ListView) tercih edilen, içinde başlık (title), alt başlık (subtitle), ikon (leading/trailing) gibi öğeleri düzenli bir şekilde barındıran temel bir Material düzenleyici arayüz bileşenidir.
Soru 2

Bir sınıf tanımlaması için yukarıdaki kod bloğu bulunmaktadır. Bu kod bloğunun çağrılma zamanı aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
Dart dilinde (ve nesne yönelimli programlamada) `noSuchMethod` fonksiyonu, bir sınıfın (objenin) içinde var olmayan (tanımlı olmayan) bir metot veya özellik çağrılmaya çalışıldığında programın çökmesini engellemek veya bu durumu yakalamak (handle etmek) için otomatik olarak tetiklenir.
Soru 3
Flutter kod içerisinde projeye dahil edilmiş varlıklara (assets) erişmek için ………. kullanır.
Yukarıdaki cümlede boş bırakılan alana aşağıdaki ifadelerden hangisi yazılmalıdır?
ADoğru cevap
Açıklama
Flutter’da projenin paketine (pubspec.yaml dosyasına) eklenmiş olan resim, font, metin dosyası gibi statik kaynaklara (varlıklara/assets) kod içinden erişmek ve bunları bellek üzerinde okumak için ‘AssetBundle’ (genellikle DefaultAssetBundle.of(context)) sınıfı kullanılır.
Soru 4
Kendi arayüz bileşimimizi üretmek istediğimizde, arayüz bileşeni sınıfının tanımlamasında, @override ile işaretleyip yazmak zorunda olduğumuz fonksiyon aşağıdakilerden hangisidir?
ADoğru cevap
Açıklama
Flutter’da kendi yazdığımız her bir arayüz bileşeni (StatelessWidget veya StatefulWidget) ekranda ne göstereceğini belirtmek zorundadır. Bu nedenle sınıf içinde, geriye bir Widget döndüren `build` metodunu (fonksiyonunu) `@override` ederek ezmek (yazmak) kesinlikle zorunludur.
Soru 5
Container(width: 100, height: 100, color: red)
Yukarıdaki kod satırında bir Container’ın genişlik ve yüksekliğinin 100 birim olması belirtilmiştir. Lakin bu Container sayfanın en üst bileşeni ise ekranın tamamını kapladığı görülür. Bunun sebebi nedir?
DDoğru cevap
Açıklama
Flutter’ın düzen (layout) sistemindeki en temel kural şudur: ‘Kısıtlar (constraints) yukarıdan aşağıya iner, boyutlar (sizes) aşağıdan yukarıya çıkar’. Eğer bir Container sayfanın en üstünde (kökünde) ise ve etrafında onu sınırlayacak bir Center, Align veya Scaffold yoksa; işletim sistemi ekranın katı (tight) kısıtlarını doğrudan Container’a iletir ve Container sizin verdiğiniz width/height değerlerini yok sayarak ekranın tamamını kaplamaya (zorlanmaya) mecbur kalır.
Soru 6
Aşağıdaki ihtiyaçlardan hangisi için arayüz bileşenleri bir Container widgetı içerisine toplanmaz?
BDoğru cevap
Açıklama
Container widget’ı renk (A), kenarlık (C), dış boşluk (D) ve iç boşluk (E) vermek için mükemmel bir kutu (box) modelidir. Ancak Container yalnızca tek bir alt eleman (child) alabilir. Birden fazla objeyi yan yana (soldan sağa) sıralamak için Container değil, ‘Row’ widget’ı kullanılır.
Soru 7
Aşağıdakilerden hangisi bellekte verileri anahtar – değer (key value) çiftleri şeklinde saklamak için kullanılan veri türünün adıdır?
ADoğru cevap
Açıklama
Dart dilinde ve çoğu programlama dilinde, verileri bir ‘anahtar’ (key) ve bu anahtara karşılık gelen bir ‘değer’ (value) ikilisi halinde tutan (örneğin JSON verileri gibi) veri koleksiyonu yapısına ‘Map’ (veya Sözlük/Dictionary) adı verilir.
Soru 8
MaterialApp arayüz bileşeninin routes parametresinin aldığı değer türü aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
Flutter’da sayfa geçişlerini (navigasyonu) yönetmek için MaterialApp içinde `routes` parametresi kullanılır. Bu parametre, gidilecek sayfanın ismini (String) anahtar olarak, o sayfayı oluşturacak fonksiyonu (WidgetBuilder) da değer olarak alan bir Map bekler. Yani türü `Map`’dır.
Soru 9
Detaylı bir navigasyon işlemi için tanımlanabilecek onGenerateRoute parametresi aşağıdaki bileşenlerden hangisinde vardır?
EDoğru cevap
Açıklama
Route (sayfa yönlendirme) ayarları ve `onGenerateRoute` parametresi uygulamanın en dışındaki ana kapsayıcı widget’larda bulunur. Bunlar genellikle MaterialApp veya Apple (iOS) tasarımlı eşdeğeri olan ‘CupertinoApp’ widget’larıdır.
Soru 10
Aşağıdakilerden hangisi 2021 yılında Flutter’ın desteklemediği bir ortam (işletim sistemi) adıdır?
BDoğru cevap
Açıklama
2021 yılı itibarıyla Flutter; iOS, Android, Windows, Mac, Linux ve Web platformları için resmi destek veriyordu. Ancak Huawei’nin geliştirdiği ‘HarmonyOS’, o dönemde Flutter tarafından resmi olarak desteklenen platformlar listesinde yer almıyordu.
Soru 11
Flutter projesinin en hızlı güncellemelerini alacağımız kanalı aşağıdakilerden hangisidir?
ADoğru cevap
Açıklama
Flutter SDK güncellemeleri 4 farklı kanaldan (channel) sunulur: Stable, Beta, Dev ve Master. ‘Master’ kanalı, GitHub’daki kod deposunun anlık ucudur (tip). En son yazılan kodlar anında bu kanala düşer, dolayısıyla en hızlı (ancak en kararsız ve riskli) güncellemeleri veren kanal Master’dır.
Soru 12

Yukarıdaki kod bloğunun ekran çıktısı aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
Kodun adım adım analizi:
1) islem(int? x) fonksiyonu, içine parametre olarak bir `i` alan ve `x ?? i` (eğer x null ise i’yi, değilse x’i) döndüren bir fonksiyon döndürüyor.
2) `var nullli = islem(null);` yapıldığında `nullli` fonksiyonu, x yerine null alır. Yani `nullli(i)` çağrıldığında `null ?? i` çalışır ve sonuç `i` olur. Dolayısıyla `nullli(3)` sonucu 3’tür.
3) `var nullsiz = islem(5);` yapıldığında `nullsiz` fonksiyonu, x yerine 5 alır. `nullsiz(i)` çağrıldığında `5 ?? i` çalışır ve x null olmadığı için her zaman 5 döndürür. Parametre ne olursa olsun sonuç 5’tir.
4) `print(nullsiz(nullli(3)));` -> İçerideki `nullli(3)` 3 döner. Dışarıdaki `nullsiz(3)` ise x=5 olduğu için 5 döner. Ekrana 5 yazdırılır.
Soru 13
Aşağıdaki operatörlerden hangisi bir listedeki içeriği bir başka listeye kopyalamak için kullanılır?
EDoğru cevap
Açıklama
Dart dilinde bir listenin elemanlarını tek tek çıkarıp başka bir listenin içine serpiştirmek (kopyalamak/yaymak) için Spread (yayma) operatörü olan `…` (üç nokta) kullanılır. Eğer kopyalanacak liste null (boş) olma ihtimali taşıyorsa, uygulamanın çökmesini engellemek için null-aware spread operatörü olan `…?` (üç nokta soru işareti) kullanılır.
Soru 14
Aşağıdakilerden hangisi Flutter Navigator API’ında bulunan temel bileşenlerden biri değildir?
EDoğru cevap
Açıklama
Flutter’da navigasyon sisteminin (Navigator 2.0 dahil) resmi yapı taşları Route (yol), Navigator (yönetici), Page (sayfa ayarları) ve Router (yönlendirici) sınıflarıdır. Ancak ‘Screen’ (ekran) terimi geliştiricilerin kendi aralarında sayfaları isimlendirmek için kullandıkları genel (informal) bir kelimedir; Navigator API’si içinde `Screen` adında temel (built-in) bir sınıf bulunmaz.
Soru 15
“–enable-windows-desktop” ifadesi Windows bir işletim sistemi için Flutter projesi yazmayı mümkün kılmaktadır. Bu ifade hangi terminal komutuna parametre olarak yazılır?
DDoğru cevap
Açıklama
Flutter’da varsayılan olarak kapalı olan bazı platform desteklerini (örneğin Windows veya web) SDK seviyesinde aktif hale getirmek (yapılandırmak) için konfigurasyon aracı kullanılır. Bu işlem terminalde `flutter config –enable-windows-desktop` yazılarak gerçekleştirilir.
Soru 16
https:\\pub.dev internet adresi aşağıdaki tanımlardan hangisi için hizmet vermektedir?
CDoğru cevap
Açıklama
pub.dev, Flutter ve Dart geliştiricilerinin projelerine ekleyebilecekleri (pubspec.yaml dosyasına yazdıkları) resmi ve üçüncü parti (açık kaynaklı) eklentilerin, paketlerin (packages) ve kütüphanelerin bulunduğu resmi depo (repository) sitesidir.
Soru 17
Aşağıdaki veri türlerinden hangisi Jenerik (Generic) bir türdür?
CDoğru cevap
Açıklama
Dart dilinde Jenerik (Generic) türler, içine farklı tiplerde veriler alabilen ve kullanıldığı yere göre o tipe bürünen (tip güvenliğini sağlayan) koleksiyon sınıflarıdır. `List` ve `Map` gibi yapılar, içlerine `
Soru 18
Akıllı telefonlarla, önceki dönem klasik cep telefonlarını ayıran belirgin özellik aşağıdakilerden hangisidir?
DDoğru cevap
Açıklama
Eski nesil ‘klasik’ cep telefonlarında donanıma gömülü sabit yazılımlar (hesap makinesi, yılan oyunu vb.) bulunur ve kullanıcı cihaza yeni bir yazılım yükleyemezdi. Akıllı telefonları (Smartphones) akıllı yapan ve bir bilgisayara dönüştüren en belirgin ve devrimsel özellik, üzerlerinde bir İşletim Sistemi (OS) bulunması ve kullanıcıya ‘sonradan (dışarıdan) yeni uygulamalar (App) yükleme’ imkânı sunmasıdır.
Soru 19
Resim dosyalarının Flutter projesine dahil edilmesi için hangi dosya altında bulunduğu klasör ve/veya dosya adının belirtilmesi gerekir?
CDoğru cevap
Açıklama
Flutter projesinde resimler, fontlar veya dışarıdan alınan eklentiler (paketler) projeye dahil edilecekse, bunların yolu (path) ve isimleri projenin ana yapılandırma dosyası olan `pubspec.yaml` dosyası altındaki `assets:` bölümüne tanımlanmak zorundadır.
Soru 20
Kullanıcının ekrana tıklama etkileşimini yakalayacak bir arayüz bileşeninde GestureDetector kullanılıyorsa, GestureDetector yapıcı fonksiyonunun aşağıdaki parametrelerden hangisinin verilmesi gerekir?
CDoğru cevap
Açıklama
GestureDetector, kendisine sarılı olan (child) widget üzerindeki dokunma, kaydırma gibi kullanıcı hareketlerini yakalayan bir bileşendir. Kullanıcının ‘tıklama/dokunma (tap)’ etkileşimini yakalayıp bir işlem yaptırmak için en çok kullanılan ve tanımlanması gereken olay dinleyici (event listener) parametresi `onTap` (tıklandığında çalışacak fonksiyon) parametresidir.
Soru 21
Flutter’da uygulama çalışırken ekranın durumunu (state) değiştiren, kullanıcının etkileşimiyle içeriğin dinamik olarak güncellenmesine olanak tanıyan widget türü aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
Flutter’da widget’lar iki temel gruba ayrılır. “StatelessWidget”, ekrana bir kere çizilen ve yaşam döngüsü boyunca bir daha değişmeyen (sabit) yapılar için kullanılır. Ancak kullanıcının bir butona basmasıyla ekrandaki sayacın artması veya bir kutunun renginin değişmesi gibi dinamik, durumu (state) değişebilen arayüzler için “StatefulWidget” kullanılır.
Soru 22
StatefulWidget yapısı içinde, değişkenin değerinin değiştiğini Flutter çerçevesine (framework’e) bildirerek build metodunun tekrar çalışmasını (ekranın yeniden çizilmesini) sağlayan fonksiyon aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
StatefulWidget’ta bir sayacın değerini `sayac++` şeklinde artırmak yeterli değildir; bu artışın ekrana yansıması için çerçevenin haberdar edilmesi gerekir. Bu işi yapan, içindeki kodları çalıştırdıktan hemen sonra Widget’ı yeniden çizmeye (build etmeye) zorlayan fonksiyon “setState((){ })” fonksiyonudur.
Soru 23
Dart programlama dilinde, null güvenliği (Null Safety) bağlamında bir değişkenin “kesinlikle null (boş) olamayacağını”, geliştiricinin derleyiciye garanti ettiğini gösteren operatör aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
Dart’ta Null Safety özelliğine göre `String? name;` şeklinde tanımlanan bir değişken null olabilir. Eğer geliştirici kodun belirli bir noktasında bu değişkenin kesinlikle bir değer taşıdığından eminse, derleyicinin hata vermesini önlemek için değişkenin sonuna “!” (Bang / Assertion) operatörünü koyarak (örn: `name!`) “Bunun null olmadığını garanti ediyorum” der.
Soru 24
Flutter’da, bileşenleri (widget’ları) ekranda yatay veya dikey yönde sıralamak için Row veya Column kullanıldığında, bu bileşenlerin ana eksen (main axis) üzerindeki hizalamasını (örn: ortalamak veya boşlukları eşit dağıtmak) kontrol eden özellik aşağıdakilerden hangisidir?
BDoğru cevap
Açıklama
Row (yatay) ve Column (dikey) widget’larında hizalama eksenlere göre yapılır. O widget’ın kendi ilerlediği yön “ana eksen (main axis)”, diğer yön ise “çapraz eksen (cross axis)” olarak adlandırılır. Bileşenleri yatay bir Row’da sağa/sola hizalamak veya aralarını açmak için “mainAxisAlignment” parametresi kullanılır.
Soru 25
Bir Flutter uygulamasında, tüm ekranın iskeletini (düzenini) oluşturan; üstte bir AppBar (başlık çubuğu), altta bir FloatingActionButton (yüzen buton) veya yan tarafta bir Drawer (açılır menü) gibi yapıları standart bir şekilde barındıran Material widget’ı aşağıdakilerden hangisidir?
DDoğru cevap
Açıklama
“Scaffold” (İskele) widget’ı, Material Design kurallarına göre bir ekranın (sayfanın) temel beyaz tahtasını ve çatı yapısını oluşturur. Bir uygulamanın üst başlığını (appBar), gövdesini (body), alt menüsünü (bottomNavigationBar) ve kayan butonunu (floatingActionButton) birbirinin üzerine binmeden düzenli bir şekilde konumlandıran ana taşıyıcı bileşendir.