easy_db 1.0.0 copy "easy_db: ^1.0.0" to clipboard
easy_db: ^1.0.0 copied to clipboard

The simplest database plugin for Flutter. Just 4 methods and you're done! Perfect for beginners and anyone who hates complex database setup.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:easy_db/easy_db.dart';

void main() {
  runApp(const EasyDbExampleApp());
}

class EasyDbExampleApp extends StatelessWidget {
  const EasyDbExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Easy_DB Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: const SimpleUserApp(),
    );
  }
}

class SimpleUserApp extends StatefulWidget {
  const SimpleUserApp({super.key});

  @override
  State<SimpleUserApp> createState() => _SimpleUserAppState();
}

class _SimpleUserAppState extends State<SimpleUserApp> {
  List<Map<String, dynamic>> _users = [];
  bool _isLoading = false;

  @override
  void initState() {
    super.initState();
    _initializeApp();
  }

  Future<void> _initializeApp() async {
    try {
      // Just initialize the database - that's it!
      await EasyDb.init('users.db');
      
      // Load existing users
      await _loadUsers();
    } catch (e) {
      _showMessage('Error: $e', isError: true);
    }
  }

  Future<void> _loadUsers() async {
    setState(() {
      _isLoading = true;
    });

    try {
      // Simple as this - get all users
      final users = await EasyDb.find('users');
      setState(() {
        _users = users;
      });
    } catch (e) {
      _showMessage('Failed to load users: $e', isError: true);
    } finally {
      setState(() {
        _isLoading = false;
      });
    }
  }

  Future<void> _addRandomUser() async {
    try {
      // Add a user with minimal code
      final names = ['Alice', 'Bob', 'Charlie', 'Diana', 'Eve'];
      final emails = ['alice@example.com', 'bob@example.com', 'charlie@example.com', 'diana@example.com', 'eve@example.com'];
      
      final randomIndex = DateTime.now().millisecondsSinceEpoch % names.length;
      
      await EasyDb.insert('users', {
        'name': names[randomIndex],
        'email': emails[randomIndex],
        'age': 20 + (DateTime.now().millisecondsSinceEpoch % 50),
      });
      
      // Refresh the list
      await _loadUsers();
      _showMessage('User added successfully!');
    } catch (e) {
      _showMessage('Error adding user: $e', isError: true);
    }
  }

  Future<void> _deleteUser(int id) async {
    try {
      await EasyDb.delete('users', where: 'id = ?', whereArgs: [id]);
      await _loadUsers();
      _showMessage('User deleted!');
    } catch (e) {
      _showMessage('Error deleting user: $e', isError: true);
    }
  }

  void _showMessage(String message, {bool isError = false}) {
    if (mounted) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text(message),
          backgroundColor: isError ? Colors.red : Colors.green,
        ),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Easy_DB - Super Simple Example'),
        backgroundColor: Colors.blue,
        foregroundColor: Colors.white,
      ),
      body: Column(
        children: [
          // Add user button
          Padding(
            padding: const EdgeInsets.all(16.0),
            child: Row(
              children: [
                Expanded(
                  child: ElevatedButton.icon(
                    onPressed: _addRandomUser,
                    icon: const Icon(Icons.add),
                    label: const Text('Add Random User'),
                    style: ElevatedButton.styleFrom(
                      padding: const EdgeInsets.all(16),
                    ),
                  ),
                ),
                const SizedBox(width: 16),
                IconButton(
                  icon: const Icon(Icons.refresh),
                  onPressed: _loadUsers,
                  tooltip: 'Refresh',
                ),
              ],
            ),
          ),
          
          // Loading indicator
          if (_isLoading)
            const Padding(
              padding: EdgeInsets.all(16.0),
              child: Center(child: CircularProgressIndicator()),
            ),
          
          // User count
          if (!_isLoading)
            Padding(
              padding: const EdgeInsets.symmetric(horizontal: 16.0),
              child: Text(
                'Users: ${_users.length}',
                style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
              ),
            ),
          
          // Users list
          Expanded(
            child: _users.isEmpty
                ? const Center(
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        Icon(Icons.people, size: 64, color: Colors.grey),
                        SizedBox(height: 16),
                        Text('No users yet', style: TextStyle(fontSize: 18)),
                        Text('Click "Add Random User" to get started'),
                      ],
                    ),
                  )
                : ListView.builder(
                    padding: const EdgeInsets.all(16),
                    itemCount: _users.length,
                    itemBuilder: (context, index) {
                      final user = _users[index];
                      return Card(
                        margin: const EdgeInsets.only(bottom: 12),
                        child: ListTile(
                          title: Text(user['name'] as String),
                          subtitle: Text('${user['email']} (Age: ${user['age']})'),
                          trailing: IconButton(
                            icon: const Icon(Icons.delete, color: Colors.red),
                            onPressed: () => _deleteUser(user['id'] as int),
                          ),
                        ),
                      );
                    },
                  ),
          ),
        ],
      ),
    );
  }

  @override
  void dispose() {
    // Clean up
    EasyDb.close();
    super.dispose();
  }
}
0
likes
150
points
87
downloads

Publisher

verified publishertelegrambotmaker.app

Weekly Downloads

The simplest database plugin for Flutter. Just 4 methods and you're done! Perfect for beginners and anyone who hates complex database setup.

Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, flutter_web_plugins, plugin_platform_interface, web

More

Packages that depend on easy_db

Packages that implement easy_db