Home > Net >  Best practice for overriding class fields in Dart
Best practice for overriding class fields in Dart

Time:09-26

I'm in the middle of creating a theming system for my app, where I wish to create a base theme class, with fields for colour and fonts:

abstract class BaseTheme {
  late Color backgroundColor;
  late Color appBarBackgroundColor;
  late Color progressIndicatorColor;

  late Color primaryColor;
  late Color iconColor;
}

(I have to define them as late to keep the Null Safety happy! These have to be overridden anyway, so no problems there).

I would then implement this base class for each theme, as below:

import 'base_theme.dart';

class LightTheme implements BaseTheme {
  Color backgroundColor = Colors.white;
  Color appBarBackgroundColor = Color(0xff1a1818);
  Color progressIndicatorColor = Color(0xffffc114);

  Color primaryColor = Colors.red;
  Color iconColor = Colors.white;
}

I would then use these values to populate the ThemeData:

BaseTheme _lightTheme = new LightTheme();

ThemeData _theme = ThemeData(
  scaffoldBackgroundColor: _lightTheme.backgroundColor,
  // etc...
}

Now, this appears to work fine. However, the page on enter image description here

enter image description here

Here are the more lint: rules https://dart.dev/tools/linter-rules

  • Related