In practice in a Dart app you usually use freezed or something similar: https://pub.dev/packages/freezed