write static method
Writes data to regular storage.
Supports primitive types (String, int, double, bool) and objects implementing the Model interface.
For sensitive data, use writeSecure instead.
Implementation
static Future<bool> write(String key, dynamic value) async {
try {
// Handle null values
if (value == null) {
return await _prefs.remove(key);
}
// Handle primitive types
if (value is String) {
return await _prefs.setString(key, value);
} else if (value is int) {
return await _prefs.setInt(key, value);
} else if (value is double) {
return await _prefs.setDouble(key, value);
} else if (value is bool) {
return await _prefs.setBool(key, value);
} else if (value is List<String>) {
return await _prefs.setStringList(key, value);
}
// Handle Model objects
if (value is Model) {
try {
final json = value.toJson();
return await _prefs.setString(key, jsonEncode(json));
} catch (e, stackTrace) {
dump(
'[JetStorage.write] Failed to serialize ${value.runtimeType}: ${e.toString()}',
stackTrace: stackTrace,
);
return false;
}
}
// Handle generic objects that can be JSON encoded
try {
final jsonString = jsonEncode(value);
return await _prefs.setString(key, jsonString);
} catch (e, stackTrace) {
dump(
'[JetStorage.write] Unable to store value of type ${value.runtimeType}',
stackTrace: stackTrace,
);
return false;
}
} catch (e, stackTrace) {
dump(
'[JetStorage.write] Error writing to storage: ${e.toString()}',
stackTrace: stackTrace,
);
return false;
}
}