代码之家  ›  专栏  ›  技术社区  ›  Itoun

方法join未定义为flift sqflite

  •  0
  • Itoun  · 技术社区  · 7 年前

    根据下面的例子,Android studio给了我两个问题: https://pub.dartlang.org/packages/sqflite

    1) 方法 join 没有为类定义 uploadIntoDb

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

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

    0 回复  |  直到 7 年前
        1
  •  90
  •   MikeT    7 年前

    我相信你需要 进口 这个 path library/package 图书馆作为 参加 是此库用于操纵路径的函数之一。

    因此,只需增加各自的进口,第一个问题就应该得到解决。

    import 'package:path/path.dart';
    

    第二个是类似的加法

    import 'package:collection/collection.dart';