
Yukarıdaki şekilde kodlaması başlayan bir Widget sınıfı için hangi seçenek her zaman doğrudur?
Kaynak: https://lolonolo.com/2026/03/07/mobil-programlama-2024-2025-vize-sorulari-bahar/
Mobil Programlama 2024-2025 Vize Soruları (Bahar)
Mobil dünyada büyük bir devrim yaratan akıllı telefonları klasik cep telefonlarından ayıran en belirgin özellik, kullanıcılara sonradan uygulama yükleme imkânı sunmalarıdır. Bu ekosistemde 2020 yılı civarında pazar payı liderliğini Android üstlenmiştir. Modern uygulama geliştirme süreçlerinde öne çıkan Flutter, Google tarafından geliştirilen bir yazılım geliştirme kitidir (SDK). Flutter hakkında yaygın bir yanlış algı, onun bağımsız bir dil olduğudur; oysa Flutter, Dart’tan bağımsız ayrı bir programlama dili değildir, Dart dilini kullanan bir çerçevedir (framework). Geliştiriciler, ihtiyaç duydukları açık kaynak kütüphanelere ise resmi paket yöneticisi olan pub.dev üzerinden erişirler.
Flutter’ın kalbi olan Dart dili, strongly typed (güçlü tip tanımlı) ve nesne yönelimli bir dildir. Bellekte verileri anahtar-değer çiftleri şeklinde saklamak için Map yapısı kullanılırken, veri türü kullanım anında belirlenen List gibi yapılar Jenerik (Generic) bir tür olarak tanımlanır. Kod yazımında bir listedeki içeriği başka bir listeye aktarmak için …? (üç nokta soru işareti) operatörüne başvurulur. Ayrıca, bir sınıfa ait olmayan bir fonksiyon dinamik olarak çağrıldığında sistemin çökmesini engelleyen noSuchMethod yapısı, hata yönetiminde kritik rol oynar.
Flutter’da her şey bir widget’tır. Kullanıcı etkileşimi olmayan sabit bileşenler için Stateless Widget sınıflarından miras alınır. Dinamik bileşenlerde ise setState() metodu ile arayüz güncellemesi tetiklenir. Uygulamalara Android standartlarında profesyonel bir görünüm kazandırmak için material.dart kütüphanesi (Material Design) kullanılır. Görsel düzenlemede Container widget’ı; renk, kenarlık ve boşluk ayarları için idealdir; ancak objeleri yan yana sıralamak için uygun değildir (bu iş için Row kullanılır).
Yerleşim düzeninde (Layout) kısıtlar hayati öneme sahiptir. Örneğin, en üst seviyedeki bir Container’a verilen 100×100 boyutunun geçersiz kalıp ekranı kaplamasının sebebi, üst seviyedeki kısıtın (constraint) kendisini buna zorlamasıdır. Çoklu eleman dizilimlerinde ise Column widget’ı içindeki elemanların yatayda yerleşimi, crossAxisAlignment parametresi ile kontrol edilir.
Flutter projelerinde resim, JSON veya ses gibi varlıklara erişmek için services.dart kütüphanesindeki rootBundle yapısı kullanılır. Projeye dahil edilen aynı isimli resim dosyalarının farklı klasörlerde saklanması genellikle farklı temalarda (veya çözünürlüklerde) kullanmak amacına hizmet eder. Platform desteği açısından Flutter; Android, iOS, Windows, Linux ve Web’i desteklerken, 2021 itibarıyla HarmonyOS resmi destek kapsamında değildir. Windows masaüstü desteğini etkinleştirmek için terminale flutter config komutu girilmelidir.
Sayfalar arası geçişte Navigator API kullanılır. Navigator.pushNamed() fonksiyonu ile hedef sayfaya veri göndermek için arguments parametresi kullanılır. Uygulama rotalarının (routes) tanımlandığı MaterialApp bileşeninde ise bu rotalar Map<String, WidgetBuilder> türünde değer kabul eder.

