How to use templates:#
- Go to Settings -> Live Templates -> Dart

- Copy and paste next templates into
Dart
Flutter freezed BLoC - frzbloc
#
<template name="frzbloc" value="import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; part '$class_name$_bloc.freezed.dart'; part '$class_name$_event.dart'; part '$class_name$_state.dart'; final class $ClassName$Bloc extends Bloc<$ClassName$Event, $ClassName$State> { $ClassName$Bloc() : super(const $ClassName$State.idle()) { on<_$ClassName$Started>(_start); } void _start(_$ClassName$Started event, Emitter<$ClassName$State> emitter) {} }" description="Freezed BLoC" toReformat="true" toShortenFQNames="true">
<variable name="ClassName" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="class_name" expression="snakeCase(ClassName)" defaultValue="" alwaysStopAt="true" />
<context>
<option name="DART_TOPLEVEL" value="true" />
</context>
</template>
Flutter freezed BLoC Event - frzevent
#
<template name="frzevent" value="part of '$class_name$_bloc.dart'; @Freezed(copyWith: false) sealed class $ClassName$Event with _$$$ClassName$Event { const factory $ClassName$Event.start() = _$ClassName$Started; }" description="Freezed BLoC event" toReformat="true" toShortenFQNames="true">
<variable name="ClassName" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="class_name" expression="snakeCase(ClassName)" defaultValue="" alwaysStopAt="true" />
<context>
<option name="DART_TOPLEVEL" value="true" />
</context>
</template>
Flutter freezed BLoC State - frzstate
#
<template name="frzstate" value="part of '$class_name$_bloc.dart'; @Freezed() sealed class $ClassName$State with _$$$ClassName$State { const $ClassName$State._(); const factory $ClassName$State.idle() = $ClassName$Idle; const factory $ClassName$State.processing() = $ClassName$Processing; const factory $ClassName$State.success() = $ClassName$Success; const factory $ClassName$State.failure() = $ClassName$Failure; }" description="Freezed BLoC state" toReformat="true" toShortenFQNames="true">
<variable name="ClassName" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="class_name" expression="snakeCase(ClassName)" defaultValue="" alwaysStopAt="true" />
<context>
<option name="DART_TOPLEVEL" value="true" />
</context>
</template>
json_serializable DTO - jsondto
#
<template name="jsondto" value="import 'package:json_annotation/json_annotation.dart'; part '$class_name$.g.dart'; @JsonSerializable() class $ClassName$ { const $ClassName$({ required this.value, }); factory $ClassName$.fromJson(Map<String, Object?> json) => _$$$ClassName$FromJson(json); final String? value; Map<String, Object?> toJson() => _$$$ClassName$ToJson(this); } " description="json_seizalizable DTO" toReformat="true" toShortenFQNames="true">
<variable name="ClassName" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="class_name" expression="snakeCase(ClassName)" defaultValue="" alwaysStopAt="true" />
<context>
<option name="DART_TOPLEVEL" value="true" />
</context>
</template>