Jay Flutter Snippets
Freezed / sealed class / Provider / DI 보일러플레이트를 빠르게 찍어내기 위한 개인용 Dart/Flutter 스니펫 모음입니다.
VS Code, Cursor, Antigravity 등 VS Code 기반 에디터에서 동일하게 동작합니다.
flutter_basic_kit_library 기반의 riverpod_kit / provider_kit / bloc_kit이 CLI로 화면 단위 스캐폴딩을 담당한다면, 이 익스텐션은 파일 안에서 타이핑할 때 바로 쓰는 조각 코드를 담당합니다.
설치
방법 1 — 마켓플레이스 검색 (VS Code, Cursor)
확장 검색창에서 Jay Flutter Snippets 검색 후 설치.
방법 2 — VSIX 수동 설치 (Antigravity 등, 검색 안 될 때)
- Releases 또는 로컬 빌드로
.vsix 파일 준비
Cmd+Shift+P → Extensions: Install from VSIX... → 파일 선택
스니펫 목록
Freezed / 데이터 모델
| Prefix |
설명 |
frf |
Freezed 데이터클래스 — abstract class + const factory named-param 생성자 + fromJson |
sealed1 |
순수 Dart sealed class + Success/Error 수동 구현 (Freezed 미사용) |
sealed2 |
Freezed sealed class + .success/.error factory variant |
json |
@JsonSerializable 클래스 스캐폴드 (Freezed 없이 json_annotation만) |
fromjson |
기존 클래스에 fromJson/toJson 쌍만 추가 |
when |
봉인된 Result<T>에 대한 Dart 3 패턴 매칭 switch |
화면 / 상태 관리
| Prefix |
설명 |
scaffold |
AppBar + body가 있는 기본 Scaffold |
vmstate |
ChangeNotifier ViewModel의 _state 필드 + state getter |
cnp |
ChangeNotifierProvider로 ViewModel + Screen 연결 |
stream1 |
단일 구독용 StreamController + Stream getter |
stream2 |
브로드캐스트 StreamController + Stream getter |
초기 설정
| Prefix |
설명 |
disetup |
get_it + injectable DI 부트스트랩 파일 |
사용 예시
test.dart 파일에서 frf 입력 → Tab:
import 'package:freezed_annotation/freezed_annotation.dart';
part 'test.freezed.dart';
part 'test.g.dart';
@freezed
abstract class ClassName with _$ClassName {
const factory ClassName({
}) = _ClassName;
factory ClassName.fromJson(Map<String, Object?> json) => _$ClassNameFromJson(json);
}
클래스 이름을 고치면 3곳(class, with, factory ... =)이 동시에 바뀌고, Tab을 한 번 더 누르면 필드를 채워 넣는 괄호 안으로 커서가 이동합니다. 필드는 required/@Default/nullable(?) 중 하나를 꼭 지정해야 build_runner가 정상적으로 코드를 생성합니다.
dart run build_runner build --delete-conflicting-outputs
라이선스
MIT — 자세한 내용은 LICENSE 참고.