Search packages, repositories and app categories

GitHub repositoryxaldarof/jt-preferences

jt_preferences

Preferences integrates seamlessly into your projects, enhancing user experience and app functionality. Simplify preference management and optimize your app with JT Preferences.

jt_preferences project cover
Stars
5
Forks
0
Last push (UTC)
Feb 21, 2025
Project status
Archived

Original README

English project snapshot. Visit GitHub for the latest content.

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
  await 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: 'user', 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 = preferences.getObject('user', (map) => User.fromJson(map));
print(object?.name);
print(object?.age);

//Reload data from storage
_preferences.reload();

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

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

Remove an entry
// Remove data for the 'counter' key.
final success = await preferences.remove('counter');
xaldarof GitHub avatar
GitHub author

xaldarof ↗

bedroom
LanguagesDartC++CMakeHTMLSwiftCKotlinObjective-C

Categories

Dependencies used

Dependency list 4 items

How do I choose a repository?

Start with your use case, compare repository activity, and check the original project before adopting it.

  1. Search by repository name, owner or description, then narrow the results by topic.
  2. Compare stars, forks and recent pushes. Stars show community interest, not a guarantee of quality.
  3. Read the README, license and issues on GitHub before using a project.

Sources and maintenance

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