Search packages, repositories and app categories

Package detailsv2.0.1

simple_database

A simple lightweight wrapper for the SharedPreferences Flutter package.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
39
Likes
6
Pub points
140

Install package

flutter pub add simple_database

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A lightweight, easy-to-use wrapper around Flutter's SharedPreferences, designed to simplify persistent data storage in Flutter applications. It abstracts common operations like saving, retrieving, and deleting key-value pairs with minimal boilerplate. Ideal for small-scale apps needing basic local storage without the complexity of full databases. The package is cross-platform, supporting Android, iOS, Web, macOS, Windows, and Linux, making it versatile for various deployment scenarios.

Use cases

  • Storing user preferences
  • Saving app state between sessions
  • Caching small amounts of data
  • Managing simple settings
  • Persisting login tokens
  • Tracking user activity

Key features

  • Minimal API surface
  • Automatic type serialization
  • Cross-platform compatibility
  • Simple setup
  • Lightweight footprint
  • Error handling

Suitable for

  • Beginner Flutter developers
  • Small to medium apps
  • Prototypes and MVPs
  • Apps with basic persistence needs
  • Projects avoiding complex database setups

Considerations

  • Not suitable for large datasets
  • No support for queries or indexing
  • Limited to key-value storage
  • Data not encrypted by default
  • Performance degrades with high-frequency writes
  • Best used for non-critical, small-scale data

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Simple Database

CI codecov

A simple lightweight wrapper for the SharedPreferences Flutter package. Simple Database provides an abstraction layer for storing objects instead of key, value pairs. This makes it very easy to get a quick local storage solution up and running.

GitHub

Please feel free to contribute

Usage

Please add simple_database as a dependency in your pubspec.yaml file

No Setup Primative Storage

You can easily setup a database of primitive types just by assigning it a name, Simple Database will init the DB if it has not been created yet on the phone for you.

void main() async {
    SimpleDatabase names = SimpleDatabase(name: 'names');

    await names.add('Bob');
    await names.add('Doug');

    for (var name in await names.getAllType<String>()) {
      print(name);
    }
}

Mixed Types

You can use a single database that stores multiple primitive types and then specify what type you want from the database.

void main() async {
    SimpleDatabase names = SimpleDatabase(name: 'names');

    await names.add('Bob');
    await names.add(150)
    await names.add('Doug');
  
    //Print out all strings in the db
    for (var name in await names.getAllType<String>()) {
      print(name);
    }
  
    //Print out at an index, with a type
    var number = await names.getAtType<int>(1);
    print(number);
}

Non-Primitive object storage

You can store your own objects you have created easily just by implementing 2 functions in the class. toJson and fromJson. You will need to pass the fromJson function to the constructor of SimpleDatabase if you want it to rebuild the json into your object. You do not need this, it will just return a hash map with the values from your object if the function is not provided.


class SimpleClass {
  final int age;
  final String name;
  final double height;
  final bool gender;

  SimpleClass(this.age, this.name, this.height, this.gender);

  //Implement fromJson - Required
  SimpleClass.fromJson(Map<String, dynamic> json) : age = json['age'], name = json['name'], height = json['height'], gender = json['gender'];

  //Implement toJson - Required
  Map<String, dynamic> toJson() => {
    'age': age,
    'name' : name,
    'height' : height,
    'gender' : gender,
  };
}

void main() async {
    SimpleDatabase classDB = SimpleDatabase(name: 'class', fromJson: (fromJson) => SimpleClass.fromJson(fromJson));

    SimpleClass john = SimpleClass(18, 'John', 5.2, true);  

    await classDB.add(john);

    SimpleClass person = await classDB.getAtType<SimpleClass>(0);
    print(person.name);
}

TODO:

  • Built in encryption of stored json strings
  • Better documentation

Categories

Dependencies

Dependency list 1 items

Source repository

Projects using this package

No data available yet.