[Flutter] Dart 스니펫

최재원's avatar
Jul 30, 2025
[Flutter] Dart 스니펫

안드로이드 적용법

notion image
notion image
notion image

커서 적용법

Ctrl + Shift + P → "snippets" 검색 → Preferences: Configure User Snippets 선택
notion image
notion image
notion image
  • 중괄호 안에 “Flutter … 내용 넣기
notion image
notion image

스니펫들

fst

뷰 시작 코드
커서용
"Flutter Basic App Template": { "prefix": "fst", "body": [ "import 'package:flutter/material.dart';", "", "void main() {", " runApp(const MyApp());", "}", "", "class MyApp extends StatelessWidget {", " const MyApp({super.key});", "", " @override", " Widget build(BuildContext context) {", " return MaterialApp(", " debugShowCheckedModeBanner: false,", " home: ${1:MyScreen}(),", " );", " }", "}", "", "class ${1:MyScreen} extends StatelessWidget {", " const ${1:MyScreen}({super.key});", "", " @override", " Widget build(BuildContext context) {", " return Scaffold(", " body: Placeholder(),", " );", " }", "}" ], "description": "Flutter 기본 앱 템플릿 스니펫" }
 
스튜디오 용
import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp(); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: $NAME$(), ); } } class $NAME$ extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( body: Placeholder(), ); } }

ment

주석
커서용
"Comment Header": { "prefix": "ment", "body": [ "/// Created By ${1:YourName}, ${2:2025-06-19}", "/// ", "/// email : ${3:you@example.com}", "/// ", "/// tip : ${4:간단한 팁을 여기에 적으세요}" ], "description": "주석" }
  • 커서는 자동 날짜 완성이 없음
 
스튜디오용
/// Created By $NAME$, $DATE$ /// /// email : $EMAIL$ /// /// tip : $TIP$
notion image
notion image

wc

커스텀 위젯 클래스
커서용
"StatelessWidget Template": { "prefix": "wc", "body": [ "import 'package:flutter/material.dart';", "", "class ${1:MyWidget} extends StatelessWidget {", " const ${1:MyWidget}({super.key});", "", " @override", " Widget build(BuildContext context) {", " return ${2:Container()};", " }", "}" ], "description": "StatelessWidget 기본 템플릿" }
 
스튜디오용
import 'package:flutter/material.dart'; class $NAME$ extends StatelessWidget { @override Widget build(BuildContext context) { return $WIDGET$; } }

wf

커스텀 위젯 함수
커서용
"Widget Named Function": { "prefix": "wf", "body": [ "Widget ${1:NAME}() {", " return SizedBox();", "}" ], "description": "Widget 함수 기본 스니펫" }
 
스튜디오용
Widget $NAME$() { return SizedBox(); }

사용 예시

notion image
  1. 이름 작성후 esc 키 연타
  1. 프로바이더 이름 소문자로 변경

riverVM

리버팟 뷰모델
커서용
"Riverpod ViewModel & Model Template": { "prefix": "riverVM", "body": [ "import 'package:flutter_riverpod/flutter_riverpod.dart';", "", "final ${1/(.)(.*)/${1:/downcase}${2}/}Provider = AutoDisposeNotifierProvider<${1}VM, ${1}Model?>(() {", " return ${1}VM();", "});", "", "class ${1}VM extends AutoDisposeNotifier<${1}Model?> {", " final mContext = navigatorKey.currentContext!;", "", " @override", " ${1}Model? build() {", " return null;", " }", "}", "", "class ${1}Model {", " ${1}Model();", "", " ${1}Model.fromMap(Map<String, dynamic> data);", "", " ${1}Model copyWith() {", " return this;", " }", "}" ], "description": "Riverpod Notifier + ViewModel + Model 템플릿" },
 
스튜디오용
import 'package:flutter_riverpod/flutter_riverpod.dart'; final $NAME$Provider = AutoDisposeNotifierProvider<$NAME$VM, $NAME$Model?>(() { return $NAME$VM(); }); class $NAME$VM extends AutoDisposeNotifier<$NAME$Model?> { final mContext = navigatorKey.currentContext!; @override $NAME$Model? build() { return null; } } class $NAME$Model { $NAME$Model(); $NAME$Model.fromMap(Map<String, dynamic> data); $NAME$Model copyWith() { return this; } }

riverFM

리버팟 폼모델
커서용
"Riverpod State + FM + Model Template": { "prefix": "riverFM", "body": [ "import 'package:flutter_riverpod/flutter_riverpod.dart';", "", "final ${1/(.)(.*)/${1:/downcase}${2}/}Provider = AutoDisposeNotifierProvider<${1}FM, ${1}Model>(() {", " return ${1}FM();", "});", "", "class ${1}FM extends AutoDisposeNotifier<${1}Model> {", " @override", " ${1}Model build() {", " return ${1}Model();", " }", "}", "", "class ${1}Model {", " ${1}Model();", "", " ${1}Model copyWith() {", " return this;", " }", "}" ], "description": "Riverpod 기본 FM + Model 템플릿 (AutoDispose)" },
 
