【发布时间】:2021-09-10 14:03:51
【问题描述】:
我正在尝试使用 sqflite 在颤振中将联系人从手机保存到本地数据库,但在将数据从联系人保存到 sql 表时出错。
我不明白如何从 Contact_service 保存数据到localdb。我使用contact_service包从手机中获取联系人。
import 'dart:io';
import 'package:contacts_service/contacts_service.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
class ContactDatabase {
static final _databaseName = "contact.db";
static final _databaseVersion = 1;
List<Contact> contact = [];
ContactDatabase._init();
static Database _database;
static final ContactDatabase instance = ContactDatabase._init();
Future<Database> get database async {
if (_database != null) return _database;
_database = await _initDB();
return _database;
}
_initDB() async {
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, _databaseName);
return await openDatabase(path,
version: _databaseVersion, onCreate: _onCreate);
}
static final contact_table = 'contacts';
static final id = 'id';
static final name = 'name';
static final phone = 'phone';
static final avatar = 'avatar';
static final synced = 'synced';
static final CREATE_TABLE = "CREATE TABLE $contact_table"
"($name TEXT ,"
"$phone TEXT ,"
"$avatar TEXT ,"
"$synced INTEGER DEFAULT '0' ,"
"$id INTEGER PRIMARY KEY AUTOINCREMENT)";
Future _onCreate(Database db, int version) async {
await db.execute('$CREATE_TABLE');
}
Future<int> insert(table, Map<String, dynamic> row) async {
Database db = await instance.database;
return await db.insert(table, row,
conflictAlgorithm: ConflictAlgorithm.replace);
}
Future<void> inserContact() async {
contact = (await ContactsService.getContacts()).toList();
for (var i = 0; i < 10; i++) {
Map<String, dynamic> row = {
name: contact[i].displayName,
phone: contact[i].displayName,
avatar: "NA",
synced: 1,
};
insert(contact_table, row);
}
}
Future<List<Map<String, dynamic>>> queryAllRows() async {
Database db = await instance.database;
return await db.query(contact_table);
}
}
谁能给我一个解决方案
【问题讨论】:
-
您已经有解决方案了吗?
标签: database flutter sqlite dart sqflite