jt_preferences 4.0.7 copy "jt_preferences: ^4.0.7" to clipboard
jt_preferences: ^4.0.7 copied to clipboard

Json based key-value storage with AES encryption support. Supported data types are `int`, `double`, `bool`, `String` and `Writable object`.

JtPreferences #

pub package

Supported data types are int, double, bool, String and Writable object.

Usage #

To use this plugin, add jt_preferences as a dependency in your pubspec.yaml file .

Examples #

Here are small examples that show you how to use the package.

Initialize #

void main(List<String> args) async {
  //for example (data/data/com.example.application/) without absolute path
  JtPreferences.initialize("path/path", encryptionKey: '16 length encryption key');
  //Data will be encrypted if encryptionKey is not null
}

Write data

// Obtain shared preferences.
final preferences = await JtPreferences.getInstance();

// Save an integer value to 'counter' key.
await preferences.setInt('counter', 10);
// Save an boolean value to 'repeat' key.
await preferences.setBool('repeat', true);
// Save an double value to 'decimal' key.
await preferences.setDouble('decimal', 1.5);
// Save an String value to 'action' key.
await preferences.setString('action', 'Start');

//Save writable object
await preferences.saveObject(User(name: 'averageName', age: 12));

Example User Writable object #

class User extends Writable {
  final String name;
  final int age;

  @override
  factory User.fromJson(Map<String, dynamic> map) {
    return User(name: map['name'], age: map['age']);
  }

  @override
  OnConflictStrategy? get onConflictStrategy => OnConflictStrategy.update;

  @override
  Map<String, dynamic> toJson() {
    return {
      "name": name,
      "age": age,
    };
  }

  User({
    required this.name,
    required this.age,
`  });

  @override
  String key => name;
}

Read data

// Try reading data from the 'counter' key. If it doesn't exist, returns null.
final int? counter = preferences.getInt('counter');
// Try reading data from the 'repeat' key. If it doesn't exist, returns null.
final bool? repeat = preferences.getBool('repeat');
// Try reading data from the 'decimal' key. If it doesn't exist, returns null.
final double? decimal = preferences.getDouble('decimal');
// Try reading data from the 'action' key. If it doesn't exist, returns null.
final String? action = preferences.getString('action');

final List<String>? keys = preferences.getKeys();

final object = await preferences.getObject('averageName', (map) => User.fromJson(map));
print(object?.name);
print(object?.age);

Listen changes #

//listen all changes
preferences.listen().listen((event) {
  print("key $event updated");
});

//listen only specific key
preferences.listen(key: 'counter').listen((event) {
   print("key $event updated");
});

Remove an entry

// Remove data for the 'counter' key.
final success = await preferences.remove('counter');

Temporary mode #

Temporary mode is when data is stored in a Map data structure until you manually synchronize it, which helps you avoid excessive memory writes. Use this when you are unsure if you need the data or want to filter it before saving.

  preferences.startTemporaryMode();

  await preferences.setString('key1', 'value1');
  await preferences.setString('key2', 'value2');
  await preferences.setString('key3', 'value3');
  await preferences.setString('key4', 'value4');
  await preferences.setString('key5', 'value5');
  await preferences.setString('key6', 'value6');

  await preferences.stopTemporaryMode();
  final bool = preferences.isTemporaryModeEnabled;

  await preferences.sync();
  
11
likes
110
points
89
downloads

Publisher

unverified uploader

Weekly Downloads

Json based key-value storage with AES encryption support. Supported data types are `int`, `double`, `bool`, `String` and `Writable object`.

Repository (GitHub)
View/report issues

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

encrypt, get_it

More

Packages that depend on jt_preferences