sqflite_gen 0.1.0 copy "sqflite_gen: ^0.1.0" to clipboard
sqflite_gen: ^0.1.0 copied to clipboard

Tired of writing boilerplate code for accessing sqlite database using sqflite? This package can help. It has all of the table specific provider and model code generation functionality you have been lo [...]

example/lib/main.dart

import 'dart:typed_data';

import 'package:example_app/db/database.dart';
import 'package:example_app/db/db.dart';
import 'package:example_app/my_list_item.dart';
import 'package:flutter/material.dart';
import 'package:uuid/uuid.dart';
import 'package:sqflite/sqflite.dart';

const dbName = 'test.db';
late Database database;

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Sqflite_Gen Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Sqflite_Gen Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<Test> _list = [];
  final uuid = const Uuid();

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

  void _initDatabase() async {
    database = await openDatabaseWithMigration(dbName);
    final table = TestProvider(database);
    _updateList(table);
  }

  void _addRecord() async {
    final guid = uuid.v4();
    final newRecord = Test(
      text: guid,
      number: _list.length,
      numeric: _list.length / 2,
      date: DateTime.now(),
      isChecked: _list.length % 2 != 0,
      anything: Uint8List.fromList(guid.codeUnits),
    );

    final table = TestProvider(database);
    await table.insert(newRecord);
    _updateList(table);
  }

  void _updateRecord(int id) async {
    final record = _list.firstWhere((item) => item.id == id);
    final table = TestProvider(database);
    await table.update(record.copyWith(date: DateTime.now()));
    _showSnackBar('$id updated');
    _updateList(table);
  }

  void _deleteRecord(int id) async {
    final table = TestProvider(database);
    await table.delete(id);
    _showSnackBar('$id deleted');
    _updateList(table);
  }

  void _updateList(TestProvider table) async {
    final allRecords = await table.getAll();
    setState(() {
      _list = allRecords;
    });
  }

  void _showSnackBar(String text) {
    if (context.mounted) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text(text),
        ),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: ListView.separated(
        separatorBuilder: (_, __) => const Divider(
          height: 1,
          indent: 10,
          endIndent: 10,
        ),
        itemCount: _list.length,
        scrollDirection: Axis.vertical,
        itemBuilder: (context, index) => MyListItem(
          key: ValueKey(_list[index].id),
          record: _list[index],
          onDelete: _deleteRecord,
          onUpdate: _updateRecord,
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _addRecord,
        tooltip: 'Add record to database',
        child: const Icon(Icons.add),
      ),
    );
  }
}
0
likes
140
points
54
downloads

Publisher

verified publisherosass.de

Weekly Downloads

Tired of writing boilerplate code for accessing sqlite database using sqflite? This package can help. It has all of the table specific provider and model code generation functionality you have been looking for.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

build, code_builder, dart_style, fpdart, http, json_annotation, markdown, path, recase, sqlparser, universal_io, yaml

More

Packages that depend on sqflite_gen