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

10 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. sunucu ip adresi girerek ek bir kontrol gerçekleştirmeden kullanabilirsiniz.

Ç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