join 方法未定义 flutter sqflite
the method join isn't defined flutter sqflite
Android 工作室根据以下示例给我 2 个问题:https://pub.dartlang.org/packages/sqflite
1) 没有为 class uploadIntoDb
定义方法 join
2) 未定义 class 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
我认为您需要 导入 path library/package 库作为 join 是这个库的函数之一,用于操作路径。
所以只需添加相应的导入即可解决第一个问题。
import 'package:path/path.dart';
第二个类似加
import 'package:collection/collection.dart';
Android 工作室根据以下示例给我 2 个问题:https://pub.dartlang.org/packages/sqflite
1) 没有为 class uploadIntoDb
join
2) 未定义 class 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
我认为您需要 导入 path library/package 库作为 join 是这个库的函数之一,用于操作路径。
所以只需添加相应的导入即可解决第一个问题。
import 'package:path/path.dart';
第二个类似加
import 'package:collection/collection.dart';