Sqlite 无法创建数据库。设备文件资源管理器中没有数据库

Sqlite 无法创建数据库。设备文件资源管理器中没有数据库,sqlite,flutter,relational-database,Sqlite,Flutter,Relational Database,我正试图在Flutter中做一个小项目,在其中我在一个表单中添加了一些数据,并在sqflite数据库中添加了一些图像,但我不明白为什么我的代码不能正常工作 这是我的db_助手类 Future<Database> get db async { if (_db != null) return _db; _db = await initDb(); return _db; } //Creating a database with name

我正试图在Flutter中做一个小项目,在其中我在一个表单中添加了一些数据,并在sqflite数据库中添加了一些图像,但我不明白为什么我的代码不能正常工作

这是我的db_助手类

    Future<Database> get db async {
    if (_db != null)
      return _db;
    _db = await initDb();
    return _db;
  }

  //Creating a database with name test.dn in your directory
  initDb() async {
    io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentsDirectory.path, "products.db");
    var theDb = await openDatabase(path, version: 1, onCreate: _onCreate);
    return theDb;
  }

  // Creating a table name Employee with fields
  void _onCreate(Database db, int version) async {
    // When creating the db, create the table
    await db.execute(
        """CREATE TABLE product(
        id INTEGER PRIMARY KEY AUTOINCREMENT, 
        name TEXT NOT NULL, 
        brand TEXT NOT NULL, 
        color TEXT NOT NULL, 
        size INTEGER NOT NULL, 
        qty INTEGER NOT NULL)""");

    await db.execute(
        """CREATE TABLE image(
        id INTEGER PRIMARY KEY AUTOINCREMENT, 
        path TEXT, 
        product_id INTEGER,
        FOREIGN KEY(product_id) REFERENCES product (id) 
        ON DELETE NO ACTION ON UPDATE NO ACTION)""");

    debugPrint("Created tables");
  }

  // Get all products
  Future<List<Map<String, dynamic>>> getProducts() async {
    Database db = this.initDb();

    var result = await db.query('product');
    return result;
    
  }

  // Inser or update image
  Future<product_model.Image> insertImage(product_model.Image image) async {
    // var count = Sqflite.firstIntValue(await _db.rawQuery("SELECT COUNT(*) FROM image WHERE username = ?", [image.id]));
    Database database = await db;

    await database.insert("image", image.toMap(), conflictAlgorithm: ConflictAlgorithm.ignore);

    // await _db.update("image", image.toMap(), where: "id = ?", whereArgs: [image.id]);


    return image;
  }

  // Inser or update product
  Future<product_model.Product> insertProduct(product_model.Product product) async {
    // var count = Sqflite.firstIntValue(await _db.rawQuery("SELECT COUNT(*) FROM product WHERE username = ?", [product.id]));

    Database database = await db;

    await database.insert("product", product.toMap(), conflictAlgorithm: ConflictAlgorithm.ignore);

    // await _db.update("product", product.toMap(), where: "id = ?", whereArgs: [product.id]);

    return product;
  }
这里是我称之为db的地方:

void _saveProductWithPictures() async{

db = DBHelper();
// var db = await dbHelper.initDb();

product = db_elements.Product();
imageModels = List<db_elements.Image>();
int result;

await db.insertProduct(product).whenComplete(() => {
  _nameController.clear(),
  _brandController.clear(),
  _colorController.clear(),
  _sizeController.clear(),
  _qtyController.clear()
});

if (result != 0) {  // Success
  _showAlertDialog('Status', 'Note Saved Successfully');
} else {  // Failure
  _showAlertDialog('Status', 'Problem Saving Note');
}
//save the product

// end save the product

//save the product picture/s
for (var i in _files) imageModels.add(db_elements.Image(path: i.path.toString()));

for (var image in imageModels) await db.insertImage(image).whenComplete(() => {

  _files.clear()

});
//end save the product picture/s
}

我试了几个星期来解决这个问题,但仍然没有希望。我无法将数据保存到数据库中。谢谢你的帮助。提前感谢

您是否尝试过var-databasesPath=wait-getDatabasesPath;而不是getApplicationDocumentsDirectory。此外,您还可以简单地执行products.db而不使用完整路径。库将解析正确的路径。