Dart使用getter方法从类中获取私有字段值

时间:2019-06-09 05:23:35

标签: dart

在这个下面的类中,我有一个带有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;
  }
}

1 个答案:

答案 0 :(得分:1)

final UserDao userDao = MydbModel.userDao;

您正试图通过 class 访问实例吸气剂。您的获取者和私有成员需要为static,或者您需要首先构造MydbModel的实例。