Skip to content

A professional digital business card application built with Flutter, featuring QR code generation and cross-platform contact sharing capabilities.

Notifications You must be signed in to change notification settings

sebahattinn/Flutter_BusinessCard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kartvizit (Flutter)

Minimal, güvenli ve hataya dayanıklı bir dijital kartvizit uygulaması.
Profil bilgilerini API'den çeker, güvenilir veri geldiyse vCard/QR üretip paylaşmanı sağlar.
İnternet/endpoint sorunlarında çökmez, kullanıcıyı uygun mesajlarla yönlendirir.


Özellikler

  • vCard & QR üretimi (yalnızca güvenilir ağ verisi geldiyse)
  • Paylaş: .vcf dosyası olarak paylaş
  • Hata merkezi: Ağ/JSON/timeout/401/404 gibi durumlar için i18n mesajları
  • Token yönetimi: flutter_secure_storage ile güvenli kalıcı depolama
  • Dil/yerel ayar: tr, en, de, fr
  • Asset fallback: API yoksa assets/profile.json denenir (demo amaçlıdır; QR üretmez)

Mimarî


lib/
├─ main.dart              # Uygulama akışı (kısa ve temiz tutuldu)
├─ core/
│  ├─ i18n.dart          # Çeviriler ve locale yardımcıları
│  └─ error_center.dart  # Hata toplama + trusted/untrusted veri bayrağı + banner
├─ services/
│  ├─ safe_http.dart     # HTTP sarmalayıcı: timeout/host/httpStatus/JSON hatalarını sınıflandırır
│  └─ token_store.dart   # flutter_secure_storage ile access token kalıcı saklama
└─ ui/
├─ pages.dart         # InfoPage, QrPage
└─ widgets.dart       # DotPager, EdgePagerNav, Card vb. küçük bileşenler

Not: vCard/QR sadece ağdan 200 OK ile gelen ve geçerli formatlı (trusted) profille üretilir.
Asset veya default veriler görüntülenir ama QR üretmez ve Paylaş kapalıdır.


Kurulum

1) Ortam

  • Flutter 3.x (stable)
  • Dart SDK Flutter ile gelir
flutter --version
  1. Bağımlılıklar
flutter pub get
  1. pubspec.yaml — assets tanımı
flutter:
  uses-material-design: true
  assets:
    - assets/profile.json

assets/profile.json örneği:

{
  "name": "Ada Lovelace",
  "title": "Software Engineer",
  "company": "Example Inc.",
  "work": "+902122223344",
  "mobile": "+905551112233",
  "email": "ada@example.com"
}
  1. Endpoint'leri ayarla main.dart başlarında:
const String PROFILE_URL = 'https://api.npoint.io/69c28a4ff7714f6a7c29';
const String AUTH_URL    = 'https://example.com/api/session'; // gerçek yoksa böyle bırak

PROFILE_URL: JSON profil dönen uç nokta (GET). AUTH_URL: Örnek. example.com kaldığı sürece login denenmez (anonim). Gerçekte POST /login vs. kullanın ve safe_http.dart üzerinden çağırın.

Çalıştırma

# Cihaz/Emülatör seç
flutter devices

# Koş
flutter run -d <deviceId>

Token Mantığı (özet) Uygulama açılırken:

TokenStore.readAccess() ile secure storage'dan token okunur (varsa RAM'e alınır). Token yoksa ve AUTH_URL gerçekse server'dan istenir → başarılıysa secure storage'a yazılır. PROFILE_URL çağrısı 401 dönerse token geçersizdir → secure storage temizlenir. Profil yanıtı içinde yeni token dönerse rotasyon yapılır (storage güncellenir). Android'de EncryptedSharedPreferences, iOS'ta Keychain kullanılır.

i18n & Yerel Kurallar

Mevcut diller: tr, en, de, fr (otomatik locale algılanır) TR için telefon numarası basit şekilde E.164 (+90…) formatına normalize edilir. UI metinleri core/i18n.dart içinden I18n.t('key') ile gelir.

Hata Yönetimi Tüm HTTP istekleri services/safe_http.dart üzerinden gider:

Timeout → TimeoutException Host/bağlantı → SocketException HTTP durum → HttpStatusException(statusCode) Geçersiz URL → InvalidUrlException Kötü JSON → BadJsonException

core/error_center.dart gelen hatayı i18n mesajına çevirir ve ekranda banner olarak gösterir. Trusted veri bayrağı:

markProfileTrusted() → yalnızca 200 + geçerli JSON ile çağrılır markProfileUntrusted() → diğer bütün durumlar QR/vCard üretimi: yalnızca trusted=true iken

Beklenen Davranışlar

Endpoint bozuk → Hata banner'ı, QR görünmez, Paylaş butonu devre dışı JSON formatı yanlış → Hata banner'ı, QR görünmez 401 → Token temizlenir, hata banner'ı Timeout/Host → Hata banner'ı, asset/default gösterilir ama QR görünmez

Hızlı Test Senaryoları

Başarılı akış PROFILE_URL çalışıyor → Profil gelir, QR oluşur, Paylaş aktif. Bozulan endpoint PROFILE_URL sonuna rasgele r ekle → Hata banner'ı, QR yok, Paylaş pasif. 401 simülasyonu safe_http.dart içinde mock dön veya API'ni 401 verdirt → Token temizlenir, QR yok. Asset fallback İnternet kapalıyken aç → assets/profile.json gösterilir, QR yok (demo verisi).

Başlıca Paketler

http – ağ istekleri (sarmalayıcı: safe_http.dart) flutter_secure_storage – güvenli token depolama qr_flutter – QR görselleştirme share_plus – .vcf dosyasını paylaşma path_provider – temp dizin erişimi

Sık Karşılaşılanlar

Target of URI doesn't exist → flutter pub get YAML hatası → pubspec.yaml girintileme (space) kontrol edin RenderFlex overflow → Genişliği aşan UI; projede FittedBox/Expanded ile ele alındı Chrome/Web'de swipe yok → Ok navigasyonunu EdgePagerNav ile kullanabilirsin

About

A professional digital business card application built with Flutter, featuring QR code generation and cross-platform contact sharing capabilities.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published