secret_db 1.4.0 copy "secret_db: ^1.4.0" to clipboard
secret_db: ^1.4.0 copied to clipboard

A Flutter package for secure encrypted database storage

example/main.dart

import 'package:flutter/material.dart';
import 'package:secret_db/secret_db.dart';

// Data model definition
class User {
  final int id;
  final String name;
  final String email;

  User({required this.id, required this.name, required this.email});

  // Method to convert the object to JSON
  Map<String, dynamic> toJson() => {
    'id': id,
    'name': name,
    'email': email,
  };

  // Method to create a User object from JSON
  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      id: json['id'],
      name: json['name'],
      email: json['email'],
    );
  }
}

void main() async {
  // Initializing the database (call the init method only once)
  await SecretDB.init(
    dbName: "secure_database.db",
    tableName: "user_data",
    key: "my_secure_dynamic_key", // The encryption key can be provided or dynamic
  );

  // 1 - Example SaveData with GeneratedID (ID generated automatically)
  User newUser = User(id: 0, name: "John Doe", email: "john.doe@example.com");
  await SecretDB.saveDataWithGeneratedID(newUser);

  // 2 - Example SaveData with provided ID (not generated automatically)
  User userWithID = User(id: 2, name: "Jane Smith", email: "jane.smith@example.com");
  await SecretDB.saveData(userWithID.id.toString(), userWithID);

  // 3 - Retrieving data
  String generatedID = 'some_generated_id'; // The automatically generated ID or the ID provided when saving
  User? retrievedUser = await SecretDB.getData<User>(generatedID, (json) => User.fromJson(json));

  if (retrievedUser != null) {
    print("Retrieved User's name: ${retrievedUser.name}");
  } else {
    print("User not found");
  }

  // 4 - Updating data (with updateData)
  User updatedUser = User(id: 2, name: "Jane Smith Updated", email: "jane.updated@example.com");
  await SecretDB.updateData(userWithID.id.toString(), updatedUser);
  print('User data updated!');

  // 5 - Deleting data
  await SecretDB.deleteData('some_generated_id');
  print('Data deleted!');

  // Close the database when done
  await SecretDB.closeDB();
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Encrypted DB Storage Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  // Function to save simple data
  void _saveSimpleData() async {
    await SecretDB.saveData('user_token', 'my_secure_token');
    print('User token saved!');
  }

  // Function to save and retrieve an object
  void _saveAndRetrieveUser() async {
    User user = User(id: 0, name: 'john_doe', email: 'john@example.com');
    
    // Serialize and save the object
    String serializedUser = SecretDB._serialize(user);
    await SecretDB.saveData('user_info', serializedUser);
    print('User information saved!');
    
    // Retrieve and deserialize the object
    String? userJson = await SecretDB.getData('user_info');
    if (userJson != null) {
      User retrievedUser = SecretDB._deserialize(userJson, (json) => User.fromJson(json));
      print('Retrieved User: ${retrievedUser.name}, ${retrievedUser.email}');
    }
  }

  // Function to delete data
  void _deleteUserToken() async {
    await SecretDB.deleteData('user_token');
    print('User token deleted!');
  }

  // Function to close the database
  void _closeDatabase() async {
    await SecretDB.closeDB();
    print('Database closed!');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Encrypted DB Storage Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _saveSimpleData,
              child: Text('Save Simple Data (Token)'),
            ),
            ElevatedButton(
              onPressed: _saveAndRetrieveUser,
              child: Text('Save and Retrieve User Info'),
            ),
            ElevatedButton(
              onPressed: _deleteUserToken,
              child: Text('Delete User Token'),
            ),
            ElevatedButton(
              onPressed: _closeDatabase,
              child: Text('Close Database'),
            ),
          ],
        ),
      ),
    );
  }
}
2
likes
140
points
41
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package for secure encrypted database storage

Repository (GitHub)
View/report issues

Documentation

API reference

License

unknown (license)

Dependencies

encrypt, flutter, path, sqflite

More

Packages that depend on secret_db