未定义方法 "join" 和类"DeepCollectionEquality"



Android Studio 在使用 sqflite 2.2.0+3 时给了我 2 个错误:

  1. 未为类uploadIntoDb定义方法 join
  2. 未定义的类DeepCollectionEquality

我的代码 :

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:sqflite/sqflite.dart';
class UploadPage extends StatefulWidget {
  @override
  State<StatefulWidget> createState(){
    return new UploadPageState();
  }
}
class UploadPageState extends State<UploadPage>
    with SingleTickerProviderStateMixin {
  @override
  void initState(){
    super.initState();
  }
  @override
  Widget build(BuildContext context) {
    return null;
  }
  Future<void> uploadIntoDb(String valueToUpload) async{
    // Get a location using getDatabasesPath
    var databasesPath = await getDatabasesPath();
    String path = join(databasesPath, 'poa.db');//FIRST PROBLEM

// open the database
    Database database = await openDatabase(path, version: 1,
        onCreate: (Database db, int version) async {
          // When creating the db, create the table
          await db.execute(
              'CREATE TABLE Test (id INTEGER PRIMARY KEY, name TEXT, value INTEGER, num REAL)');
        });
// Insert some records in a transaction
    await database.transaction((txn) async {
      int id1 = await txn.rawInsert(
          'INSERT INTO Test(name, value, num) VALUES("some name", 1234, 456.789)');
      print('inserted1: $id1');
      int id2 = await txn.rawInsert(
          'INSERT INTO Test(name, value, num) VALUES(?, ?, ?)',
          ['another name', 12345678, 3.1416]);
      print('inserted2: $id2');
    });
// Update some record
    int count = await database.rawUpdate(
        'UPDATE Test SET name = ?, VALUE = ? WHERE name = ?',
        ['updated name', '9876', 'some name']);
    print('updated: $count');
// Get the records
    List<Map> list = await database.rawQuery('SELECT * FROM Test');
    List<Map> expectedList = [
      {'name': 'updated name', 'id': 1, 'value': 9876, 'num': 456.789},
      {'name': 'another name', 'id': 2, 'value': 12345678, 'num': 3.1416}
    ];
    print(list);
    print(expectedList);
    assert(const DeepCollectionEquality().equals(list, expectedList));//SECOND PROBLEM
// Count the records
    count = Sqflite
        .firstIntValue(await database.rawQuery('SELECT COUNT(*) FROM Test'));
    assert(count == 2);
// Delete a record
    count = await database
        .rawDelete('DELETE FROM Test WHERE name = ?', ['another name']);
    assert(count == 1);
// Close the database
    await database.close();
  }
}

是的,我包括了依赖项sqflite: ^1.1.0.

我相信您需要导入路径库/包库,因为 join 是该库用于操作路径的功能之一。

因此,应该

只是添加相应的导入,第一个问题应该得到解决。

import 'package:path/path.dart';

第二个是类似的添加

import 'package:collection/collection.dart';

相关内容

  • 没有找到相关文章

最新更新