首页 > 解决方案 > 如何访问由继承类的 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())例如设置busAnimationSize(screenWidth * 0.5, safeScreenHeight * 0.3)。但是当我尝试访问super.init()以设置基类中的变量时,我得到了错误,Invalid context for 'super' invocation.我什至无法通过简单地写入来访问父类的任何字段super.field。我在这里想念什么?

顺便说一句:任何关于如何更好地管理应用程序配置的建议都非常需要(仍在学习)!

标签: oopinheritanceflutterdartextends

解决方案


我正式失明。的 init 方法LoginScreenConfig不是继承类的一部分。我今天完成了。


推荐阅读