Sql 实例成员可以';不能使用静态访问进行访问

Sql 实例成员可以';不能使用静态访问进行访问,sql,database,flutter,dart,sqflite,Sql,Database,Flutter,Dart,Sqflite,我希望你们都做得很好 我遇到了一个关于我的Flitter应用程序的问题:我一直在关注Youtube上的一个教程,但我无法让我的toMap函数在我的数据库类中工作。。。它总是返回错误“实例成员”toMap“无法使用静态访问访问”。有人知道这是怎么回事吗?我真的不明白。。。提前谢谢 下面是有问题的代码: poi.dart final String tablePOI = 'poi'; class POIFields { static final String id = '_id'; stat

我希望你们都做得很好

我遇到了一个关于我的Flitter应用程序的问题:我一直在关注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}';
  }

}
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();
  }

}
最终字符串tablePOI='poi';
类字段{
静态最终字符串id=''u id';
静态最终字符串email='email';
静态最终字符串village='village';
静态最终字符串LIUE='LIUE';
静态最终字符串类型='type';
静态最终字符串etat='etat';
静态最终字符串注释='notes';
静态最终字符串纬度='纬度';
静态最终字符串经度='经度';
静态最终字符串imageUrl='image_url';
}
类POI{
最终int id;
最终字符串电子邮件;
最后串村;
最终字符串替换;
最终字符串类型;
最终字符串etat;
最后的弦乐;
最终弦纬度;
最终字符串经度;
最终字符串imageUrl;
POI({this.id,this.email,this.village,this.liue,this.type,this.etat,this.notes,this.latitude,this.longitude,this.imageUrl});
映射toMap()=>{
POIFields.id:id,
POIFields.email:email,
村庄:村庄,
利乌:利乌,
类型:类型,
POIFields.etat:etat,
注:注:,
纬度:纬度,
经度:经度,
POIFields.imageUrl:imageUrl,
};
字符串toString(){
返回'POI{id:$id,email:$email,village:$village,liue:$liue,type:$type,etat:$etat,notes:$notes,纬度:$latitude,经度:$longitude,image_url:$imageUrl}';
}
}
poi_db.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}';
  }

}
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();
  }

}
import'package:path/path.dart';
导入“包:sqflite/sqflite.dart”;
导入“包:阶段应用程序/模型/poi.dart”;
类数据库{
静态最终POIDatabase实例=POIDatabase._init();
静态数据库;
POI数据库。_init();
未来获取数据库异步{
如果(_database!=null){
返回数据库;
}
否则{
_database=await_initDB('poi.db');
返回数据库;
}
}
Future\u initDB(字符串文件路径)异步{
final dbPath=wait getDatabasesPath();
最终路径=连接(dbPath,filePath);
返回openDatabase(路径,版本:1,onCreate:_createDB);
}
Future _createDB(数据库数据库,int版本)异步{
wait db.execute('创建表poi(id整数主键、电子邮件文本、村庄文本、替代文本、键入文本、etat文本、注释文本、纬度文本、经度文本、图像\ url文本)');
}
未来创建(POI)异步{
final db=wait instance.database;
final id=wait db.insert('poi',poi.toMap());
}
Future closeDB()异步{
final db=wait instance.database;
db.close();
}
}

您引用的是类
POI
,而不是参数
POI

  Future<POI> create(POI poi) async {
    final db = await instance.database;
    final id = await db.insert('poi', POI.toMap());
  }
然后您的参数或字段可以是
currentPoi
activePoi
poiData
,等等