Как управлять данными в «активе» во флаттере - PullRequest
0 голосов
/ 05 октября 2019

Я строю систему базы данных.

Данные из iOS и Android управляются отдельно во флаттере

Я хочу управлять ими в одном месте одновременно.

Итак, я обнаружил, что это были активы, и я решил позаботиться об этом там.

, но Данные обрабатывались нормально в существующей базе данных, но ничего не обрабатывалось в базе данных в «активах».

Сообщение об ошибке не появляется, и код работает нормально.

код базы данных:

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");
  }
}

как исправить этот код?

...