Dart class constants code example

Example: constant dart

EDIT

Now that the flag --dart-define has been added to the different command lines of Flutter, the following answer no-longer applies.

Instead just declare constants wherever you want, and potentially refer to other answers.

While there are no technical issues with static const, architecturally you may want to do it differently.

Flutter tend to not have any global/static variables and use an InheritedWidget.

Which means you can write:

class MyConstants extends InheritedWidget {
  static MyConstants of(BuildContext context) => context. dependOnInheritedWidgetOfExactType();

  const MyConstants({Widget child, Key key}): super(key: key, child: child);

  final String successMessage = 'Some message';

  @override
  bool updateShouldNotify(MyConstants oldWidget) => false;
}
Then inserted at the root of your app:

void main() {
  runApp(
    MyConstants(
      child: MyApp(),
    ),
  );
}
And used as such:

@override
Widget build(BuilContext context) {
  return Text(MyConstants.of(context).successMessage);
}
This has a bit more code than the static const, but offer many advantages:

Works with hot-reload
Easily testable and mockable
Can be replaced with something more dynamic than constants without rewriting the whole app.
But at the same time it:

Doesn't consume much more memory (the inherited widget is typically created once)
Is performant (Obtaining an InheritedWidget is O(1))

Tags:

Misc Example