Flutter Nedir, Dart Nedir? Mobil Uygulama Geliştirmeye Detaylı Başlangıç Rehberi
Flutter nedir, Dart nedir, mobil uygulama geliştirme sürecinde nasıl kullanılır? Örnek kodlar, sade açıklamalar, avantajlar ve dikkat edilmesi gerekenler bu rehberde.
Mehmet Karataş
Yazar

Flutter Nedir, Dart Nedir? Mobil Uygulama Geliştirmeye Samimi ve Detaylı Bir Giriş
Flutter Nedir, Dart Nedir?
Bir mobil uygulama fikriniz olduğunu düşünün.
Aklınızda net bir şey var:
Kullanıcı giriş yapacak, birkaç ekran olacak, bildirim gelecek, belki ödeme sistemi olacak, belki de bir admin panelinden her şeyi yöneteceksiniz.
Sonra araştırmaya başlıyorsunuz:
“Android uygulama nasıl yapılır?”
“iOS uygulama için ayrı yazılım mı gerekir?”
“Flutter nedir?”
“Dart nedir?”
“Tek uygulama hem Android hem iPhone’da çalışır mı?”
İşte Flutter ve Dart tam bu noktada karşımıza çıkıyor.
Flutter, tek bir kod tabanı ile mobil, web, masaüstü ve gömülü sistemler için uygulama geliştirmeye yarayan açık kaynaklı bir framework’tür. Resmî Flutter dokümantasyonunda da Flutter’ın tek kod tabanından çoklu platform uygulamaları geliştirmeye odaklandığı belirtilir.
Dart ise Flutter’ın kullandığı programlama dilidir. Dart’ın resmî tanımına göre bu dil, farklı platformlarda hızlı uygulamalar geliştirmek için tasarlanmış, üretken ve taşınabilir bir programlama dilidir.
Kısaca şöyle düşünebiliriz:
Dart, konuştuğumuz dildir.
Flutter ise bu dille uygulamayı inşa ettiğimiz araç takımıdır.
Bir benzetme yapalım.
Bir ev yaptığınızı düşünün.
Dart, ustanın kullandığı dil ve ölçü sistemidir.
Flutter ise tuğlalar, kapılar, pencereler, boya, tesisat ve dekorasyon araçlarıdır.
Yani Dart olmadan Flutter’ı tam anlamıyla kullanamazsınız. Flutter olmadan da Dart ile mobil uygulama geliştirme deneyimi bu kadar güçlü olmaz.
Flutter Nedir?
Flutter, Google tarafından geliştirilen açık kaynaklı bir kullanıcı arayüzü framework’üdür. Temel amacı, geliştiricilerin tek bir kod tabanı ile birden fazla platforma uygulama çıkarabilmesini sağlamaktır.
Yani Flutter ile şunlar geliştirilebilir:
Android uygulama
iOS uygulama
Web uygulaması
Windows masaüstü uygulaması
macOS uygulaması
Linux uygulaması
Bazı gömülü sistem arayüzleri
Buradaki en önemli nokta şudur:
Normalde Android için ayrı, iOS için ayrı yazılım geliştirmek gerekebilir. Android tarafında Kotlin veya Java, iOS tarafında Swift kullanılır. Bu da iki farklı ekip, iki farklı kod yapısı ve iki farklı bakım süreci anlamına gelebilir.
Flutter ise tek bir kod tabanı üzerinden hem Android hem iOS tarafına uygulama çıkarma imkânı sunar.
Bu her projede “tek tuşla her şey bitti” anlamına gelmez. Bazı projelerde platforma özel ayarlar gerekebilir. Ama genel mantık şudur:
Uygulamanın büyük bölümü tek yerden geliştirilir, tasarlanır ve yönetilir.
Bu da özellikle girişimler, küçük işletmeler, hizmet sağlayıcılar ve hızlı ürün çıkarmak isteyen ekipler için ciddi avantaj sağlar.
Dart Nedir?
Dart, Flutter uygulamaları yazmak için kullanılan programlama dilidir.
Dart’ı şu şekilde düşünebiliriz:
Kullanıcının butona basmasını, ekrandaki yazının değişmesini, verilerin kaydedilmesini, internetten bilgi çekilmesini, giriş-çıkış işlemlerini ve uygulamanın birçok mantıksal davranışını Dart ile yazarız.
Örneğin bir kullanıcı giriş ekranında e-posta ve şifre yazdı.
Bu durumda Dart tarafında şunlar kontrol edilebilir:
E-posta boş mu?
Şifre yeterince uzun mu?
Kullanıcı veritabanında var mı?
Giriş başarılıysa hangi sayfaya yönlendirilecek?
Hata varsa kullanıcıya ne gösterilecek?
Dart sadece Flutter için yoktur. Web, sunucu tarafı, komut satırı uygulamaları gibi alanlarda da kullanılabilir. Ancak Dart’ın en çok bilindiği alan Flutter ile mobil uygulama geliştirmedir.
Dart’ın desteklediği temel veri tipleri arasında int, double, String, bool, List, Set, Map, Function ve Null gibi yapılar bulunur.
Bunu daha sade anlatalım.
Dart’ta:
Sayılar tutulur.
Yazılar tutulur.
Doğru/yanlış bilgileri tutulur.
Listeler oluşturulur.
Kullanıcı verileri yönetilir.
Fonksiyonlarla işlemler yapılır.
Sınıflarla daha düzenli yapılar kurulur.
Flutter ve Dart Arasındaki Fark Nedir?
En basit cevap şu:
Dart bir programlama dilidir. Flutter ise Dart ile kullanılan uygulama geliştirme framework’üdür.
Konu | Dart | Flutter |
|---|---|---|
Ne işe yarar? | Kod yazmayı sağlar | Uygulama arayüzü ve yapısı kurmayı sağlar |
Türü | Programlama dili | Framework / UI toolkit |
Kullanım alanı | Mantık, veri, fonksiyon, sınıf | Ekranlar, butonlar, listeler, animasyonlar |
Örnek | Kullanıcı adını kontrol etmek | Giriş ekranı tasarlamak |
Birlikte kullanımı | Flutter uygulamasının kod dili | Dart kodlarıyla uygulamayı oluşturur |
Kısa bir örnek:
Dart tarafında şöyle deriz:
String kullaniciAdi = "Mehmet";
Flutter tarafında bu bilgiyi ekranda şöyle gösteririz:
Text("Merhaba Mehmet")
Yani Dart veriyi ve mantığı yönetir. Flutter ise bunu kullanıcıya güzel ve kullanılabilir bir ekran olarak gösterir.
Flutter Neden Bu Kadar Popüler Oldu?
Flutter’ın popüler olmasının temel sebebi, uygulama geliştirme sürecini hızlandırmasıdır.
Bir müşteri düşünün.
Hem Android hem iOS uygulama istiyor.
Tasarımı modern olsun diyor.
Panelden içerik yönetmek istiyor.
Bildirim gitsin istiyor.
Bütçesi de sınırsız değil.
Bu senaryoda Flutter iyi bir seçenek olabilir. Çünkü aynı uygulamanın iki ayrı teknolojiyle baştan sona geliştirilmesi yerine, tek kod tabanı üzerinden ilerlemek mümkündür.
Flutter’ın öne çıkan tarafları şunlardır:
1. Tek Kod Tabanı
Aynı proje üzerinden Android ve iOS uygulaması geliştirilebilir.
Bu, özellikle MVP yani ilk ürün sürümü çıkarırken avantaj sağlar. MVP, fikrin temel özelliklerle test edilen ilk çalışan sürümüdür.
Örneğin bir randevu uygulaması yapıyorsanız ilk sürümde şunlar olabilir:
Kullanıcı kaydı
Hizmet seçimi
Randevu alma
Bildirim
Admin panelinden randevu yönetimi
Bunları Flutter ile tek ana yapı üzerinden geliştirmek mümkündür.
2. Güçlü Arayüz Oluşturma
Flutter’da arayüzler widget mantığıyla kurulur. Flutter dokümantasyonunda da kullanıcı arayüzünün widget’lardan oluştuğu ve widget’ların mevcut duruma göre ekranın nasıl görüneceğini tarif ettiği anlatılır.
Widget kelimesi ilk başta teknik gelebilir. Ama aslında çok basit.
Flutter’da ekranda gördüğünüz birçok şey bir widget’tır:
Yazı
Buton
Görsel
Kart
Liste
Form alanı
Menü
Sayfa yapısı
Yani Flutter’da uygulama ekranı küçük parçaların birleşmesiyle oluşur.
Bir profil ekranı düşünelim:
Profil fotoğrafı bir widget
Kullanıcı adı bir widget
Açıklama metni bir widget
“Profili Düzenle” butonu bir widget
İstatistik kartları birer widget
Bu parçalar birleşir ve tam ekran oluşur.
3. Hızlı Geliştirme Deneyimi
Flutter geliştiricilere hızlı deneme ve görsel düzenleme imkânı sunar. Geliştirici bir butonun rengini, yazı boyutunu veya ekran düzenini değiştirdiğinde bunu geliştirme sürecinde hızlı şekilde görebilir.
Bu, özellikle tasarım üzerinde çok fazla düzenleme yapılan projelerde zaman kazandırır.
4. Modern Görünüm
Flutter ile oldukça modern, akıcı ve özel tasarımlar yapılabilir.
Hazır bileşenlerle sade uygulamalar geliştirilebilir. Daha özel bir marka dili istenirse özel kartlar, animasyonlar, geçişler ve ekran yapıları da hazırlanabilir.
Örneğin:
Eğitim koçluğu uygulaması
Restoran sipariş uygulaması
Randevu sistemi
E-ticaret mobil uygulaması
Takip ve analiz uygulaması
İşletme yönetim paneli
Sosyal etkileşim uygulaması
gibi birçok farklı yapı Flutter ile geliştirilebilir.
Dart Öğrenmeden Flutter Öğrenilir mi?
Kısa cevap: Biraz başlanır ama sağlam ilerlemek için Dart öğrenmek gerekir.
Bazı kişiler direkt Flutter ekranları yaparak başlamak ister. Bu yanlış değildir. Hatta görsel sonuç görmek motivasyon sağlar.
Ama şu noktaya gelindiğinde Dart bilgisi şart olur:
Kullanıcı giriş sistemi
Form kontrolü
Listeleme
API bağlantısı
Veritabanı işlemleri
State management
Hata yönetimi
Ödeme sistemi
Bildirim
Rol bazlı ekranlar
Yani sadece ekrana yazı ve buton koymak için çok derin Dart bilmek gerekmez. Ama gerçek bir uygulama geliştirmek için Dart temelleri bilinmelidir.
Dart Temelleri: Basit ve Anlaşılır Örnekler
Şimdi Dart’ı biraz örneklerle tanıyalım.
1. Değişkenler
Değişken, bilgiyi geçici olarak tuttuğumuz alandır.
Mesela bir kullanıcının adını, yaşını ve aktif olup olmadığını tutalım:
String ad = "Mehmet";
int yas = 28;
bool aktifMi = true;
print(ad);
print(yas);
print(aktifMi);
Burada:
Stringyazı tutar.inttam sayı tutar.booldoğru/yanlış tutar.print()ekrana çıktı verir.
Gerçek uygulamada bu bilgiler şöyle kullanılabilir:
String kullaniciAdi = "Ayşe";
bool abonelikAktifMi = true;
if (abonelikAktifMi) {
print("Hoş geldin $kullaniciAdi, hesabın aktif.");
} else {
print("Hesabın pasif görünüyor.");
}
Bu küçük örnekte bile gerçek uygulama mantığını görüyoruz.
Kullanıcının durumu kontrol edilir ve ona göre farklı mesaj gösterilir.
2. Listeler
Liste, birden fazla veriyi bir arada tutar.
Örneğin ders listesi:
List<String> dersler = ["Matematik", "Türkçe", "Fen"];
print(dersler[0]);
print(dersler[1]);
Çıktı:
Matematik
Türkçe
Bir eğitim uygulaması yaptığımızı düşünelim. Öğrencinin görevlerini listeleyebiliriz:
List<String> gorevler = [
"Matematik 30 soru çöz",
"Paragraf 20 soru çöz",
"Fen konu tekrarı yap"
];
for (String gorev in gorevler) {
print(gorev);
}
Bu yapı, uygulamada görev kartları oluşturmak için kullanılabilir.
3. Map Kullanımı
Map, anahtar-değer mantığıyla çalışır.
Bir kullanıcının bilgilerini şöyle tutabiliriz:
Map<String, dynamic> kullanici = {
"ad": "Mehmet",
"email": "mehmet@example.com",
"aktif": true,
"puan": 85
};
print(kullanici["ad"]);
print(kullanici["puan"]);
Gerçek hayatta API’den veya veritabanından gelen bilgiler çoğu zaman buna benzer yapılarda olur.
Örneğin Supabase, Firebase veya kendi backend sisteminizden kullanıcı bilgisi çektiğinizde bu verileri Dart tarafında işlersiniz.
4. Fonksiyonlar
Fonksiyon, tekrar tekrar kullanabileceğimiz küçük işlem bloklarıdır.
Örneğin iki sayıyı toplayalım:
int topla(int a, int b) {
return a + b;
}
void main() {
int sonuc = topla(10, 20);
print(sonuc);
}
Bir uygulama örneği yapalım.
Kullanıcının ödeme durumunu kontrol eden basit bir fonksiyon:
String odemeDurumu(bool odendiMi) {
if (odendiMi) {
return "Ödeme tamamlandı";
} else {
return "Ödeme bekleniyor";
}
}
void main() {
print(odemeDurumu(false));
}
Bu mantık bir mobil uygulamada ödeme kartı üzerinde kullanılabilir.
5. Sınıflar
Sınıflar, verileri daha düzenli şekilde modellemek için kullanılır.
Örneğin bir öğrenci modeli oluşturalım:
class Ogrenci {
final String ad;
final String sinif;
final int hedefNet;
Ogrenci({
required this.ad,
required this.sinif,
required this.hedefNet,
});
}
void main() {
Ogrenci ogrenci = Ogrenci(
ad: "Zeynep",
sinif: "12. Sınıf",
hedefNet: 85,
);
print(ogrenci.ad);
print(ogrenci.hedefNet);
}
Bu yapı gerçek projelerde çok önemlidir.
Çünkü uygulamada her şeyi dağınık şekilde tutmak yerine modellerle çalışmak daha sağlıklıdır.
Örneğin:
Kullanıcı modeli
Ürün modeli
Sipariş modeli
Randevu modeli
Ders modeli
Bildirim modeli
Ödeme modeli
oluşturulabilir.
Bu sayede proje büyüdüğünde kod daha okunabilir ve yönetilebilir olur.
6. Null Safety
Dart’ın önemli özelliklerinden biri null safety mantığıdır.
Null, bir değerin boş olması anlamına gelir.
Örneğin bir kullanıcının telefon numarası henüz kayıtlı olmayabilir. Bu durumda değişkenin boş olabileceğini Dart’a söylemek gerekir.
String? telefon;
telefon = null;
telefon = "0555 555 55 55";
Buradaki ? işareti şu anlama gelir:
“Bu değer boş olabilir.”
Bu küçük detay, uygulamada oluşabilecek birçok hatayı daha erken fark etmeye yardımcı olur.
Örneğin telefon numarası olmayan kullanıcıda uygulamanın çökmesini istemeyiz.
7. Asenkron İşlemler
Mobil uygulamalarda her şey anında olmaz.
Mesela:
Veritabanından kullanıcı çekilir.
İnternetten ürün listesi gelir.
Ödeme sonucu beklenir.
Bildirim servisi cevap verir.
Dosya yüklenir.
Bu işlemler zaman alır. Dart’ta bu tür işlemler için async ve await kullanılır.
Basit bir örnek:
Future<String> kullaniciGetir() async {
await Future.delayed(Duration(seconds: 2));
return "Mehmet";
}
void main() async {
String kullanici = await kullaniciGetir();
print("Hoş geldin $kullanici");
}
Burada uygulama 2 saniye bekler ve sonra kullanıcı bilgisini getirir.
Gerçek projede bu bekleme bir API isteği olabilir.
Flutter Temelleri: Uygulama Ekranı Nasıl Oluşur?
Flutter’da ekranlar widget’larla kurulur.
En basit Flutter örneği şöyle görünür:
import 'package:flutter/material.dart';
void main() {
runApp(const BenimUygulamam());
}
class BenimUygulamam extends StatelessWidget {
const BenimUygulamam({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text("İlk Flutter Uygulamam"),
),
body: const Center(
child: Text("Merhaba Flutter"),
),
),
);
}
}
Bu kod ilk bakışta uzun görünebilir. Parça parça açalım.
main()uygulamanın başlangıç noktasıdır.runApp()Flutter uygulamasını çalıştırır.MaterialApp()uygulamanın genel yapısını kurar.Scaffold()sayfa iskeletidir.AppBar()üst başlık alanıdır.bodyekranın ana içeriğidir.Text()yazı gösterir.Center()içindeki öğeyi ortalar.
Yani bu kodun anlamı şudur:
“Bir uygulama başlat. İçinde bir sayfa olsun. Sayfanın üstünde başlık, ortasında da Merhaba Flutter yazısı olsun.”
StatelessWidget ve StatefulWidget Nedir?
Flutter’da iki temel widget türüyle sık karşılaşılır:
StatelessWidgetStatefulWidget
StatelessWidget
Eğer ekrandaki içerik değişmeyecekse StatelessWidget kullanılabilir.
Örneğin sadece bir başlık ve açıklama gösteren kart:
class BilgiKarti extends StatelessWidget {
const BilgiKarti({super.key});
@override
Widget build(BuildContext context) {
return Card(
child: Padding(
padding: EdgeInsets.all(16),
child: Text("Flutter ile tek kod tabanından uygulama geliştirilebilir."),
),
);
}
}
Bu kart sabittir. Kullanıcı tıklayınca değişmez, sayaç artmaz, form güncellenmez.
StatefulWidget
Eğer ekranda değişen bir durum varsa StatefulWidget kullanılır.
Örneğin sayaç:
class SayacEkrani extends StatefulWidget {
const SayacEkrani({super.key});
@override
State<SayacEkrani> createState() => _SayacEkraniState();
}
class _SayacEkraniState extends State<SayacEkrani> {
int sayac = 0;
void artir() {
setState(() {
sayac++;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
Text("Sayaç: $sayac"),
ElevatedButton(
onPressed: artir,
child: Text("Artır"),
),
],
);
}
}
Burada kullanıcı butona bastığında sayac değişir.setState() ise ekrana “bu veri değişti, ekranı yenile” demektir.
Bu mantık gerçek uygulamalarda çok kullanılır.
Örneğin:
Sepete ürün ekleme
Görev tamamlandı işaretleme
Beğeni sayısını artırma
Form alanını güncelleme
Ödeme durumunu değiştirme
Tema değiştirme
gibi işlemlerde durum yönetimi gerekir.
Flutter’da Basit Bir Giriş Ekranı Örneği
Şimdi biraz daha gerçekçi bir örnek yapalım.
Bir giriş ekranında e-posta ve şifre alanı olsun. Butona basınca kontrol etsin.
class GirisEkrani extends StatefulWidget {
const GirisEkrani({super.key});
@override
State<GirisEkrani> createState() => _GirisEkraniState();
}
class _GirisEkraniState extends State<GirisEkrani> {
final emailController = TextEditingController();
final sifreController = TextEditingController();
String mesaj = "";
void girisYap() {
String email = emailController.text;
String sifre = sifreController.text;
if (email.isEmpty || sifre.isEmpty) {
setState(() {
mesaj = "Lütfen e-posta ve şifre alanlarını doldurun.";
});
return;
}
setState(() {
mesaj = "Giriş kontrol ediliyor...";
});
// Burada normalde backend veya Firebase/Supabase kontrolü yapılır.
}
@override
Widget build(BuildContext context) {
return Column(
children: [
TextField(
controller: emailController,
decoration: InputDecoration(
labelText: "E-posta",
),
),
TextField(
controller: sifreController,
obscureText: true,
decoration: InputDecoration(
labelText: "Şifre",
),
),
ElevatedButton(
onPressed: girisYap,
child: Text("Giriş Yap"),
),
Text(mesaj),
],
);
}
}
Bu örnekte Flutter tarafında şunları görüyoruz:
Kullanıcıdan veri alma
Butona tıklama
Boş alan kontrolü
Ekranda mesaj gösterme
Basit durum yönetimi
Gerçek uygulamada bu akışın devamında Supabase, Firebase veya özel backend sistemine istek gönderilir.
Flutter Backend Olmadan Çalışır mı?
Evet, bazı basit uygulamalar backend olmadan çalışabilir.
Örneğin:
Hesap makinesi
Basit not uygulaması
Tanıtım uygulaması
Statik içerik gösteren uygulama
Küçük offline araçlar
Ama kullanıcı hesabı, veri kaydı, ödeme, mesajlaşma, bildirim, admin paneli, dosya yükleme gibi özellikler varsa backend gerekir.
Backend’i sade şekilde açıklayalım:
Backend, uygulamanın görünmeyen ama verileri yöneten tarafıdır.
Kullanıcı girişleri, kayıtlar, ödeme bilgileri, mesajlar, bildirimler, dosyalar ve admin paneli gibi işlemler genellikle backend tarafında çalışır.
Flutter ön tarafı yani kullanıcının gördüğü ekranı oluşturur. Backend ise verinin güvenli ve düzenli şekilde yönetilmesini sağlar.
Örneğin bir randevu uygulaması yapıyorsunuz.
Flutter tarafında kullanıcı şunları görür:
Hizmet listesi
Tarih seçimi
Saat seçimi
Randevu oluştur butonu
Backend tarafında ise şunlar çalışır:
Bu saat uygun mu?
Aynı saate başka randevu var mı?
Kullanıcı gerçekten giriş yapmış mı?
Randevu veritabanına kaydedildi mi?
İşletmeye bildirim gitti mi?
Bu yüzden ciddi projelerde Flutter tek başına yeterli değildir. Yanına doğru backend mimarisi de kurulmalıdır.
Flutter Hangi Projeler İçin Uygundur?
Flutter birçok proje için uygundur. Özellikle aynı anda Android ve iOS uygulama geliştirmek isteyenler için güçlü bir seçenektir.
Flutter şu projelerde tercih edilebilir:
Randevu uygulamaları
Eğitim ve koçluk uygulamaları
E-ticaret uygulamaları
Sipariş ve teslimat uygulamaları
Fitness ve sağlık takip uygulamaları
Kurum içi takip sistemleri
CRM benzeri mobil paneller
Öğrenci takip uygulamaları
İçerik ve abonelik uygulamaları
Harita ve konum tabanlı uygulamalar
Mesajlaşma ve bildirim odaklı uygulamalar
Admin panel destekli mobil uygulamalar
Ama her proje için otomatik olarak en doğru seçenek demek doğru olmaz.
Örneğin çok ağır grafik motoru isteyen oyunlarda farklı teknolojiler gerekebilir. Çok özel donanım seviyesinde çalışan bazı uygulamalarda native geliştirme daha uygun olabilir.
Ama çoğu ticari mobil uygulama için Flutter oldukça güçlü bir seçenektir.
Flutter ile Mobil Uygulama Geliştirme Süreci Nasıl İşler?
Bir Flutter uygulaması geliştirmek sadece kod yazmak değildir.
Sağlıklı bir süreç genelde şu adımlarla ilerler:
1. Fikir ve İhtiyaç Analizi
İlk soru şudur:
“Bu uygulama kimin hangi sorununu çözecek?”
Örneğin:
Kullanıcı randevu mu alacak?
Öğrenci program mı takip edecek?
Müşteri sipariş mi verecek?
İşletme talepleri mi yönetecek?
Kullanıcılar birbirine teklif mi gönderecek?
Bu aşamada uygulamanın amacı netleşir.
2. Özelliklerin Belirlenmesi
Sonra uygulamada hangi özelliklerin olacağı belirlenir.
Örneğin:
Kullanıcı kaydı
Giriş sistemi
Profil sayfası
Listeleme ekranı
Detay ekranı
Bildirim
Ödeme
Mesajlaşma
Admin paneli
Dosya yükleme
Harita
Raporlama
Burada önemli olan her şeyi ilk sürüme koymaya çalışmamaktır.
İlk sürüm net, sade ve test edilebilir olmalıdır.
3. Ekran Akışlarının Planlanması
Kullanıcı uygulamayı açınca ne görecek?
Örneğin bir eğitim uygulamasında akış şöyle olabilir:
Giriş ekranı
Ana sayfa
Programlar
Görev detayları
Deneme sonuçları
Mesajlar
Profil
Bu akış netleşmeden doğrudan kod yazmak, ileride karışıklık çıkarabilir.
4. Tasarım
Flutter uygulamalarında tasarım çok önemlidir.
Çünkü kullanıcı uygulamanın arkasındaki kodu görmez.
Gördüğü şey ekrandır.
İyi bir tasarımda şunlara dikkat edilir:
Okunabilir yazılar
Rahat butonlar
Temiz boşluklar
Anlaşılır ikonlar
Mobil uyumlu ekranlar
Gereksiz karmaşadan uzak yapı
Kullanıcının ne yapacağını kolay anlaması
Sadece güzel görünmek yetmez. Kullanıcı uygulamada kaybolmamalıdır.
5. Flutter Geliştirme
Bu aşamada ekranlar, widget’lar, yönlendirmeler, formlar, listelemeler ve kullanıcı etkileşimleri geliştirilir.
Örneğin:
Ana sayfa
Giriş ekranı
Kayıt ekranı
Profil ekranı
Detay sayfaları
Ayarlar
Bildirim ekranı
Ödeme ekranı
Flutter tarafında kullanıcının gördüğü ve kullandığı tüm yapı hazırlanır.
6. Backend ve Veritabanı
Eğer uygulama veri tutacaksa backend gerekir.
Bu aşamada şunlar planlanır:
Kullanıcı tablosu
Ürün veya hizmet verileri
Siparişler
Randevular
Mesajlar
Ödeme kayıtları
Dosyalar
Yetkiler
Admin paneli
Supabase, Firebase veya özel backend sistemleri bu noktada tercih edilebilir.
7. Test Süreci
Uygulama geliştirildikten sonra test edilmelidir.
Testte şunlara bakılır:
Giriş yapılıyor mu?
Veriler doğru geliyor mu?
Butonlar çalışıyor mu?
Farklı ekran boyutlarında taşma var mı?
Android ve iOS tarafında sorun var mı?
İnternet yavaşken uygulama ne yapıyor?
Hatalı işlemde kullanıcıya doğru mesaj gösteriliyor mu?
Test aşaması atlanırsa uygulama yayına çıktıktan sonra küçük hatalar büyük sorunlara dönüşebilir.
8. Yayınlama
Android için Google Play Store, iOS için App Store süreçleri vardır.
Yayınlama aşamasında şunlar hazırlanır:
Uygulama adı
Açıklama metni
Ekran görüntüleri
Logo
Gizlilik politikası
Kullanım şartları
Paket adı
Sürüm bilgisi
Bu aşama da teknik bilgi ister. Özellikle iOS tarafında Apple Developer hesabı ve mağaza kuralları dikkat ister.
9. Bakım ve Geliştirme
Uygulama yayınlandıktan sonra iş bitmez.
Asıl süreç çoğu zaman yayından sonra başlar.
Çünkü kullanıcılar geri bildirim verir. Yeni ihtiyaçlar çıkar. Bazı ekranlar iyileştirilir. Performans düzenlemeleri yapılır. İş modeli değişebilir.
Bu yüzden mobil uygulama geliştirme süreci yaşayan bir süreçtir.
Flutter Uygulama Geliştirme Süresi Neye Göre Değişir?
Flutter ile uygulama geliştirme süresi projenin kapsamına göre değişir.
Basit bir tanıtım uygulaması kısa sürede hazırlanabilirken; kullanıcı rolleri, ödeme, bildirim, mesajlaşma, admin paneli ve raporlama içeren bir uygulama daha uzun sürebilir.
Süreyi etkileyen başlıca noktalar:
Ekran sayısı
Tasarım detayı
Kullanıcı rolleri
Backend ihtiyacı
Admin paneli
Ödeme sistemi
Bildirim sistemi
Harita/konum özelliği
Mesajlaşma
Dosya yükleme
API bağlantıları
App Store ve Google Play yayın süreci
Test kapsamı
Bakım ve güncelleme ihtiyacı
Bu yüzden “Flutter uygulama kaç günde yapılır?” sorusunun tek cevabı yoktur.
Daha doğru soru şudur:
“Uygulamanın ilk çalışan sürümünde hangi özellikler olacak?”
Bu soruya net cevap verilirse süre ve maliyet daha sağlıklı hesaplanır.
Flutter ile Uygulama Geliştirirken Nelere Dikkat Edilmeli?
Flutter güçlü bir araçtır ama doğru kullanılmadığında proje karmaşık hale gelebilir.
Dikkat edilmesi gereken bazı noktalar şunlardır:
1. Kod Yapısı Temiz Olmalı
Küçük projelerde her şeyi tek dosyaya yazmak kolay gelebilir. Ama proje büyüdükçe bu yapı sorun çıkarır.
Daha doğru yaklaşım:
Ekranları ayırmak
Widget’ları parçalamak
Modeller oluşturmak
Servis katmanı kullanmak
Veritabanı işlemlerini düzenli yönetmek
State management yapısını doğru seçmek
Temiz kod, projenin gelecekte geliştirilebilir olmasını sağlar.
2. Tasarım Mobil Kullanıma Uygun Olmalı
Web sitesinde iyi görünen bir yapı mobilde iyi çalışmayabilir.
Mobil uygulamada:
Butonlar yeterince büyük olmalı
Yazılar okunabilir olmalı
Formlar yormamalı
Kullanıcı az adımda işlem yapabilmeli
Ekranlar küçük cihazlarda taşmamalı
Kullanıcı deneyimi zayıfsa teknoloji ne kadar iyi olursa olsun uygulama sevilmez.
3. Backend Güvenli Kurulmalı
Kullanıcı verisi varsa güvenlik önemlidir.
Özellikle:
Giriş sistemi
Yetkilendirme
Ödeme bilgileri
Kişisel veriler
Dosya yükleme
Admin paneli
gibi alanlarda doğru kurallar oluşturulmalıdır.
Örneğin bir öğrenci sadece kendi programını görmeli. Başka öğrencinin verisine erişmemelidir.
Bu basit gibi görünür ama backend tarafında doğru kurgulanmazsa ciddi sorunlara yol açabilir.
4. Performans Takip Edilmeli
Flutter uygulamaları doğru yazıldığında oldukça akıcı çalışabilir. Ancak gereksiz veri çekmek, büyük görseller kullanmak, kötü liste yapıları kurmak veya her değişiklikte tüm ekranı yenilemek performansı düşürebilir.
Bu yüzden:
Görseller optimize edilmeli
Listeleme yapıları doğru kurulmalı
Gereksiz rebuild azaltılmalı
Veriler kontrollü çekilmeli
Yavaş bağlantılar düşünülmeli
5. Yayın Sonrası Bakım Planlanmalı
Uygulama mağazaya çıktıktan sonra yeni telefonlar, işletim sistemi güncellemeleri ve kullanıcı ihtiyaçları devam eder.
Bu nedenle bakım süreci baştan düşünülmelidir.
Flutter mı React Native mi?
Bu soru çok sorulur.
İkisi de çapraz platform mobil uygulama geliştirme için kullanılır. İkisiyle de Android ve iOS uygulamaları geliştirilebilir.
Basit karşılaştırma şöyle yapılabilir:
Konu | Flutter | React Native |
|---|---|---|
Dil | Dart | JavaScript / TypeScript |
Arayüz mantığı | Widget tabanlı | Native bileşenlere yakın yapı |
Tasarım kontrolü | Çok güçlü | Güçlü ama yapıya göre değişebilir |
Öğrenme | Dart + Flutter öğrenilir | JS bilenler için daha tanıdık olabilir |
Kullanım alanı | Mobil, web, desktop | Özellikle mobil odaklı |
Tercih sebebi | Tutarlı UI, tek yapı, güçlü tasarım | JS ekosistemi, React bilgisi |
Burada “biri kesin daha iyidir” demek doğru olmaz.
Doğru tercih projenin ihtiyacına, ekibin tecrübesine, hedef platformlara ve uzun vadeli bakım planına göre değişir.
Ama modern, tasarımı güçlü, Android ve iOS tarafında tek kod tabanı ile ilerleyecek bir mobil uygulama için Flutter oldukça mantıklı bir tercihtir.
Flutter Öğrenmek Zor mu?
Flutter öğrenmek, hiç yazılım bilmeyen biri için başlangıçta biraz karışık gelebilir. Çünkü aynı anda birkaç şeyi anlamak gerekir:
Dart dili
Widget yapısı
Ekran tasarımı
State yönetimi
Paket kullanımı
Backend bağlantısı
Mobil cihaz mantığı
Ama iyi bir sırayla ilerlenirse öğrenmesi keyiflidir.
Başlangıç için önerilen sıra şöyle olabilir:
Dart temellerini öğren
Değişken, liste, map, fonksiyon ve class yapısını kavra
Basit Flutter ekranları oluştur
StatelessWidget ve StatefulWidget farkını öğren
Form ve buton kullan
Sayfalar arası geçiş yap
Basit API bağlantısı dene
Firebase veya Supabase ile veri kaydet
Küçük bir gerçek proje geliştir
En iyi öğrenme yolu, küçük ama gerçek bir proje yapmaktır.
Örneğin:
Not uygulaması
Görev takip uygulaması
Basit randevu uygulaması
Harcama takip uygulaması
Ders programı uygulaması
Bu tür projeler Flutter ve Dart mantığını daha hızlı oturtur.
Flutter ve Dart Gerçek Bir Projede Nasıl Birlikte Çalışır?
Bir yemek sipariş uygulaması düşünelim.
Kullanıcı uygulamayı açıyor. Restoranları görüyor. Menüden ürün seçiyor. Sepete ekliyor. Sipariş veriyor.
Flutter tarafında:
Ana sayfa tasarlanır.
Restoran kartları gösterilir.
Menü listelenir.
Sepet ekranı oluşturulur.
Butonlar ve formlar hazırlanır.
Kullanıcıya hata veya başarı mesajları gösterilir.
Dart tarafında:
Ürün listesi işlenir.
Sepet toplamı hesaplanır.
Kullanıcı seçimi kontrol edilir.
API istekleri yapılır.
Sipariş verisi hazırlanır.
Ödeme sonucu değerlendirilir.
Backend tarafında:
Restoran verileri tutulur.
Sipariş kaydedilir.
Kullanıcı bilgisi doğrulanır.
Ödeme durumu kontrol edilir.
Admin paneline sipariş düşer.
Bildirim gönderilir.
Yani gerçek bir mobil uygulamada Flutter, Dart ve backend birlikte çalışır.
Bunu bir sahne gibi düşünürsek:
Flutter sahnenin görünen dekorudur.
Dart oyuncuların hareket planıdır.
Backend sahne arkasındaki yönetimdir.
Üçü doğru çalışırsa kullanıcı güzel, hızlı ve güvenilir bir deneyim yaşar.
Flutter ile Uygulama Yaptırmak İsteyenler Nereden Başlamalı?
Bir uygulama fikriniz varsa doğrudan “hemen kodlayalım” noktasına geçmek genelde sağlıklı değildir.
Önce şu sorular netleşmeli:
Uygulama kimin için yapılacak?
Kullanıcı hangi problemi yaşayacak ve uygulama bunu nasıl çözecek?
İlk sürümde hangi özellikler olacak?
Admin paneli gerekiyor mu?
Kullanıcı girişi olacak mı?
Ödeme sistemi olacak mı?
Bildirim gerekiyor mu?
Veriler nerede tutulacak?
Android ve iOS aynı anda mı yayınlanacak?
Yayın sonrası bakım kim tarafından yapılacak?
Bu sorulara net cevap verildiğinde proje çok daha sağlıklı ilerler.
Çünkü mobil uygulama sadece ekran tasarlamak değildir. Kullanıcı deneyimi, veri yapısı, güvenlik, performans ve bakım süreci birlikte düşünülmelidir.
Flutter Neden Hizmet Projelerinde Güçlü Bir Seçenek?
Hizmet sunan işletmeler için Flutter oldukça kullanışlı olabilir.
Örneğin:
Eğitim koçu öğrencilerini takip etmek istiyor.
Nakliye firması teklif sistemi kurmak istiyor.
Klinik randevuları mobil uygulamadan almak istiyor.
Spor salonu üyelik ve program takibi yapmak istiyor.
Restoran sipariş sürecini dijitalleştirmek istiyor.
Danışmanlık firması müşteri paneli oluşturmak istiyor.
Bu projelerde genelde benzer ihtiyaçlar vardır:
Kullanıcı girişi
Rol bazlı ekranlar
Yönetilebilir admin paneli
Bildirim
Listeleme ve detay ekranları
Dosya veya görsel yükleme
Ödeme veya takip sistemi
Raporlama
Mobil uyumlu sade tasarım
Flutter bu ihtiyaçları tek mobil uygulama çatısı altında toplamak için güçlü bir zemin sunar.
Ama doğru sonuç için sadece Flutter bilmek yetmez. Projenin iş mantığını anlamak, veritabanını doğru kurmak, kullanıcı akışlarını sadeleştirmek ve uzun vadeli geliştirmeyi düşünmek gerekir.
Sonuç: Flutter ve Dart Ne İşe Yarar?
Flutter nedir sorusunun en sade cevabı şudur:
Flutter, tek kod tabanı ile modern ve performanslı mobil uygulamalar geliştirmek için kullanılan güçlü bir framework’tür.
Dart nedir sorusunun en sade cevabı ise şudur:
Dart, Flutter uygulamalarının yazıldığı programlama dilidir. Uygulamanın mantığını, verilerini ve davranışlarını yönetir.
İkisi birlikte kullanıldığında Android ve iOS için modern, kullanıcı dostu ve geliştirilebilir mobil uygulamalar oluşturmak mümkündür.
Ancak başarılı bir uygulama için sadece teknoloji seçimi yeterli değildir.
İyi bir mobil uygulama için:
Doğru planlama
Temiz tasarım
Sağlam backend
Güvenli veri yönetimi
Kullanıcı deneyimi
Performans
Test süreci
Yayın sonrası bakım
birlikte düşünülmelidir.
Bir mobil uygulama fikriniz varsa ilk adım, doğrudan kod yazmak değil; fikri doğru parçalara ayırmak olmalıdır. Hangi ekranlar olacak, kullanıcı ne yapacak, veri nerede tutulacak, admin paneli gerekecek mi, uygulama nasıl büyüyecek?
Bu sorular netleştiğinde Flutter ile çok daha sağlıklı, yönetilebilir ve uzun vadeli bir uygulama geliştirme süreci kurulabilir.
Mobil uygulama geliştirme, Flutter, Dart, backend, admin paneli, SEO uyumlu web sitesi veya yazılım danışmanlığı gibi konularda destek alarak fikrinizi daha planlı ve uygulanabilir hale getirebilirsiniz. Burada amaç sadece çalışan bir uygulama yapmak değil; kullanıcıların rahatça kullanabileceği, yönetilebilir ve geliştirilebilir bir dijital ürün ortaya çıkarmaktır.
SSS: Flutter ve Dart Hakkında Sık Sorulan Sorular
Flutter nedir?
Flutter, tek kod tabanı ile Android, iOS, web ve masaüstü uygulamaları geliştirmek için kullanılan açık kaynaklı bir framework’tür.
Dart nedir?
Dart, Flutter uygulamalarını geliştirmek için kullanılan programlama dilidir. Uygulamanın mantığı, veri işlemleri ve kullanıcı etkileşimleri Dart ile yazılır.
Flutter ve Dart aynı şey mi?
Hayır. Dart bir programlama dilidir. Flutter ise Dart ile kullanılan uygulama geliştirme framework’üdür.
Flutter ile Android ve iOS uygulama yapılır mı?
Evet. Flutter ile tek kod tabanı üzerinden hem Android hem iOS uygulamaları geliştirilebilir.
Flutter öğrenmek zor mu?
Başlangıçta widget yapısı ve Dart dili yeni gelebilir. Ancak küçük projelerle ilerlenirse öğrenmesi oldukça anlaşılır hale gelir.
Dart bilmeden Flutter öğrenilir mi?
Temel ekranlar yapılabilir ama gerçek projeler için Dart bilmek gerekir. Form kontrolü, veri yönetimi, API bağlantısı ve backend işlemleri için Dart temeli önemlidir.
Flutter uygulama geliştirmek ne kadar sürer?
Süre projenin kapsamına göre değişir. Ekran sayısı, backend ihtiyacı, admin paneli, ödeme, bildirim ve test süreci süreyi etkiler.
Flutter backend olmadan çalışır mı?
Basit ve statik uygulamalar backend olmadan çalışabilir. Ancak kullanıcı hesabı, veri kaydı, ödeme, mesajlaşma veya admin paneli varsa backend gerekir.
Flutter performanslı mı?
Doğru mimari, iyi kod yapısı ve optimize edilmiş tasarımla Flutter uygulamaları oldukça akıcı çalışabilir. Performans, teknolojiden çok uygulamanın nasıl geliştirildiğine de bağlıdır.
Flutter hangi projeler için uygundur?
Randevu, eğitim, e-ticaret, takip, sipariş, CRM, müşteri paneli ve hizmet uygulamaları gibi birçok mobil proje için uygundur.
Yorumlar (0)
Henüz yorum yapılmamış. İlk yorumu sen yap!
Yorum Yap