我正在建立一个数据库系统。
iOS和android中的数据在Flutter中分别进行管理
我想同时在一个地方进行管理。
所以,我发现这是资产,所以我决定在那里照顾。
但是,数据已在现有数据库中正常处理,但在“资产”中的数据库中未进行任何处理。
错误消息没有出现,并且代码正常工作。
数据库代码:
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
import 'package:socialapp/model/todo.dart';
import 'dart:async';
import 'dart:io' as io;
import 'package:path/path.dart';
import 'package:flutter/services.dart';
import 'dart:io';
final String tableName = 'person';
class DBHelper{
DBHelper._();
static final DBHelper _db = DBHelper._();
factory DBHelper() => _db;
//해당 변수에 데이터베이스 정보 저장
static Database _database;
Future<Database> get database async{
if(_database == null){
print('데이터베이스 없음 , 초기화 시작');
_database = await initDB();
return _database;}else {
print('이미 데이터베이스가 존재');
return _database;
}
}
initDB() async{
Directory dbDir = await getApplicationDocumentsDirectory();
String path = join(dbDir.path, "social.db");
print('초기화중');
print(path);
ByteData data = await rootBundle.load(join('assets', 'socialapp.db'));
List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
await File(path).writeAsBytes(bytes);
return await openDatabase(
path,
version: 1,
onOpen: (db) {},
onCreate: (Database db, int version) async{
await db.execute('''
CREATE TABLE $tableName(
id INTEGER PRIMARY KEY,
email TEXT,
password TEXT,
name TEXT,
intro TEXT,
age TEXT) ''');
},
);
}
createData(Todo todo)async{
print('데이터베이스 생성중..');
final db = await database;
print('데이터베이스 추가중 ...');
var res = await db.insert(tableName, todo.toJson());
print('데이터베이스 추가완료');
return res;
}
//read
getTodo(int id) async{
final db = await database;
var res = await db.query(tableName, where: 'id = ?', whereArgs: [id]);
return res.isNotEmpty ? Todo.fromJson(res.first) : Null;
}
getAllTodos() async{
final db = await database;
var res = await db.query(tableName);
return res;
}
updateTodo(Todo todo) async{
final db = await database;
var res = await db.update(tableName, todo.toJson(),
where: 'id =?' , whereArgs: [todo.id]);
return res;
}
//Delete
deleteTodo(int id) async{
final db = await database;
db.delete(tableName, where: 'id =?', whereArgs: [id]);
}
deleteAllTodos() async{
final db =await database;
db.rawDelete("Delete * from $tableName");
}
}
如何修复此代码?