Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:sqflite/sqflite.dart';
- import 'package:path/path.dart';
- final String table = "contactTable";
- final String idColumn = "idColumn";
- final String nameColumn = "nameColumn";
- final String emailColumn = "emailColumn";
- final String phoneColumn = "phoneColumn";
- final String imgColumn = "imgColumn";
- class ContactHelper {
- static final ContactHelper _instance = ContactHelper.internal();
- factory ContactHelper() => _instance;
- ContactHelper.internal();
- Database _db;
- Future<Database> get db async {
- if (_db == null) {
- _db = await initDb();
- }
- return _db;
- }
- Future<Database> initDb() async {
- final databasesPath = await getDatabasesPath();
- final path = join(databasesPath, "contacts.db");
- return await openDatabase(path, version: 1,
- onCreate: (Database db, int newerVersion) async {
- await db.execute('''CREATE TABLE $table (
- $idColumn INTEGER PRIMARY KEY,
- $nameColumn TEXT,
- $emailColumn TEXT,
- $phoneColumn TEXT,
- $imgColumn TEXT
- )''');
- });
- }
- Future<Contact> saveContact(Contact contact) async {
- Database dbContact = await this.db;
- contact.id = await dbContact.insert(table, contact.toMap());
- return contact;
- }
- Future<Contact> getContact(int id) async {
- Database dbContact = await this.db;
- List<Map> maps = await dbContact.query(table,
- columns: [
- idColumn,
- nameColumn,
- emailColumn,
- phoneColumn,
- imgColumn,
- ],
- where: "$idColumn = ?",
- whereArgs: [id]);
- if (maps.length > 0) {
- return Contact.fromMap(maps.first);
- } else {
- return null;
- }
- }
- Future<List<Contact>> getAll() async {
- Database dbContact = await this.db;
- List<Map> maps = await dbContact.rawQuery("SELECT * FROM $table");
- List<Contact> list = List<Contact>();
- for (Map m in maps) {
- list.add(Contact.fromMap(m));
- }
- return list;
- }
- Future<int> deleteContact(int id) async {
- Database dbContact = await this.db;
- return await dbContact.delete(table, where: "$idColumn = ?", whereArgs: [id]);
- }
- Future<int> updateContact(Contact contact) async {
- Database dbContact = await this.db;
- return await dbContact.update(table, contact.toMap(), where: "$idColumn = ?", whereArgs: [contact.id]);
- }
- Future<int> getNumber() async {
- Database dbContact = await this.db;
- return Sqflite.firstIntValue(await dbContact.rawQuery("SELECT COUNT(*) FROM $table"));
- }
- Future closer() async {
- Database dbContact = await this.db;
- dbContact.close();
- }
- }
- class Contact {
- int id;
- String name;
- String email;
- String phone;
- String img;
- Contact();
- Contact.fromMap(Map map) {
- this.id = map[idColumn];
- this.name = map[nameColumn];
- this.email = map[emailColumn];
- this.phone = map[phoneColumn];
- this.img = map[imgColumn];
- }
- Map toMap() {
- Map<String, dynamic> maps = {
- nameColumn: this.name,
- emailColumn: this.email,
- phoneColumn: this.phone,
- imgColumn: this.img,
- };
- if (this.id != null) maps[idColumn] = this.id;
- return maps;
- }
- @override
- String toString() {
- return "Contact: id = $id, name = $name, email = $email, phone = $phone, img = $img";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement