Final 2025-2026 20 soru

Mobil Programlama 2025-2026 Final

Kaynak: https://lolonolo.com/2026/06/11/mobil-programlama-2025-2026-final-sorulari-bahar/

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

Mobil Programlama 2025-2026 Final Soruları (Bahar)

Mobil Programlama 2025-2026 Final Soruları

Paket Yönetimi ve Geliştirici Araçları | Durum Yönetimi (State Management) | Düzen (Layout) Mimarisi ve Sliver Yapıları | Platform Entegrasyonları ve Performans

Paket Yönetimi, Test ve Geliştirici Araçları

Flutter projelerinde dışa bağımlılıklar pubspec.yaml dosyası içerisinde `dependencies:` bloğunda tanımlanır. Paketler; pub.dev, GitHub repoları veya lokal dosya sisteminden çekilebilir; doğrudan sıkıştırılmış (ZIP) dosya yoluyla standart paket yönetimi desteklenmez. Uygulamanın çalışma zamanı (runtime) davranışlarını izlemek, bellek tüketimini ve widget ağacını analiz etmek için resmi araç seti Dart DevTools’tur. Birim testlerinde (unit test) canlı web servisleri veya veri tabanlarına olan bağımlılığı ortadan kaldırıp sahte nesneler üretmek için ise Mockito paketi kullanılır. Flutter SDK kurulumlarının ve ortam değişkenlerinin denetimi ise terminale flutter doctor komutu yazılarak gerçekleştirilir.

Durum Yönetimi (State Management)

Uygulama genelinde (birden fazla ekranda) paylaşılan oturum bilgileri, tema veya sepet verileri App State (Uygulama Durumu) ile yönetilir. Sadece tek bir widget’ın kendi içindeki anlık değişkenlikleri (örn: basit bir animasyon durumu) için App State kurmak gereksizdir, bu durum yerel (ephemeral) durumdur. Üst (dış) bir widget’ta `setState` ile güncellenen veri, alt (iç) seviyedeki widget’a aktarılırken içteki widget’ın yapıcı (constructor) fonksiyonu kullanılır. Provider kütüphanesindeki `Consumer` widget’ı arayüzü güncellerken, değişimi gerekmeyen statik ağaç parçaları `child` parametresine verilerek performans optimizasyonu (rebuild engelleme) sağlanır. Kod üreten kütüphanelerdeki (örn: json_serializable) değişiklikleri eşzamanlı takip etmek için ise *flutter pub run build_runner watch* komutu kullanılır.

Düzen (Layout) Mimarisi ve Sliver Yapıları

Sayfa kaydırıldıkça (scroll) başlığın gizlenmesi veya dinamik efektler kazanması için Sliver ailesi (SliverAppBar, SliverList) tercih edilir. Yatay düzlemde (satır halinde) yan yana bileşen dizilimi için Row, dikey düzlemde ise Column kullanılır. İki boyutlu matris tablosu oluşturan kaydırılabilir ızgara yapısına ise GridView denir. Navigator 2.0 (Router API); Router, RouterDelegate, RouterInformationParser ve Page bileşenlerini içerirken; `Scaffold` sadece görsel iskelet yapısıdır, bir navigasyon bileşeni değildir. Formu satır-sütun ızgaralarına bölen ve hücre başına bir kontrol kısıtı getiren yapı TableLayoutPanel’dir (WinForms).

Platform Entegrasyonları, Dosya Erişimi ve Performans

Uygulamanın internete çıkabilmesi veya kamera/konum kullanabilmesi için gerekli Android izinleri yerel dosya yolundaki AndroidManifest.xml dosyasına yazılmalıdır. Cihazın kalıcı hafızasında basit anahtar-değer (key-value) verilerini saklamak için shared_preferences paketi kullanılır. Platformlar arası dosya yolu farklılıklarını soyutlayarak standartlaştıran paket ise path_provider’dır. Performansı artırmak için listenin sadece ekranda görünen kısımlarını yükleyen yöntem Lazy Loading’dir (örn: ListView.builder). Animasyon denetimindeki vsync: this parametresi ise widget ekran dışındayken sistem kaynağı (CPU/pil) tüketilmesini engeller.

