Dart using getter method to get private field valu

2019-08-17 10:36发布

问题:

in this below class I have a private constructor with getter, unfortunately, I cant use this getter as userDao from outside of class, I get this error:

Instance member 'userDao' can't be accessed using static access.

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

for example:

final UserDao userDao = MydbModel.userDao;

this implementation means i use await on this constructor without create new instance from that to use and define this codes:

MyDatabase myDatabase = MyDatabase();
myDatabase.initialDatabase();
return myDatabase.getUserDao();

for example:

class MyDatabase {
  AppDatabase db;
  UserDao userDao;

  Future<void> initialDatabase() async {
    db = await $FloorAppDatabase.databaseBuilder('flutter_database.db').build();
  }

  UserDao getUserDao() {
    return db.userDao;
  }
}

回答1:

final UserDao userDao = MydbModel.userDao;

You're trying to access an instance getter through the class. Either your getter and the private member need to be static or your need to construct an instance of MydbModel first.



标签: dart