write static method

Future<bool> write(
  1. String key,
  2. dynamic value
)

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;
  }
}