Skip to main content

SQLite and Flutter Implementation

SQLite and Flutter Implementation

Understanding SQLite and Its Implementation in Flutter

What is SQLite?

SQLite is a lightweight, serverless, and self-contained SQL database engine. It is widely used for local data storage in applications because it is simple to set up and requires no external server. It is fast, reliable, and supports full SQL capabilities, making it a popular choice for mobile and desktop applications.

Why Use SQLite in Flutter?

Flutter, being a versatile framework for building cross-platform applications, often requires local storage solutions for tasks like caching data, storing user preferences, or maintaining offline functionality. SQLite is a perfect match for such needs due to its simplicity and efficiency.

How to Implement SQLite in Flutter

Step 1: Add Dependencies

To use SQLite in Flutter, add the following dependencies to your pubspec.yaml file:

dependencies:
  sqflite: ^2.3.0
  path: ^1.8.0

Run flutter pub get to fetch the packages.

Step 2: Initialize the Database

Set up the database and define the schema:

import 'dart:async';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';

class DatabaseHelper {
  static final DatabaseHelper _instance = DatabaseHelper._internal();
  factory DatabaseHelper() => _instance;

  DatabaseHelper._internal();

  static Database? _database;

  Future get database async {
    if (_database != null) return _database!;
    _database = await _initDatabase();
    return _database!;
  }

  Future _initDatabase() async {
    final dbPath = await getDatabasesPath();
    return openDatabase(
      join(dbPath, 'example.db'),
      onCreate: (db, version) async {
        await db.execute('''
          CREATE TABLE tasks (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            title TEXT,
            description TEXT
          )
        ''');
      },
      version: 1,
    );
  }
}

Step 3: Perform CRUD Operations

Create

Future insertTask(Map task) async {
  final db = await DatabaseHelper().database;
  await db.insert('tasks', task, conflictAlgorithm: ConflictAlgorithm.replace);
}

Read

Future>> getTasks() async {
  final db = await DatabaseHelper().database;
  return await db.query('tasks');
}

Update

Future updateTask(int id, Map task) async {
  final db = await DatabaseHelper().database;
  await db.update('tasks', task, where: 'id = ?', whereArgs: [id]);
}

Delete

Future deleteTask(int id) async {
  final db = await DatabaseHelper().database;
  await db.delete('tasks', where: 'id = ?', whereArgs: [id]);
}

Step 4: Use SQLite in Your UI

Integrate SQLite operations into your Flutter widgets. For example, display a list of tasks fetched from the database in a ListView.

Conclusion

SQLite is a powerful and efficient solution for local data storage in Flutter applications. With the sqflite package, you can easily implement SQLite to handle your app's storage needs, whether it's for simple preferences or complex offline data management.

© 2024 Flutter Blog. All rights reserved.

Comments

Popular posts from this blog

API Integration in Flutter - A Step-by-Step Guide

API Integration in Flutter - A Step-by-Step Guide API Integration in Flutter - A Step-by-Step Guide Learn how to integrate APIs into your Flutter app with this easy-to-follow tutorial. Step 1: Add Dependencies Start by adding the necessary dependencies for HTTP requests and JSON handling in your pubspec.yaml file. dependencies: flutter: sdk: flutter http: ^0.13.3 Run flutter pub get to install the dependencies. Step 2: Create a Service Class for API Calls Next, create a Dart file (e.g., api_service.dart ) to handle your API logic. Below is an example of a simple GET request function: import 'dart:convert'; import 'package:http/http.dart' as http; class ApiService { final String baseUrl; ApiService({required this.baseUrl...

Flutter Interview Preparation Topics

Flutter Interview Preparation Flutter Interview Preparation 1. Core Flutter Concepts **Widgets**: - StatelessWidget vs. StatefulWidget. - InheritedWidget and InheritedModel. - Custom Widgets (Creating reusable components). **State Management**: - Provider, Riverpod, Bloc/Cubit, Redux, or GetX. - Compare and contrast state management approaches. - Handling global and local state. **Navigation and Routing**: - `Navigator 1.0` vs. `Navigator 2.0`. - Named routes and deep linking. - Implementing nested navigation. **Lifecycle**: - App lifecycle (`AppLifecycleState`). - Widget lifecycle (`initState`, `dispose`, etc.). 2. Advanced Flutter Development **Performance Optimization**: - Efficient...

How, Purpose, and When to Use Google ML Kit in Flutter

How, Purpose, and When to Use Google ML Kit in Flutter How, Purpose, and When to Use Google ML Kit in Flutter Purpose of Google ML Kit in Flutter Google ML Kit simplifies adding AI features to mobile applications. Its primary purposes include: On-Device Machine Learning: Perform AI tasks without requiring an internet connection, ensuring low latency, privacy, and faster processing. Pre-trained Models: Use Google's robust, pre-trained models without needing ML expertise. Versatile AI Features: Enable functionalities like: Text recognition Barcode scanning Image labeling Face detection Pose detection Language identification Translation Entity extraction Smart replies When to Use Google ML Kit You should use Google ML Kit when: You need pre-built AI features withou...