Как сериализовать и десериализовать иерархию sealed-классов Dart в JSON и обратно
Поместите в JSON поле-дискриминатор, переключайтесь по нему в фабрике на sealed-базе и переключайтесь по подтипу, чтобы записать объект обратно. Три рабочие версии на Dart 3.13.7: ручное сопоставление с образцом, json_serializable 6.15.2 и Freezed 4.0.3 с unionKey и fallbackUnion, а также подводные камни каждой из них.