я флаттер New-bi
я делаю базу данных sqlite во флаттере
Когда я обновляю только одну базу данных, все данные инициализируются.
Итак, я обнаружил проблему,Причина заключалась в том, что значение, не включенное в «класс», казалось, входило в «ноль» и инициализировало его.
Код обновления:
Todo newtodo = Todo(id: 2,age: _age,name: _name ,intro: _intro);
DBHelper().updateTodo(newtodo);
Todo:
class Todo {
int id;
String name;
String intro;
String age;
String password, email;
String imagelist;
Todo({
this.id,
this.email,
this.password,
this.name,
this.intro,
this.imagelist,
this.age,});
factory Todo.fromJson(Map<String, dynamic> json) => Todo(
id: json["id"],
intro: json["intro"],
name: json["name"],
age: json["age"],
email: json["email"],
password: json["password"],
imagelist: json["imagelist"],
);
Map<String, dynamic> toJson() =>
{
"id" :id,
"name": name,
"age": age,
"intro" : intro,
"email" : email,
"password" : password,
"imagelist" : imagelist,
};
}
Из-за этой проблемы я решил получить данные из базы данных и поместить их в класс.
вот так:
ex) _dataname = (Data Received)
Todo newtodo = Todo(id: 2,age: _age,name: _name ,intro: _intro, email : _dataname);
you know what i'm mean?
Итак, я хочу получить данные для 'String 'в базе данных!
мой пользовательский DBhelpcode:
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){
_database = await initDB();
return _database;}else {
return _database;
}
}
DB() async{
Directory dbDir = await getApplicationDocumentsDirectory();
final Future<Database> DBopen = openDatabase(
await join(dbDir.path, "socialDB.db"),
version: 1,
);
return DBopen;
}
initDB() async{
Directory dbDir = await getApplicationDocumentsDirectory();
String path = join(dbDir.path, "socialDB.db");
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,
imagelist TEXT,
age TEXT) ''');
},
);
}
createData(Todo todo)async{
final db = await database;
var res = await db.insert(tableName, todo.toJson());
return res;
}
getperson(int id) async{
final db = await DB();
List<Map> results = await db.query(tableName,
columns : ["id", "name", "imagelist"],
where : 'id = ?',
whereArgs : [id]);
if(results.length > 0){
return Todo.fromJson(results.first);
}
return null;
}
//read
getTodo(int id) async{
final db = await DB();
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 DB();
var res = await db.update(tableName, todo.toJson(),
where: 'id =?' , whereArgs: [todo.id]);
print('update');
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");
}
}
Суть в том, что я хочу получить объект из базы данных в виде строки.
Как я могу сделать .?
пожалуйста, помогите мне ...: (