Я создаю приложение, используя Flutter с Dart, и хочу создать базовый класс для конфигурации приложения. Затем, при создании нового экрана, я хочу создать класс ScreenConfig extends BaseConfig
и добавить указанную конфигурацию c для этого экрана поверх базовой конфигурации. Я делаю это, чтобы удалить шаблон необходимости извлечения 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
. Чего мне здесь не хватает?
КСТАТИ: Любые предложения о том, как мне лучше управлять настройками приложения, очень востребованы (все еще учатся)!