secret_db 1.1.0 copy "secret_db: ^1.1.0" to clipboard
secret_db: ^1.1.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';

//  exemplo
class User {
  final int id; // The ID will now be generated automatically
  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
  );


  // If needed, and if you wish to set the desired ID, you can use it without the GeneratedID
  // and generate your preferred ID. Otherwise, by using the GeneratedID, the package will 
  // automatically generate a random ID for the record.

  // 1   - Exemplo SaveData with GeneratedID
  User user = User(name: "John Doe", email: "john.doe@example.com");
  // Saving the user to the database with an automatically generated ID
  await SecretDB.saveDataWithGeneratedID(user);

  // 2   - Exemplo SaveData WithoutGeneratedID
  User user = User(id: 2, name: "John Doe", email: "john.doe@example.com");
  await SecretDB.saveData(user);

  // Retrieving the user from the database
  // (Here you should use the generated ID for the query, or keep the ID generated when saving)
  // In this case, we assume that the generated ID is returned or we already know it
  String generatedID = 'some_generated_id';  // The ID returned after insertion (example)
  User? retrievedUser = await SecretDB.getData<User>(generatedID, (json) => User.fromJson(json));

  // Printing the retrieved user's name
  if (retrievedUser != null) {
    print("User's name: ${retrievedUser.name}");
  } else {
    print("User not found");
  }

  // Closing 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 {
  // Função para salvar dados simples
  void _saveSimpleData() async {
    await SecretDB.saveData('user_token', 'my_secure_token');
    print('User token saved!');
  }

  // Função para salvar e recuperar objeto
  void _saveAndRetrieveUser() async {
    User user = User(username: 'john_doe', email: 'john@example.com');
    
    // Serializa e salva o objeto
    String serializedUser = SecretDB._serialize(user);
    await SecretDB.saveData('user_info', serializedUser);
    print('User information saved!');
    
    // Recupera e desserializa o objeto
    String? userJson = await SecretDB.getData('user_info');
    if (userJson != null) {
      User retrievedUser = SecretDB._deserialize(userJson, (json) => User.fromJson(json));
      print('Retrieved User: ${retrievedUser.username}, ${retrievedUser.email}');
    }
  }

  // Função para excluir dados
  void _deleteUserToken() async {
    await SecretDB.deleteData('user_token');
    print('User token deleted!');
  }

  // Função para fechar o banco de dados
  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
0
points
34
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package for secure encrypted database storage

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

crypto, encrypt, flutter, path, sqflite

More

Packages that depend on secret_db