Backpack
Giriş
Backpack, Nylo Website içinde bellek içi singleton depolama sistemidir. Uygulamanızın çalışma süresi boyunca verilere hızlı ve senkron erişim sağlar. Verileri cihaza kalıcı olarak kaydeden NyStorage'ın aksine, Backpack verileri bellekte tutar ve uygulama kapatıldığında temizlenir.
Backpack, framework tarafından dahili olarak Nylo uygulama nesnesi, EventBus ve kimlik doğrulama verileri gibi kritik örnekleri saklamak için kullanılır. Asenkron çağrılar olmadan hızlı erişim gerektiren kendi verilerinizi saklamak için de kullanabilirsiniz.
import 'package:nylo_framework/nylo_framework.dart';
// Save a value
Backpack.instance.save("user_name", "Anthony");
// Read a value (synchronous)
String? name = Backpack.instance.read("user_name");
// Delete a value
Backpack.instance.delete("user_name");
Temel Kullanım
Backpack singleton deseni kullanır -- Backpack.instance üzerinden erişilir:
// Save data
Backpack.instance.save("theme", "dark");
// Read data
String? theme = Backpack.instance.read("theme"); // "dark"
// Check if data exists
bool hasTheme = Backpack.instance.contains("theme"); // true
Veri Okuma
read<T>() metodunu kullanarak Backpack'ten değerler okuyun. Jenerik türleri ve isteğe bağlı varsayılan değeri destekler:
// Read a String
String? name = Backpack.instance.read<String>("name");
// Read with a default value
String name = Backpack.instance.read<String>("name", defaultValue: "Guest") ?? "Guest";
// Read an int
int? score = Backpack.instance.read<int>("score");
Bir tür sağlandığında Backpack, JSON dizelerini otomatik olarak model nesnelerine dönüştürür:
// If a User model is stored as JSON, it will be deserialized
User? user = Backpack.instance.read<User>("current_user");
Veri Kaydetme
save() metodunu kullanarak değerleri kaydedin:
Backpack.instance.save("api_token", "abc123");
Backpack.instance.save("is_premium", true);
Backpack.instance.save("cart_count", 3);
Veri Ekleme
Bir anahtarda saklanan listeye değer eklemek için append() kullanın:
// Append to a list
Backpack.instance.append("recent_searches", "Flutter");
Backpack.instance.append("recent_searches", "Dart");
// Append with a limit (keeps only the last N items)
Backpack.instance.append("recent_searches", "Nylo", limit: 10);
Veri Silme
Tek Bir Anahtarı Silme
Backpack.instance.delete("api_token");
Tüm Verileri Silme
deleteAll() metodu, ayrılmış framework anahtarları (nylo ve event_bus) hariç tüm değerleri kaldırır:
Backpack.instance.deleteAll();
Oturumlar
Backpack, verileri adlandırılmış gruplar halinde düzenlemek için oturum yönetimi sağlar. Bu, ilgili verileri bir arada saklamak için kullanışlıdır.
Oturum Değerini Güncelleme
Backpack.instance.sessionUpdate("cart", "item_count", 3);
Backpack.instance.sessionUpdate("cart", "total", 29.99);
Oturum Değerini Alma
int? itemCount = Backpack.instance.sessionGet<int>("cart", "item_count"); // 3
double? total = Backpack.instance.sessionGet<double>("cart", "total"); // 29.99
Oturum Anahtarını Kaldırma
Backpack.instance.sessionRemove("cart", "item_count");
Tüm Oturumu Temizleme
Backpack.instance.sessionFlush("cart");
Tüm Oturum Verilerini Alma
Map<String, dynamic>? cartData = Backpack.instance.sessionData("cart");
// {"item_count": 3, "total": 29.99}
Nylo Örneğine Erişim
Backpack, Nylo uygulama örneğini saklar. Aşağıdaki şekilde alabilirsiniz:
Nylo nylo = Backpack.instance.nylo();
Nylo örneğinin başlatılıp başlatılmadığını kontrol edin:
bool isReady = Backpack.instance.isNyloInitialized(); // true
Yardımcı Fonksiyonlar
Nylo Website, yaygın Backpack işlemleri için global yardımcı fonksiyonlar sağlar:
| Fonksiyon | Açıklama |
|---|---|
backpackRead<T>(key) |
Backpack'ten bir değer okur |
backpackSave(key, value) |
Backpack'e bir değer kaydeder |
backpackDelete(key) |
Backpack'ten bir değer siler |
backpackDeleteAll() |
Tüm değerleri siler (framework anahtarlarını korur) |
backpackNylo() |
Backpack'ten Nylo örneğini alır |
Örnek
// Using helper functions
backpackSave("locale", "en");
String? locale = backpackRead<String>("locale"); // "en"
backpackDelete("locale");
// Access the Nylo instance
Nylo nylo = backpackNylo();
NyStorage ile Entegrasyon
Backpack, kalıcı + bellek içi depolama kombinasyonu için NyStorage ile entegre çalışır:
// Save to both NyStorage (persistent) and Backpack (in-memory)
await NyStorage.save("auth_token", "abc123", inBackpack: true);
// Now accessible synchronously via Backpack
String? token = Backpack.instance.read("auth_token");
// When deleting from NyStorage, also clear from Backpack
await NyStorage.deleteAll(andFromBackpack: true);
Bu desen, hem kalıcılık hem de hızlı senkron erişim gerektiren kimlik doğrulama tokenları gibi veriler için kullanışlıdır (örneğin, HTTP interceptor'larında).
Örnekler
API İstekleri için Auth Token Saklama
// In your auth interceptor
class BearerAuthInterceptor extends Interceptor {
@override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
String? userToken = Backpack.instance.read(StorageKeysConfig.auth);
if (userToken != null) {
options.headers.addAll({"Authorization": "Bearer $userToken"});
}
return super.onRequest(options, handler);
}
}
Oturum Tabanlı Sepet Yönetimi
// Add items to a cart session
Backpack.instance.sessionUpdate("cart", "items", ["item_1", "item_2"]);
Backpack.instance.sessionUpdate("cart", "total", 49.99);
// Read cart data
Map<String, dynamic>? cart = Backpack.instance.sessionData("cart");
// Clear the cart
Backpack.instance.sessionFlush("cart");
Hızlı Özellik Bayrakları
// Store feature flags in Backpack for fast access
backpackSave("feature_dark_mode", true);
backpackSave("feature_notifications", false);
// Check a feature flag
bool darkMode = backpackRead<bool>("feature_dark_mode") ?? false;