Search

ν”„λ‘œμ νŠΈ ꡬ성 파일

ν”ŒλŸ¬ν„° ν”„λ‘œμ νŠΈ ꡬ성 파일

flutter_app β”œβ”€β”€ android β”œβ”€β”€ ios β”œβ”€β”€ build β”œβ”€β”€ lib β”‚ └── main.dart β”œβ”€β”€ test β”œβ”€β”€ pub.yaml β”œβ”€β”€ pubspec.lock └── README.md

android

ν”ŒλŸ¬ν„°λ₯Ό μ»΄νŒŒμΌν•œ μ•ˆλ“œλ‘œμ΄λ“œ λ„€μ΄ν‹°λΈŒ μ½”λ“œκ°€ λ“€μ–΄ μžˆλŠ” 디렉터리
β€’
Android μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉŒλ“œν•˜λŠ” 데 ν•„μš”ν•œ Android ν”„λ‘œμ νŠΈ 파일이 λ“€μ–΄ μžˆλŠ” λ””λ ‰ν„°λ¦¬μž…λ‹ˆλ‹€.
β€’
μ•ˆλ“œλ‘œμ΄λ“œ μ•±μ˜ μ„€μ •κ³Ό Gradle λΉŒλ“œ μŠ€ν¬λ¦½νŠΈκ°€ 여기에 μœ„μΉ˜ν•©λ‹ˆλ‹€.

ios

ν”ŒλŸ¬ν„°λ₯Ό μ»΄νŒŒμΌν•œ iOS λ„€μ΄ν‹°λΈŒ μ½”λ“œκ°€ λ“€μ–΄ μžˆλŠ” 디렉터리
β€’
iOS μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉŒλ“œν•˜λŠ” 데 ν•„μš”ν•œ iOS ν”„λ‘œμ νŠΈ 파일이 λ“€μ–΄ μžˆλŠ” λ””λ ‰ν„°λ¦¬μž…λ‹ˆλ‹€.
β€’
iOS μ•±μ˜ μ„€μ •κ³Ό Info.plist 파일이 여기에 μœ„μΉ˜ν•©λ‹ˆλ‹€.

build

ν”„λ‘œμ νŠΈ λΉŒλ“œ μ‹œ, μƒμ„±λ˜λŠ” 파일
β€’
λΉŒλ“œλœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 파일 및 λΉŒλ“œ 쀑에 μƒμ„±λœ 기타 파일이 여기에 μ €μž₯λ©λ‹ˆλ‹€.
β€’
이 λ””λ ‰ν„°λ¦¬λŠ” .gitignore νŒŒμΌμ— ν¬ν•¨λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

lib

ν”ŒλŸ¬ν„° μ•± 개발 μ†ŒμŠ€ μ½”λ“œ νŒŒμΌμ„ μž‘μ„±ν•˜λŠ” 디렉토리
β€’
μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ†ŒμŠ€ μ½”λ“œκ°€ ν¬ν•¨λœ λ””λ ‰ν„°λ¦¬μž…λ‹ˆλ‹€.
β€’
main.dart와 같은 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ§„μž…μ  및 λ‹€λ₯Έ Dart νŒŒμΌλ“€μ΄ 여기에 μœ„μΉ˜ν•©λ‹ˆλ‹€.

main.dart

μ•± μ‹€ν–‰ μ‹œ, μ‹œμž‘μ μ΄ λ˜λŠ” 메인 파일
β€’
μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ§„μž…μ μ΄ λ˜λŠ” Dart μ½”λ“œ νŒŒμΌμž…λ‹ˆλ‹€.
β€’
μ—¬κΈ°μ—μ„œ μ•±μ˜ κΈ°λ³Έ ꡬ성과 ν™”λ©΄ λ ˆμ΄μ•„μ›ƒμ΄ μ •μ˜λ©λ‹ˆλ‹€.
// main.dart import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}); // μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 루트 μœ„μ ― @override Widget build(BuildContext context) { return MaterialApp( // 디버그 λ°°λ„ˆ λΉ„ν™œμ„±ν™” debugShowCheckedModeBanner: false, title: 'Flutter App', // μ•± 이름 theme: ThemeData( primarySwatch: Colors.blue, ), home: const MyHomePage(title: 'Flutter App Main Title'), // ν™ˆ ν™”λ©΄ 제λͺ© ); } } class MyHomePage extends StatefulWidget { const MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @override State<MyHomePage> createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { int _counter = 0; // 숫자λ₯Ό μ¦κ°€μ‹œν‚€λŠ” λ©”μ„œλ“œ void _incrementCounter() { setState(() { _counter++; }); } // 숫자λ₯Ό κ°μ†Œμ‹œν‚€λŠ” λ©”μ„œλ“œ void _decrementCounter() { setState(() { // μˆ«μžκ°€ 0보닀 큰 κ²½μš°μ—λ§Œ κ°μ†Œ _counter > 0 ? _counter-- : 0; }); } // 화면을 λΉŒλ“œν•˜λŠ” λ©”μ„œλ“œ @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ const Text( 'You have pushed the button this many times:', ), Text( '$_counter', style: Theme.of(context).textTheme.headline4, ), ], ), ), floatingActionButton: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ SizedBox(width: 20), // 숫자λ₯Ό μ¦κ°€μ‹œν‚€λŠ” FloatingActionButton FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Add', // 툴팁 ν…μŠ€νŠΈ child: const Icon(Icons.add), ), const Spacer(), // 숫자λ₯Ό κ°μ†Œμ‹œν‚€λŠ” FloatingActionButton FloatingActionButton( onPressed: _decrementCounter, tooltip: 'Minus', // 툴팁 ν…μŠ€νŠΈ child: const Icon(Icons.remove), ), ], ), ); } }
YAML
볡사

