Dart使用getter方法从类中获取私有字段值 [英] Dart using getter method to get private field value from class

查看:252
本文介绍了Dart使用getter方法从类中获取私有字段值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面的此类中,我有一个带有 getter 的私有构造函数,不幸的是,我不能将此getter用作 userDao 从类外部,我会收到此错误:

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:


实例成员'userDao'不能通过静态访问进行访问。

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

例如:

final UserDao userDao = MydbModel.userDao;

此实现方式意味着我在此使用 await 构造函数,无需使用该实例创建新实例并定义以下代码:

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

例如:

class MyDatabase {
  AppDatabase db;
  UserDao userDao;

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

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


推荐答案

final UserDao userDao = MydbModel.userDao;

您正在尝试通过访问实例吸气剂班。您的获取器和私有成员都必须是 static 静态的,或者您需要首先构造 MydbModel 的实例。

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使用getter方法从类中获取私有字段值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