oop - 如何访问由继承类的 init 方法创建的变量?
问题描述
我正在使用 Flutter 和 Dart 创建一个应用程序,我想为应用程序的配置创建一个基类。然后,在创建新屏幕时,我想创建一个类ScreenConfig extends BaseConfig
并将该屏幕的特定配置添加到基本配置之上。我这样做是为了删除必须获取 MediaQueryData 的样板,然后在每次创建新屏幕配置时设置适当的尺寸。
基类
class BaseConfig {
double screenWidth;
double screenHeight;
double statusBarHeight;
double navigationBarHeight;
/// [safeScreenHeight] is the height of the device screen when
/// the height of the statusbar and navigationbar is subtracted
double safeScreenHeight;
void init(BuildContext context) {
MediaQueryData mediaQuery = MediaQuery.of(context);
screenHeight = mediaQuery.size.height;
screenWidth = mediaQuery.size.width;
statusBarHeight = mediaQuery.padding.top;
navigationBarHeight = kBottomNavigationBarHeight;
safeScreenHeight = screenHeight - (statusBarHeight + navigationBarHeight);
}
}
扩展基类的类
class LoginScreenConfig extends BaseConfig {
static Size busAnimation;
static Size logo;
static Size logoText;
static Size upperLoginButton;
static Size upperRegisterButton;
static Size textFormField;
static Size submitButton;
static Size mainContainer;
static Size yellowContainer;
static Size greyContainer;
}
@override
void init(BuildContext context) {
super.init(context);
}
我现在想(里面LoginScreenConfig.init()
)例如设置busAnimation
为Size(screenWidth * 0.5, safeScreenHeight * 0.3)
。但是当我尝试访问super.init()
以设置基类中的变量时,我得到了错误,Invalid context for 'super' invocation.
我什至无法通过简单地写入来访问父类的任何字段super.field
。我在这里想念什么?
顺便说一句:任何关于如何更好地管理应用程序配置的建议都非常需要(仍在学习)!
解决方案
我正式失明。的 init 方法LoginScreenConfig
不是继承类的一部分。我今天完成了。
推荐阅读
- php - 如何在 PHP 中访问这个 XML 文件中的数据?
- c++ - constexpr new 如何分配内存?
- javascript - socket.emit 仅在递归函数(使用 requestAnimationFrame 实现)终止后才有效
- numpy - pytorch 与 autograd.numpy
- django - Django 管理器将 m2m 的第一个元素注释为 fk
- php - 无法将多选下拉值保存到数据库
- pdf - 为什么 PDF 表单的互操作性如此不同?
- sas - SAS:如何在 libname 语句中防止“警告:未解析宏的明显调用”?
- c++ - 从 VS6 升级到 VS2017 数学差异
- hybris - SAP Hybris Backoffice - 默认打开高级搜索