Flutter & Mobil İle Nasıl Yapılır?

Flutter & Mobil İle Nasıl Yapılır?
Flutter & Mobil İle Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Flutter ile geliştirmeye başlamadan önce sisteminizde gerekli araçların kurulu olduğundan emin olmalısınız. 2026 standartlarına göre en güncel Flutter SDK (Yazılım Geliştirme Kiti) sürümünü kullanmanız, güvenlik ve performans güncellemelerinden yararlanmanızı sağlar.

  • Flutter SDK: Resmi kanallardan indirilmiş en güncel kararlı sürüm.
  • IDE: VS Code veya Android Studio (Flutter ve Dart eklentileri kurulu olmalı).
  • Mobil Emülatör: Geliştirme aşamasında gerçek cihaz yerine kullanabileceğiniz sanal cihazlar.
  • Dart Bilgisi: Flutter'ın temelini oluşturan nesne yönelimli programlama dili.

Kurulumu doğrulamak için terminalinize flutter doctor komutunu yazın. Tüm işaretlerin yeşil olduğundan emin olun; bu, geliştirme ortamınızın hazır olduğunu gösterir.

Temel Bir Uygulama Yapısı Oluşturma

Flutter'da her şey bir "Widget"tır. Uygulamanızın iskeletini oluştururken MaterialApp yapısını kullanmak, Google'ın Material Design standartlarına uygun bir arayüz sağlar. Aşağıdaki kod bloğu, basit bir "Merhaba Dünya" uygulamasının temel yapısını göstermektedir.

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({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 Dünya!')),
      ),
    );
  }
}

Bu kod, uygulamanın giriş noktası olan main fonksiyonunu ve uygulamanın kök widget'ı olan MyApp sınıfını tanımlar. Scaffold widget'ı ise standart bir sayfa düzeni (AppBar, Body, FloatingActionButton) sağlar.

State Management (Durum Yönetimi) ile Dinamik İçerik

Mobil uygulamalarda verinin değişmesi, arayüzün de güncellenmesini gerektirir. Flutter'da StatefulWidget kullanarak kullanıcı etkileşimlerine yanıt veren dinamik içerikler oluşturabilirsiniz. Bir sayaç uygulaması üzerinden durum yönetimini inceleyelim.

class CounterApp extends StatefulWidget {
  const CounterApp({super.key});

  @override
  State createState() => _CounterAppState();
}

class _CounterAppState extends State {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text('Sayaç: $_counter'),
        ElevatedButton(onPressed: _incrementCounter, child: const Text('Artır')),
      ],
    );
  }
}

Burada setState metodu kritik öneme sahiptir. Bu metod, Flutter'a "değişkenler değişti, arayüzü yeniden çiz" komutunu verir. Aksi takdirde, değişkenin değeri değişse bile ekranda bir güncelleme göremezsiniz.

API Entegrasyonu: Veri Çekme İşlemleri

Gerçek dünya uygulamaları genellikle bir sunucudan veri çeker. HTTP istekleri için http paketini kullanırız. Güvenli veri transferi için her zaman HTTPS protokolünü tercih etmelisiniz.

import 'package:http/http.dart' as http;
import 'dart:convert';

Future fetchUserData() async {
  final response = await http.get(Uri.parse('https://api.ornek.com/kullanici/1'));
  
  if (response.statusCode == 200) {
    return jsonDecode(response.body);
  } else {
    throw Exception('Veri çekilemedi');
  }
}

Bu fonksiyon, asenkron bir yapı olan Future kullanarak ağ trafiğini bloklamadan veri çeker. jsonDecode ile gelen JSON verisini Dart nesnesine dönüştürürüz.

Veri Güvenliği ve Yerel Depolama

Kullanıcı verilerini yerel cihazda saklarken güvenliğe dikkat etmelisiniz. Hassas veriler (token, şifre vb.) için flutter_secure_storage paketini kullanmak, verilerin şifrelenerek saklanmasını sağlar.

import 'package:flutter_secure_storage/flutter_secure_storage.dart';

final storage = const FlutterSecureStorage();

Future saveToken(String token) async {
  await storage.write(key: 'jwt_token', value: token);
}

Future getToken() async {
  return await storage.read(key: 'jwt_token');
}

Asla token veya şifre gibi hassas bilgileri SharedPreferences gibi şifrelenmemiş alanlarda saklamayın. Bu, uygulamanız için ciddi bir güvenlik açığı oluşturur.

Flutter Geliştirme Yöntemleri Karşılaştırması

Yöntem Avantaj Dezavantaj
StatefulWidget Basit, hızlı prototipleme Büyük projelerde karmaşıklaşır
Provider/Riverpod Ölçeklenebilir, temiz mimari Öğrenme eğrisi daha dik
Bloc Kurumsal düzeyde yönetim Çok fazla boilerplate kod

Sıkça Sorulan Sorular

Flutter öğrenmek için ne kadar Dart bilmeliyim?

Temel OOP (Nesne Yönelimli Programlama) prensiplerini, asenkron programlamayı (Future, Stream) ve koleksiyon yapılarını bilmeniz yeterlidir.

Flutter uygulamaları yerel uygulamalar kadar hızlı mı?