스튜디오용
import 'package:flutter_riverpod/flutter_riverpod.dart'; final $NAME$Provider = AutoDisposeNotifierProvider<$NAME$FM, $NAME$Model>(() { return $NAME$FM(); }); class $NAME$FM extends AutoDisposeNotifier<$NAME$Model> { @override $NAME$Model build() { return $NAME$Model(); } } class $NAME$Model { $NAME$Model(); $NAME$Model copyWith() { return this; } }

riverGVM

리버팟 글로벌 뷰모델
커서용
"Riverpod Notifier GVM + Model Template": { "prefix": "riverGVM", "body": [ "import 'package:flutter_riverpod/flutter_riverpod.dart';", "", "final ${1/(.)(.*)/${1:/downcase}${2}/}Provider = NotifierProvider<${1}GVM, ${1}Model>(() {", " return ${1}GVM();", "});", "", "class ${1}GVM extends Notifier<${1}Model> {", " final mContext = navigatorKey.currentContext!;", "", " @override", " ${1}Model build() {", " return ${1}Model();", " }", "}", "", "class ${1}Model {", " ${1}Model();", "}" ], "description": "Riverpod NotifierProvider GVM + Model 기본 구조" },
 
스튜디오용
import 'package:flutter_riverpod/flutter_riverpod.dart'; final $NAME$Provider = NotifierProvider<$NAME$GVM, $NAME$Model>(() { return $NAME$GVM(); }); class $NAME$GVM extends Notifier<$NAME$Model> { final mContext = navigatorKey.currentContext!; @override $NAME$Model build() { return $NAME$Model(); } } class $NAME$Model { $NAME$Model(); }

커서용 완성 다트 스니펫

{ "Flutter Basic App Template": { "prefix": "fst", "body": [ "import 'package:flutter/material.dart';", "", "void main() {", " runApp(const MyApp());", "}", "", "class MyApp extends StatelessWidget {", " const MyApp({super.key});", "", " @override", " Widget build(BuildContext context) {", " return MaterialApp(", " debugShowCheckedModeBanner: false,", " home: ${1:MyScreen}(),", " );", " }", "}", "", "class ${1:MyScreen} extends StatelessWidget {", " const ${1:MyScreen}({super.key});", "", " @override", " Widget build(BuildContext context) {", " return Scaffold(", " body: Placeholder(),", " );", " }", "}" ], "description": "Flutter 기본 앱 템플릿 스니펫" }, "Comment Header": { "prefix": "ment", "body": [ "/// Created By ${1:YourName}, ${2:2025-06-19}", "/// ", "/// email : ${3:you@example.com}", "/// ", "/// tip : ${4:간단한 팁을 여기에 적으세요}" ], "description": "주석" }, "Riverpod ViewModel & Model Template": { "prefix": "riverVM", "body": [ "import 'package:flutter_riverpod/flutter_riverpod.dart';", "", "final ${1/(.)(.*)/${1:/downcase}${2}/}Provider = AutoDisposeNotifierProvider<${1}VM, ${1}Model?>(() {", " return ${1}VM();", "});", "", "class ${1}VM extends AutoDisposeNotifier<${1}Model?> {", " final mContext = navigatorKey.currentContext!;", "", " @override", " ${1}Model? build() {", " return null;", " }", "}", "", "class ${1}Model {", " ${1}Model();", "", " ${1}Model.fromMap(Map<String, dynamic> data);", "", " ${1}Model copyWith() {", " return this;", " }", "}" ], "description": "Riverpod Notifier + ViewModel + Model 템플릿" }, "Riverpod State + FM + Model Template": { "prefix": "riverFM", "body": [ "import 'package:flutter_riverpod/flutter_riverpod.dart';", "", "final ${1/(.)(.*)/${1:/downcase}${2}/}Provider = AutoDisposeNotifierProvider<${1}FM, ${1}Model>(() {", " return ${1}FM();", "});", "", "class ${1}FM extends AutoDisposeNotifier<${1}Model> {", " @override", " ${1}Model build() {", " return ${1}Model();", " }", "}", "", "class ${1}Model {", " ${1}Model();", "", " ${1}Model copyWith() {", " return this;", " }", "}" ], "description": "Riverpod 기본 FM + Model 템플릿 (AutoDispose)" }, "Riverpod Notifier GVM + Model Template": { "prefix": "riverGVM", "body": [ "import 'package:flutter_riverpod/flutter_riverpod.dart';", "", "final ${1/(.)(.*)/${1:/downcase}${2}/}Provider = NotifierProvider<${1}GVM, ${1}Model>(() {", " return ${1}GVM();", "});", "", "class ${1}GVM extends Notifier<${1}Model> {", " final mContext = navigatorKey.currentContext!;", "", " @override", " ${1}Model build() {", " return ${1}Model();", " }", "}", "", "class ${1}Model {", " ${1}Model();", "}" ], "description": "Riverpod NotifierProvider GVM + Model 기본 구조" }, "Widget Named Function": { "prefix": "wf", "body": [ "Widget ${1:NAME}() {", " return SizedBox();", "}" ], "description": "Widget 함수 기본 스니펫" }, "StatelessWidget Template": { "prefix": "wc", "body": [ "import 'package:flutter/material.dart';", "", "class ${1:MyWidget} extends StatelessWidget {", " const ${1:MyWidget}({super.key});", "", " @override", " Widget build(BuildContext context) {", " return ${2:Container()};", " }", "}" ], "description": "StatelessWidget 기본 템플릿" } }
Share article

jjack1