Le studio Android me pose 2 problèmes selon l'exemple suivant: https://pub.dartlang.org/packages/sqflite
1) La méthode join
n'est pas définie pour la classe uploadIntoDb
2) Classe non définie DeepCollectionEquality
Il y a mon code si simple:
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: Oui j'ai inclus la dépendance: sqflite: ^1.1.0
Je crois que vous devez importer le bibliothèque/package de chemin bibliothèque comme join est l'une des fonctions de cette bibliothèque qui est pour les chemins de manipulation.
Il devrait donc simplement s'agir d'ajouter l'importation respective et le premier problème devrait être résolu.
import 'package:path/path.Dart';
Le second est similaire
import 'package:collection/collection.Dart';