diff --git a/example/bin/example.dart b/example/bin/example.dart index 6393acdf..80627eb1 100644 --- a/example/bin/example.dart +++ b/example/bin/example.dart @@ -2,7 +2,7 @@ import 'sealed/nullsafe/data/generic/result_single_1.dart'; import 'sealed/nullsafe/data/simple/weather.dart'; void main() { - final a = Weather.sunny(); + final a = Weather.sunny; final b = Weather.rainy(rain: 12); final c = Weather.windy(velocity: 1.5, angle: null); diff --git a/example/bin/sealed/nullsafe/data/simple/meta.sealed.dart b/example/bin/sealed/nullsafe/data/simple/meta.sealed.dart index c9206305..c20bfa7c 100644 --- a/example/bin/sealed/nullsafe/data/simple/meta.sealed.dart +++ b/example/bin/sealed/nullsafe/data/simple/meta.sealed.dart @@ -19,8 +19,6 @@ part of 'meta.dart'; abstract class Weather { const Weather._internal(); - const factory Weather.sunny() = PrefixSunny; - const factory Weather.rainy({ required int rain, }) = BadWeather; @@ -30,6 +28,8 @@ abstract class Weather { double? angle, }) = VeryBadWeather; + static const Weather sunny = PrefixSunny(); + bool get isSunny => this is PrefixSunny; bool get isRainy => this is BadWeather; @@ -297,8 +297,6 @@ class VeryBadWeather extends Weather { abstract class ApiError { const ApiError._internal(); - const factory ApiError.internetError() = InternetError; - const factory ApiError.serverError({ required int code, }) = ServerError; @@ -307,6 +305,8 @@ abstract class ApiError { String? message, }) = OtherError; + static const ApiError internetError = InternetError(); + bool get isInternetError => this is InternetError; bool get isServerError => this is ServerError; diff --git a/example/bin/sealed/nullsafe/data/simple/weather.sealed.dart b/example/bin/sealed/nullsafe/data/simple/weather.sealed.dart index 313adf10..37591827 100644 --- a/example/bin/sealed/nullsafe/data/simple/weather.sealed.dart +++ b/example/bin/sealed/nullsafe/data/simple/weather.sealed.dart @@ -19,8 +19,6 @@ part of 'weather.dart'; abstract class Weather { const Weather._internal(); - const factory Weather.sunny() = WeatherSunny; - const factory Weather.rainy({ required int rain, }) = WeatherRainy; @@ -30,6 +28,8 @@ abstract class Weather { double? angle, }) = WeatherWindy; + static const Weather sunny = WeatherSunny(); + bool get isSunny => this is WeatherSunny; bool get isRainy => this is WeatherRainy; diff --git a/example/bin/sealed/nullsafe/distinct/simple/weather.sealed.dart b/example/bin/sealed/nullsafe/distinct/simple/weather.sealed.dart index 4fc7f1ca..ed246316 100644 --- a/example/bin/sealed/nullsafe/distinct/simple/weather.sealed.dart +++ b/example/bin/sealed/nullsafe/distinct/simple/weather.sealed.dart @@ -19,8 +19,6 @@ part of 'weather.dart'; abstract class Weather { const Weather._internal(); - const factory Weather.sunny() = WeatherSunny; - const factory Weather.rainy({ required int rain, }) = WeatherRainy; @@ -30,6 +28,8 @@ abstract class Weather { double? angle, }) = WeatherWindy; + static const Weather sunny = WeatherSunny(); + bool get isSunny => this is WeatherSunny; bool get isRainy => this is WeatherRainy; diff --git a/example/bin/sealed/nullsafe/identity/simple/weather.sealed.dart b/example/bin/sealed/nullsafe/identity/simple/weather.sealed.dart index 1c4f9fc0..a1dc7be8 100644 --- a/example/bin/sealed/nullsafe/identity/simple/weather.sealed.dart +++ b/example/bin/sealed/nullsafe/identity/simple/weather.sealed.dart @@ -19,8 +19,6 @@ part of 'weather.dart'; abstract class Weather { const Weather._internal(); - const factory Weather.sunny() = WeatherSunny; - const factory Weather.rainy({ required int rain, }) = WeatherRainy; @@ -30,6 +28,8 @@ abstract class Weather { double? angle, }) = WeatherWindy; + static const Weather sunny = WeatherSunny(); + bool get isSunny => this is WeatherSunny; bool get isRainy => this is WeatherRainy; diff --git a/sealed_writer/lib/src/writer/top/top_builder_writer.dart b/sealed_writer/lib/src/writer/top/top_builder_writer.dart index d86d4d2e..6171a5cd 100644 --- a/sealed_writer/lib/src/writer/top/top_builder_writer.dart +++ b/sealed_writer/lib/src/writer/top/top_builder_writer.dart @@ -57,15 +57,23 @@ class TopBuilderWriter extends BaseUtilsWriter { ';', ].joinParts(); - /// ex. factory Weather.sunny() = WeatherSunny; + /// ex. static const Weather sunny = WeatherSunny(); /// /// ex. factory Result.success(...) = ResultSuccess; String topFactoryBuilder(ManifestItem item) => [ - 'const factory $top.${subLower(item)}', - topBuilderDecArgs(item), - ' = ', - subCall(item), - ';', + if (item.fields.isNotEmpty) ...[ + 'const factory $top.${subLower(item)}', + topBuilderDecArgs(item), + ' = ', + subCall(item), + ';', + ], + if (item.fields.isEmpty) ...[ + 'static const $top ${subLower(item)}', + ' = ', + subCall(item), + '();', + ] ].joinParts(); /// top builder methods