SQL
In pubspec.yaml add
Add dependencies
^ Means above or equal to that version
SINGLETON
Threads
Can be used with Futures or Sync & Wait
Initialize a DB
Funtional Methods
Use of Db
OR
In pubspec.yaml add
Add dependencies
dependencies:
flutter:
sdk: flutter
sqflite: any
path_provider: any
intl: ^0.15.7
^ Means above or equal to that version
SINGLETON
class DbHelper{
static final DbHelper _dbHelper = DbHelper._internal();
DbHelper._internal();
factory DbHelper(){
return _dbHelper;
}
}
Threads
Can be used with Futures or Sync & Wait
Initialize a DB
import 'package:sqflite/sqflite.dart';
import 'dart:async';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
static Database _db;
Future<Database> get db async {
if (_db == null) {
_db = await initializeDb();
}
return _db;
}
Future<Database> initializeDb() async {
Directory dir = await getApplicationDocumentsDirectory();
String path = dir.path + "todos.db";
var dbTodos = await openDatabase(path, version: 1, onCreate: _createDb);
return dbTodos;
}
void _createDb(Database db, int version) async {
await db.execute(
"CREATE TABLE $tblTodo( $colId INTEGER PRIMARY KEY, $colTitle TEXT, $colDdescription TEXT, $colPriority INTEGER, $colDate TEXT )");
}
Funtional Methods
Future<int> insertTodo(Todo todo) async {
Database db = await this.db;
var result = await db.insert(tblTodo, todo.toMap());
return result;
}
Future<List> geTodo() async {
Database db = await this.db;
var result =
await db.rawQuery("SELECT * FROM $tblTodo order by $colPriority ASC");
return result;
}
Future<int> getCount() async {
Database db = await this.db;
var result = Sqflite.firstIntValue(await db.rawQuery("select count(*) from $tblTodo"));
return result;
}
Future<int> updateTodo(Todo todo) async {
Database db = await this.db;
var result = await db.update(tblTodo, todo.toMap(), where: "$colId = ?", whereArgs: [todo.id]);
return result;
}
Future<int> deleteTodo(int id) async {
Database db = await this.db;
int result = await db.rawDelete("delete from $tblTodo where $colId = $id");
return result;
}
Use of Db
DbHelper helper = DbHelper();
List <Todo> todos = List<Todo>();
helper.initializeDb().then(
(result) => helper.geTodo().then((result) => todos=result));
DateTime today = DateTime.now();
Todo todo = Todo("Buy Melon", 3, today.toString(), "make sure they are good");
helper.insertTodo(todo);
OR
final dbFuture = helper.initializeDb();
dbFuture.then((result) {
final todosFuture = helper.geTodo();
todosFuture.then((result) {
List<Todo> todoList = List<Todo>();
count = result.length;
for (var i = 0; i < count; i++) {
todoList.add(Todo.fromObject(result[i]));
debugPrint(todoList[i].title);
}
});
});
Comentarios
Publicar un comentario