What problem does it solve? Writing correct SQLite data access code in Flutter with package:sqflite requires knowing many subtle rules: binding arguments instead of interpolating strings, avoiding deadlocks by using only the transaction object inside transaction callbacks, handling unsupported Dart types like bool and DateTime, and streaming large result sets without exhausting memory. This Skill encodes those rules so generated database code works correctly the first time. ## Core Features & Use Cases - CRUD and raw SQL guidance: Covers insert, query, update, delete and their raw variants, where/whereArgs binding, IN-clause placeholder generation, ConflictAlgorithm upserts, and reserved-name escaping with escapeName. - Transactions and batches: Explains BEGIN IMMEDIATE semantics, rollback on throw, the db-vs-txn deadlock pitfall, batch commit/apply behavior, and noResult/continueOnError options. - Large results and error handling: Details queryCursor/queryIterate streaming, the 1 MB Android CursorWindow limit, SqfliteSqlCommand reuse, and DatabaseException helpers like isUniqueConstraintError and isNoSuchTableError. - Use Case: Build a Todo DAO in Flutter that inserts rows, queries with bound WHERE clauses, performs an atomic balance transfer in a transaction, and imports a product list in a single batch. ## Quick Start Use the sqflite-crud-and-transactions skill to write a Dart DAO class that inserts, queries, updates, and deletes rows in a Todo table with proper argument binding and a transaction for multi-step writes.