【发布时间】:2021-08-19 14:17:47
【问题描述】:
希望你们一切都好!
我遇到了关于我的 Flutter 应用程序的问题:我一直在关注 how to use sqflite in Flutter 上的 Youtube 教程,但我无法让我的 toMap 函数在我的数据库类中工作......它总是返回给我错误“无法使用静态访问访问实例成员“toMap””。有谁知道这是关于什么的?我真的不明白...提前谢谢!!
下面,有问题的代码:
poi.dart
final String tablePOI = 'poi';
class POIFields {
static final String id = '_id';
static final String email = 'email';
static final String village = 'village';
static final String lieu = 'lieu';
static final String type = 'type';
static final String etat = 'etat';
static final String notes = 'notes';
static final String latitude = 'latitude';
static final String longitude = 'longitude';
static final String imageUrl = 'image_url';
}
class POI {
final int id;
final String email;
final String village;
final String lieu;
final String type;
final String etat;
final String notes;
final String latitude;
final String longitude;
final String imageUrl;
POI({this.id, this.email, this.village, this.lieu, this.type, this.etat, this.notes, this.latitude, this.longitude, this.imageUrl});
Map<String, Object> toMap() => {
POIFields.id: id,
POIFields.email: email,
POIFields.village: village,
POIFields.lieu: lieu,
POIFields.type: type,
POIFields.etat: etat,
POIFields.notes: notes,
POIFields.latitude: latitude,
POIFields.longitude: longitude,
POIFields.imageUrl: imageUrl,
};
String toString() {
return 'POI{id: $id, email: $email, village: $village, lieu: $lieu, type: $type, etat: $etat, notes: $notes, latitude: $latitude, longitude: $longitude, image_url: $imageUrl}';
}
}
poi_db.dart
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
import 'package:stage_app_mpc/models/poi.dart';
class POIDatabase {
static final POIDatabase instance = POIDatabase._init();
static Database _database;
POIDatabase._init();
Future<Database> get database async {
if (_database != null) {
return _database;
}
else {
_database = await _initDB('poi.db');
return _database;
}
}
Future<Database> _initDB(String filePath) async {
final dbPath = await getDatabasesPath();
final path = join(dbPath, filePath);
return openDatabase(path, version: 1, onCreate: _createDB);
}
Future _createDB(Database db, int version) async {
await db.execute('CREATE TABLE poi (id INTEGER PRIMARY KEY, email TEXT, village TEXT, lieu TEXT, type TEXT, etat TEXT, notes TEXT, latitude TEXT, longitude TEXT, image_url TEXT)');
}
Future<POI> create(POI poi) async {
final db = await instance.database;
final id = await db.insert('poi', POI.toMap());
}
Future closeDB() async {
final db = await instance.database;
db.close();
}
}
【问题讨论】:
标签: sql database flutter dart sqflite