Evet, Flutter doğrudan GPU ile etkileşime giren kendi render motorunu kullandığı için yerel uygulama performansına çok yakındır.

Uygulamamı nasıl yayınlarım?

Android için AAB (Android App Bundle), iOS için ise Xcode üzerinden IPA dosyası oluşturarak ilgili mağazalara yüklersiniz.

State yönetimi için en iyi kütüphane hangisidir?

Orta ölçekli projeler için Riverpod, kurumsal ve büyük ölçekli projeler için ise Bloc mimarisi 2026 standartlarında en çok tercih edilenlerdir.

Güvenlik için nelere dikkat etmeliyim?

Veri iletiminde HTTPS, yerel depolamada şifreli kütüphaneler ve API anahtarlarını kod içinde değil, çevresel değişkenlerde (environment variables) saklamalısınız.

Kritik Güvenlik Uyarısı: Uygulamanızda kullandığınız tüm API anahtarlarını ve gizli servis bilgilerini asla doğrudan kaynak kod içerisinde "hard-coded" olarak bırakmayın. Üretim ortamına (production) çıkmadan önce bu bilgileri güvenli bir yapılandırma dosyası veya uzaktan konfigürasyon servisi üzerinden yönetin.

Uygulama Performansını Optimize Etme Stratejileri

Flutter uygulamalarınızın akıcı bir kullanıcı deneyimi sunması için 60 FPS (veya destekleyen cihazlarda 120 FPS) değerini korumak kritiktir. Performans darboğazlarını tespit etmek ve gidermek için aşağıdaki yöntemleri uygulayabilirsiniz.

Widget Ağacı Optimizasyonu

Gereksiz yeniden oluşturmaları (rebuilds) engellemek, uygulamanızın bellek tüketimini doğrudan azaltır. const anahtar kelimesini kullanmak, Flutter'ın bu widget'ları derleme zamanında sabit olarak işaretlemesini sağlar ve çalışma zamanında yeniden oluşturulmalarını engeller.

// Yanlış kullanım: Her rebuild'de yeniden oluşturulur
Text('Merhaba Dünya')

// Doğru kullanım: Sabit widget olarak işaretlenir
const Text('Merhaba Dünya')

Görüntü ve Varlık Yönetimi

Büyük boyutlu görseller, uygulamanın açılış süresini ve bellek kullanımını olumsuz etkiler. cached_network_image gibi kütüphaneler kullanarak ağdan gelen görselleri önbelleğe almalı ve mümkünse WebP gibi sıkıştırılmış formatlar tercih etmelisiniz.

Uygulama Test Süreçleri ve Kalite Güvencesi

Profesyonel bir mobil uygulama geliştirme sürecinde, kodun kararlılığını sağlamak için üç katmanlı bir test stratejisi izlenmelidir: Birim testleri, widget testleri ve entegrasyon testleri.

Birim (Unit) Testleri ile İş Mantığını Doğrulama

Uygulamanızdaki yardımcı fonksiyonların veya veri modellerinin doğru çalıştığından emin olmak için test paketini kullanın. Aşağıdaki örnek, basit bir matematiksel işlemin doğrulanmasını gösterir:

import 'package:test/test.dart';

int toplamaIslemi(int a, int b) => a + b;

void main() {
  test('İki sayının toplamı doğru hesaplanmalı', () {
    expect(toplamaIslemi(2, 3), 5);
  });
}

Widget Testleri ile Arayüz Kontrolü

Widget testleri, kullanıcı arayüzünün beklenen şekilde render edilip edilmediğini kontrol eder. tester.pumpWidget komutu ile bir widget'ı sanal bir ortamda oluşturabilir ve kullanıcı etkileşimlerini simüle edebilirsiniz.

  • Golden Tests: Arayüzün görsel olarak değişip değişmediğini kontrol etmek için "golden" dosyaları oluşturun.
  • Integration Tests: Gerçek cihaz veya emülatör üzerinde uçtan uca kullanıcı senaryolarını test edin.
İpucu: Test kapsamınızı (code coverage) artırmak, gelecekte yapacağınız refactoring işlemlerinde hataları erkenden yakalamanızı sağlar. flutter test --coverage komutu ile testlerinizin hangi oranda kod kapsadığını raporlayabilirsiniz.

Sonuç

Flutter ile mobil uygulama geliştirme süreci, doğru mimariyi seçmek ve güvenlik standartlarına uymakla başlar. Bu rehberde öğrendiğiniz temel yapı taşları, profesyonel seviyeye ulaşmanız için gerekli olan temel disiplini oluşturur. Bir sonraki adım olarak, "Clean Architecture" (Temiz Mimari) prensiplerini inceleyerek projelerinizi daha sürdürülebilir hale getirebilirsiniz. Bol kodlu günler dilerim.

Bu yazıya tepkinizi paylaşın:
Selin Korkmaz

Dijital yayıncılık dünyasında ev geliştirme ve kendin yap projeleri üzerine uzmanlaştım. Adım adım rehberler hazırlayarak kullanıcıların teknik becerilerini geliştirmelerine yardımcı oluyorum.

Yorumlar (0)

Yorum Yaz