test

ν…ŒμŠ€νŠΈ μ†ŒμŠ€ μ½”λ“œ 파일이 μžˆλŠ” 디렉터리
β€’
ν…ŒμŠ€νŠΈ 파일이 ν¬ν•¨λœ λ””λ ‰ν„°λ¦¬μž…λ‹ˆλ‹€.
β€’
ν…ŒμŠ€νŠΈ 주도 개발(TDD)을 μ§€μ›ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λ©°, ν…ŒμŠ€νŠΈ μ½”λ“œκ°€ 여기에 μž‘μ„±λ©λ‹ˆλ‹€.

pubspec.yaml

ν”„λ‘œμ νŠΈ 이름, μ„€λͺ…, 버전, μ˜μ‘΄μ„±, 정적 파일(asset) 을 κ΄€λ¦¬ν•˜λŠ” μ„€μ • 파일
β€’
Dart νŒ¨ν‚€μ§€ 관리 및 ν”„λ‘œμ νŠΈ ꡬ성을 μ •μ˜ν•˜λŠ” 핡심 파일인 pubspec.yaml νŒŒμΌμž…λ‹ˆλ‹€.
β€’
μ˜μ‘΄μ„± νŒ¨ν‚€μ§€, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 이름, 버전, λ¦¬μ†ŒμŠ€ 경둜 등이 여기에 μ •μ˜λ©λ‹ˆλ‹€.
# pubspec.yaml # ν”„λ‘œμ νŠΈμ˜ 이름 name: flutter_app # ν”„λ‘œμ νŠΈμ— λŒ€ν•œ κ°„λ‹¨ν•œ μ„€λͺ… description: A new Flutter project. # νŒ¨ν‚€μ§€λ₯Ό pub.dev에 κ²Œμ‹œν•˜μ§€ μ•ŠμŒ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # 버전 정보 version: 1.0.0+1 # Flutter SDK 버전 및 ν™˜κ²½ μ„€μ • environment: sdk: '>=2.18.2 <3.0.0' # μ˜μ‘΄μ„± νŒ¨ν‚€μ§€ λͺ©λ‘ dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.2 # 개발 μ€‘μ—λ§Œ ν•„μš”ν•œ μ˜μ‘΄μ„± νŒ¨ν‚€μ§€ λͺ©λ‘ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.0 # Flutter μ„€μ • flutter: # Material Design μ‚¬μš© μ—¬λΆ€ uses-material-design: true
YAML
볡사

pubspec.lock

νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €κ°€ μ˜μ‘΄μ„±μ— λŒ€ν•œ μ •ν™•ν•œ 버전을 κ΄€λ¦¬ν•˜λŠ” 파일
β€’
νŒ¨ν‚€μ§€ μ˜μ‘΄μ„±μ˜ μ •ν™•ν•œ 버전 정보λ₯Ό κΈ°λ‘ν•˜λŠ” νŒŒμΌμž…λ‹ˆλ‹€.
β€’
pubspec.yaml νŒŒμΌμ— λͺ…μ‹œλœ μ˜μ‘΄μ„± 버전과 μΌμΉ˜ν•˜λ„λ‘ μžλ™μœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€.

README.md

ν”„λ‘œμ νŠΈλ₯Ό μ„€λͺ…ν•˜λŠ” 파일
β€’
ν”„λ‘œμ νŠΈμ— λŒ€ν•œ μ„€λͺ…, μ‚¬μš©λ²•, λΌμ΄μ„ μŠ€ 등을 κΈ°λ‘ν•œ λ§ˆν¬λ‹€μš΄ νŒŒμΌμž…λ‹ˆλ‹€.
β€’
ν”„λ‘œμ νŠΈμ— λŒ€ν•œ λ¬Έμ„œν™”μ™€ 곡유λ₯Ό μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.