I took this function from https://suragch.medium.com/simple-sqflite-database-example-in-flutter-e56a5aaa3f91.
This works:
import 'package:sqflite/sqflite.dart';
Future<int> localDBQueryRowCount({required sqf.Database db, required String table}) async {
final results = await db.rawQuery('SELECT COUNT(*) FROM $table');
return Sqflite.firstIntValue(results) ?? 0;
}
This doesn't work:
import 'package:sqflite/sqflite.dart' as sqf;
Future<int> localDBQueryRowCount({required sqf.Database db, required String table}) async {
final results = await db.rawQuery('SELECT COUNT(*) FROM $table');
return sqf.firstIntValue(results) ?? 0; //ERROR HERE ON "firstIntValue": The function 'firstIntValue' isn't defined.
}
Why does aliasing a package cause Android Studio to not be able to find the same function that it could find when the package was unaliased?
Dart doesn't have "real" aliases. as
just add a prefix to the library.
That's why sqf.firstIntValue(results)
doesn't work. Instead, using sqf
as a prefix, makes it work: sqf.Sqflite.firstIntValue(results)
.
Reference: https://dart.dev/language/libraries#specifying-a-library-prefix