在这个下面的类中,我有一个带有getter
的私有构造函数,不幸的是,我不能从类外部使用此吸气剂作为userDao
,但出现此错误:
无法使用静态访问权限访问实例成员'userDao'。
class MydbModel {
UserDao _userDao;
MydbModel._(this._userDao);
static Future<MydbModel> create() async => MydbModel._(await fn());
static fn() {
MyDatabase myDatabase = MyDatabase();
myDatabase.initialDatabase();
return myDatabase.getUserDao();
}
UserDao get userDao=>_userDao;
}
例如:
final UserDao userDao = MydbModel.userDao;
此实现意味着我在此构造函数上使用await
而不用从中创建新实例来使用和定义以下代码:
MyDatabase myDatabase = MyDatabase();
myDatabase.initialDatabase();
return myDatabase.getUserDao();
例如:
class MyDatabase {
AppDatabase db;
UserDao userDao;
Future<void> initialDatabase() async {
db = await $FloorAppDatabase.databaseBuilder('flutter_database.db').build();
}
UserDao getUserDao() {
return db.userDao;
}
}
答案 0 :(得分:1)
final UserDao userDao = MydbModel.userDao;
您正试图通过 class 访问实例吸气剂。您的获取者和私有成员需要为static
,或者您需要首先构造MydbModel
的实例。