Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

the method join isn't defined flutter sqflite

Android studio is giving me 2 problems according to the following example: https://pub.dartlang.org/packages/sqflite

1) The method join isn't defined for the class uploadIntoDb

2) Undefined class DeepCollectionEquality

There is my so simple code :

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: Yes I included the dependency: sqflite: ^1.1.0

like image 696
Itoun Avatar asked Apr 26 '19 08:04

Itoun


1 Answers

I believe that you need to import the path library/package library as join is one of the functions of this library that is for manipulation paths.

So it should simply be a matter of adding the respective import and the first problem should be resolved.

import 'package:path/path.dart'; 

The second is similar add

import 'package:collection/collection.dart'; 
like image 65
MikeT Avatar answered Sep 22 '22 16:09

MikeT