Mobil Programlama 2025-2026 Final Soruları

20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
Flutter pubspec.yaml dosyası içerisinde dependencies: altında belirtilen paket bağımlılıkları için bir paketi …… arayabilir.
Aşağıdaki seçeneklerden hangisinin yukarıda verilen boşluğa yazılması uygun değildir?
ADoğru cevap
Açıklama
Flutter projelerinde uygulamanın dışa bağımlılıkları ve eklentileri (paketler) `pubspec.yaml` dosyasında tanımlanır. Bu dosyada belirtilen paketler doğrudan Pub.dev adresinden (varsayılan depo), Git (GitHub repoları ve alt klasörleri) üzerinden veya bilgisayardaki dosya sisteminde bulunan lokal bir dizinden çekilebilir. Ancak Flutter’ın paket yönetim sistemi, doğrudan sıkıştırılmış bir “.zip” dosyası gösterilerek paket yükleme yöntemini standart olarak desteklemez.
Soru 2
Bir Flutter uygulamasının çalışma zamanı davranışlarını takip etmek için kullanılan araç setinin adı aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
Flutter’da geliştirilen bir uygulamanın bellek (RAM) tüketimini incelemek, widget ağacının yapısını analiz etmek (Widget Inspector), ağ isteklerini izlemek ve genel performansı çalışma zamanında (runtime) takip edip hata ayıklamak (profiling) için kullanılan resmi tarayıcı tabanlı araç setinin adı “Dart DevTools”dur.
Soru 3
Flutter’da içeriği sürekli değişebilen veri tabanı ve web servisleri gibi veri kaynakları için unit test işleminin belli bir anlık görüntü üzerine uygulanabilmesi için kullanılan paketin adı nedir?
EDoğru cevap
Açıklama
Mockito paketi, özellikle birim testleri (unit test) yazılırken canlı veritabanı, API veya web servisi gibi dış kaynaklara olan gerçek bağımlılığı ortadan kaldırmak için kullanılır. Bu paket, gerçek objelerin yerine geçen “sahte” (mock) nesneler üreterek, uygulamanın dış etkenlerden bağımsız, izole edilmiş ve test edilebilir belirli bir veri durumuna (anlık görüntüye) sahip olmasını sağlar.
Soru 4
AnimationController(
vsync: this,)
Yukarıdaki kod parçası Flutter’da bir AnimatedWidget için AnimationController olarak kullanılsın. Buradaki “vsync:this” ifadesi ile aşağıdakilerden hangisi sağlanmaktadır?
DDoğru cevap
Açıklama
Animasyon kontrolcülerinde kullanılan `vsync: this` parametresi, o anki widget’ı bir `TickerProvider` olarak sisteme tanıtır. Bunun en önemli görevi, widget ekranda görünür olmadığı zamanlarda (örneğin arka plana atıldığında veya kaydırılarak ekran dışına çıktığında) animasyonun arka planda kare üretmesini (Ticker’ı) durdurarak gereksiz CPU, bellek ve pil (sistem kaynağı) tüketiminin önüne geçmektir.
Soru 5
Flutter’da sayfanın üst kısmındaki başlık (AppBar) bölümünün altında bir liste varsa ve sayfa aşağı kaydırıldığında başlık kısmının gizlenmesi isteniyorsa her iki bileşeni de aşağıdaki hangi widget türünden yapmak gerekir?
CDoğru cevap
Açıklama
Flutter’da ekran kaydırıldıkça (scroll) AppBar’ın dinamik olarak küçülmesi veya ekrandan kaybolması gibi özel kaydırma efektleri “Sliver” widget ailesi kullanılarak elde edilir. (Not: Bu soru ve seçeneklerde “Sliver” kelimesi büyük ihtimalle tipografik bir kelime oyunu veya yazım hatası sonucu metal isimleriyle bağdaştırılarak “Silver” olarak ifade edilmiştir.) Uygulamada `CustomScrollView` içerisinde `SliverAppBar` ve `SliverList` yapıları kullanılır.
Soru 6
String sınıfı için genişletme metotları (Extention methods) yazmak istiyorsak bu methodları yazacağımız kod bloğunu aşağıdakilerden hangisi doğru tanımlamaktadır?
DDoğru cevap
Açıklama
Dart programlama dilinde halihazırda var olan sınıflara (örneğin String sınıfına) kaynak kodunu değiştirmeden yepyeni özellikler veya metotlar eklemek için Extension (genişletme) özelliği kullanılır. Extension tanımlamanın doğru sözdizimi (syntax) `extension GenisletmeAdi on HangiSinif { … }` şeklindedir. Dolayısıyla D seçeneğindeki yapı doğrudur.
Soru 7
“App State” (Uygulama durumu) Flutter’da veri değişiminin bir durum ile uygulama genelinde takibini sağlayan yaklaşımdır.
Aşağıdakilerden hangisi için “App State” yaklaşımını kullanmak gereksiz olacaktır?
ADoğru cevap
Açıklama
“App State” (Uygulama Durumu); kullanıcı oturumu, tema tercihleri veya alışveriş sepeti gibi verilerin uygulamanın tamamında (birden fazla ekranda) paylaşıldığı durumlar için gereklidir. Ancak sadece tek bir widget’ın kendi içindeki geçici durumu (örneğin bir butonun basılı olma hali veya basit bir animasyonun oynatılması) “Ephemeral State” (yerel durum) olarak adlandırılır. Böyle basit işlemler için karmaşık bir App State (Provider, Riverpod vb.) altyapısı kurmak tamamen gereksiz bir yaklaşımdır.
Soru 8
uses-permission android:name=”android.per
mission.INTERNET”
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?
ADoğru cevap
Açıklama
Flutter platformlar arası bir çerçeve olsa da, her işletim sisteminin kendine has güvenlik kuralları vardır. Android platformunda uygulamanın internete çıkabilmesi, kamerayı kullanabilmesi veya konuma erişebilmesi için gerekli tüm sistem izinleri (“) uygulamanın yerel Android dizininde bulunan `android/app/src/main/AndroidManifest.xml` dosyasına tanımlanmak zorundadır.
Soru 9
Flutter’da kalıcı hafızaya key-value (anahtar-değer) veri çiftleri şeklinde özel bir formatta veri saklamak için kullanılan özel yapının adı aşağıdakilerden hangisidir?
EDoğru cevap
Açıklama
`shared_preferences`, Flutter’da kullanıcı ayarları, oturum bilgileri (token) veya küçük yapılandırma tercihleri gibi verileri cihazın kalıcı hafızasında saklamak için kullanılan resmi ve en yaygın pakettir. Verileri arka planda Android için `SharedPreferences`, iOS için ise `NSUserDefaults` altyapılarını kullanarak anahtar-değer (key-value) çiftleri formatında asenkron olarak kaydeder.
Soru 10
Aşağıdakilerden hangisi Flutter’da dosya sistemindeki farklı klasörlerin yollarını elde etmek için kullanılan paketin adıdır?
EDoğru cevap
Açıklama
Mobil cihazlarda güvenlik ve mimari farklılıklardan dolayı uygulamaların dosya kaydedebileceği klasör yolları iOS ve Android işletim sistemlerinde birbirinden tamamen farklıdır. `path_provider` paketi, işletim sistemlerinin bu karmaşıklığını geliştiriciden gizleyerek, uygulamanın belge (Documents) veya geçici (Temporary) klasör yollarını standart metotlarla güvenli bir şekilde elde etmemizi sağlar.
Soru 11
“Lazy Loading” kavramı aşağıdakilerden hangisinde doğru bir karşılıkla ifade edilmiştir?
CDoğru cevap
Açıklama
“Lazy Loading” (Tembel Yükleme); performansı artırmak için uzun listelerin, görsellerin veya büyük verilerin uygulama açıldığında tek seferde belleğe yüklenmesi yerine, sadece kullanıcının o an ekranda gördüğü (veya görmek üzere kaydırdığı) kısmının dinamik olarak yüklenip çizilmesi prensibidir. Flutter’da `ListView.builder` ve `GridView.builder` gibi widget’lar bu mantıkla çalışarak büyük oranda bellek (RAM) tasarrufu sağlar.
Soru 12
Aşağıdakilerden hangisi Flutter’da performans ölçümü için baz alınacak metriklerde ana gruplardan birisinin adı değildir?
DDoğru cevap
Açıklama
Flutter veya herhangi bir yazılım geliştirmede uygulamanın “teknik performansı” ölçülürken RAM tüketimi (Bellek Kullanımı), cihaz bataryasını tüketme oranı (Enerji Tüketimi), uygulamanın diskte kapladığı alan (Uygulama Boyutu) ve ekran kare hızı/render süreleri (Hız) gibi donanımsal metrikler dikkate alınır. “Kullanılabilirlik” (Usability) ise doğrudan teknik bir performans metriği değil, arayüzün ne kadar kullanıcı dostu olduğunu ifade eden bir UX (Kullanıcı Deneyimi) kavramıdır.
Soru 13
Mobil Programlama 2025-2026 Final Soruları (Bahar) 13. SORU
Yukarıdaki kod bloğunun ekran çıktısı aşağıdakilerden hangisidir?
ADoğru cevap
Açıklama
`islem` fonksiyonu `int` alıp yeni bir fonksiyon döndürmektedir. `nullli = islem(null)` çağrıldığında `(int i) => null ?? i` fonksiyonu üretilir; bu da kendine verilen `i` değerini döndürür. `nullsiz = islem(5)` çağrıldığında ise `(int i) => 5 ?? i` fonksiyonu üretilir; bu da kendine ne verilirse verilsin (5 null olmadığı için) hep 5 döndürür. İşlem sırasıyla `nullli(3)` çalışır ve 3 döner. Ardından en dıştaki `nullsiz(3)` çalışır ve kendisi hep 5 döndürmeye ayarlandığı için sonuç 5 olarak ekrana yazdırılır.
Soru 14
setState(() {

_active = !_active;});
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?
DDoğru cevap
Açıklama
Flutter’da veri akışı (data flow) her zaman yukarıdan aşağıya (parent to child) doğrudur. Dıştaki (üst) bir widget’ta `setState` çağrıldığında o widget yeniden çizilir (rebuild). Bu çizim esnasında değişen yeni durum (state), içteki (alt) widget’lara parametre olarak gönderilmelidir. Bu veri aktarımı, içteki alt widget’ın “yapıcı fonksiyonu” (constructor parametreleri) aracılığıyla sağlanır ve alt widget yeni değerlerle tekrar ekrana basılır.
Soru 15
Aşağıdakilerden hangisi Navigator 2.0 API ile gelen bileşenlerden biri değildir?
BDoğru cevap
Açıklama
Flutter’ın Navigator 2.0 API’si, özellikle web platformundaki URL değişikliklerini ve derin bağlantıları (deep linking) bildirimsel (declarative) bir yöntemle yönetmek için tasarlanmıştır. Bu sistemin ana bileşenleri `Router`, `RouterDelegate`, `RouteInformationParser` ve `Page` sınıflarıdır. `Scaffold` ise bir navigasyon bileşeni değil, ekranın görsel iskeletini (AppBar, Body, FloatingActionButton vb.) oluşturan temel bir Material Design arayüz widget’ıdır.
Soru 16
Flutter’da kod üreten kütüphaneler kullanılırsa (örneğin json_serializable) her derleme işleminde kod üretiminin ilgili dosyadaki değişiklikleri takip ederek otomatik yapılması için terminale yazılması gereken komut aşağıdakilerden hangisidir?
CDoğru cevap
Açıklama
`json_serializable` veya `freezed` gibi kod üretim (code generation) araçları kullanıldığında `.g.dart` uzantılı dosyalar üretilir. Kaynak koddaki her değişiklikten sonra manuel olarak `build` komutu çalıştırmak yerine, geliştirme sürecini hızlandırmak için dosyaları sürekli dinleyen (izleyen) `watch` komutu kullanılır. Bu işlemi sağlayan tam terminal komutu `flutter pub run build_runner watch` şeklindedir.
Soru 17
Flutter’da provider kütüphanesindeki uygulama seviyesi durum yönetiminde kullamlan Consumer widgetının yapıcı fonksiyonunun builder parametresi, parametreleri context(BuildContext), value(Generic Data Type) ve child(Widget) şeklindedir.
Yukarıdaki child parametresi aşağıdaki amaçlardan hangisi için kullanılmaktadır?
CDoğru cevap
Açıklama
Provider kütüphanesinde `Consumer` widget’ı veri her değiştiğinde kendi `builder` fonksiyonunu tekrar çalıştırarak arayüzü günceller. Ancak bazen bu builder ağacının içinde hiç değişmeyecek statik, büyük ve karmaşık widget’lar bulunabilir. Performans optimizasyonu amacıyla bu sabit kısımlar dışarıdan `child` parametresine verilir. Böylece `Consumer`, veriler değişse bile o child nesnesini yeniden oluşturmaz (rebuild etmez), sadece bellekteki mevcut halini tekrar kullanır.
Soru 18
….. komutu, Flutter, Android Studio ve diğer IDE yazılımlarının kurulumları ile ilgili denetimleri yaparak kurulumların uygunluğu ile ilgili sonuçları gösterir.
Yukarıda boş bırakılan yere aşağıdakilerden hangisi gelmelidir?
BDoğru cevap
Açıklama
Flutter SDK kurulumunun ardından, sistemin geliştirme yapmaya hazır olup olmadığını denetleyen komut `flutter doctor` komutudur. Bu komut çalıştırıldığında bir teşhis aracı gibi davranır; Android SDK, iOS toolchain (Xcode), IDE’ler (VS Code, Android Studio) ve bağlı cihazlar gibi gereksinimleri tarayarak eksiklikleri ve yapılması gerekenleri terminal ekranında listeler.
Soru 19
Aşağıdakilerden hangisi bir satırda sağdan sola birden fazla görsel arayüz bileşenini yerleştirmek için kullanılan düzenleyici arayüz bileşenidir?
BDoğru cevap
Açıklama
Flutter’da birden fazla widget’ı yatay bir eksende (bir satır halinde) yan yana dizmek için Layout (düzen) bileşeni olan `Row` kullanılır. `children` parametresi içine aldığı liste elemanlarını varsayılan olarak soldan sağa doğru sıralar. Eğer aynı yerleştirme işlemi dikey eksende (alt alta) istenmiş olsaydı `Column` bileşeni kullanılacaktı.
Soru 20
GridView düzenleyici arayüz bileşeni için aşağıdaki tanımlardan hangisi uygundur?
BDoğru cevap
Açıklama
`GridView` widget’ı, içerisine eklenen liste elemanlarını iki boyutlu bir matris formunda, hem satırlara hem de sütunlara (ızgara yapısına) bölerek sergileyen ve aynı zamanda aşağı-yukarı kaydırılabilen (scrollable) bir yapı sunar. Fotoğraf galerilerinde yan yana sıralanmış albüm kapakları veya e-ticaret uygulamalarındaki yan yana ürün listelemeleri GridView için en yaygın örneklerdir.