encrypted_prefs 1.0.0

EncryptedPrefs #

Description #

Default shared prefrences in android comes with limitations. Developers cant save objects to it, neither are those encrypted. This is to make the storage much more easy, you can now save the models to local storage by calling a single function. And guess what, its also encrypted! Zero boilerplate!

Installation #

For installation you may see: https://pub.dartlang.org/packages/encrypted_prefs

How to use #

Add serialization/deserialization technique to your object

/// Sample class used for storing locally
class User {
  final String username;
  final String password;

  User(this.username, this.password);

  bool operator == (user) => user is User && user.username == username && user.password == password;

  /// Serializing technique
  User.fromJson(Map<String, dynamic> json)
      : username = json['Username'],
        password = json['Password'];

  /// And deserializing
  Map<String, dynamic> toJson() => {
        'Username': username,
        'Password': password,

Generate a secure key and keep it in the safe place. EncryptedPrefs also provide you the method for generating a secure random key.

/// You can generate encryption key using EncryptedPrefs
encryptionKey = await prefs.generateRandomKey();

Extend your adapter with FlagChatAdapter and pass context to the adapter

class ChatAdapter(context: Context, private var list: ArrayList<Any>) : FlagChatAdapter(context)

Store and retrieve objets with encryption #

Its one liner code To encrypt and save, you just need to call set method

/// Save data in local storage with your object against key and encryption key
    await prefs.set("User", user, encryptionKey);

To get the decrypted object all you need to do is following

/// Retrieve your data from local storage with your key, encryption key and the serialization technique you are using
    prefs.get("User", encryptionKey, (json) => User.fromJson(json)).then((value) {
        if (user == value) {
          /// Do whatever you want :)

Yes! Is it async #

Yes! EncryptedPrefs are created by using the best technique and approaches availabe. This is async and you dont have to worry about anything.

Contributions #

EncryptedPrefs wouldnt be here without help of Stefano Rodriguez. Special thanks to him for the encryption/decryption.

Pull requests are welcome! The best contributions will consist of substitutions or configurations for classes/methods known to block the main thread during a typical app lifecycle.

I would love to know if you are using FlagChatAdapter in your app, send an email to Salmaan Ahmed


initial release. #


example #

Smooth rating bar example project.

Getting Started #

Check out the example source code from here.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  encrypted_prefs: ^1.0.0

2. Install it

You can install packages from the command line:

with Flutter:

$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:encrypted_prefs/encrypted_prefs.dart';
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Feb 21, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.5
  • Flutter: 1.12.13+hotfix.7

Health issues and suggestions

Document public APIs. (-1 points)

8 out of 8 API elements have no dartdoc comment.Providing good documentation for libraries, classes, functions, and other API elements improves code readability and helps developers find and use your API.

Maintenance issues and suggestions

Support latest dependencies. (-30 points)

The version constraint in pubspec.yaml does not support the latest published versions for 3 dependencies (encrypt, flutter_string_encryption, shared_preferences).

Package is getting outdated. (-16.99 points)

The package was last published 61 weeks ago.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev.68.0 <3.0.0
encrypt ^1.0.0+1 1.0.1 4.0.0
flutter 0.0.0
flutter_string_encryption ^0.2.0 0.2.0 0.3.1
shared_preferences ^0.4.3 0.4.3 0.5.6+2
Transitive dependencies
asn1lib 0.5.15 0.6.4
collection 1.14.11 1.14.12
meta 1.1.8
pointycastle 1.0.2
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies