[25.06.20 TIL] Flutter & Git, πŸŽ“ ν•™μŠ΅ ν”Œλžœ

κΉ€μ˜λ―ΌΒ·2025λ…„ 6μ›” 20일

[Flutter 7κΈ°] μ˜¨λ³΄λ”©

λͺ©λ‘ 보기
5/5

🎯 μ˜€λŠ˜μ€ 2μ£Όμ°¨ κΈ°λŠ₯μ„± μœ„μ ―κ³Ό 3μ£Όμ°¨ μƒνƒœκ΄€λ¦¬μ— λŒ€ν•΄ λ³΅μŠ΅ν•˜κ³ μž κ°•μ˜λ₯Ό λ‹€μ‹œ λ“€μ—ˆλ‹€.
그리고 μƒνƒœκ΄€λ¦¬μ™€ λ ˆμ΄μ•„μ›ƒμ— λŒ€ν•΄ μΆ”κ°€ ν•™μŠ΅μ„ ν–ˆλŠ”λ°, μƒνƒœκ΄€λ¦¬λŠ” λ‚΄μš©μ΄ μ–΄λ €μ›Œμ„œ μ—¬μ „νžˆ μ΄ν•΄ν•˜κΈ΄ νž˜λ“€μ—ˆλ‹€.
λ ˆμ΄μ•„μ›ƒμ€ ν—·κ°ˆλ¦¬λŠ” λΉ„μŠ·ν•œ κΈ°λŠ₯이 μžˆμ–΄μ„œ λΉ„κ΅ν•˜λŠ” μ‹œκ°„μ„ κ°€μ‘Œλ‹€.


μ˜€ν›„μ—λŠ” νŒ€ μ†Œκ°œ ν”„λ‘œμ νŠΈ λ°œν‘œνšŒκ°€ μžˆμ—ˆκ³ , νŒ€μ›λ“€κ³Ό KPT 회고λ₯Ό μž‘μ„±ν–ˆλ‹€.
그리고, λ§Œμ‘±λ„ 평가, λ‹€λ©΄ 평가, 개인 과제 - ν•™μŠ΅ 일지 μ œμΆœλ„ μ™„λ£Œν•˜μ˜€λ‹€.


✏️ κ°•μ˜ 볡슡

πŸ“‹ μœ„μ ―
πŸ“‹ μƒνƒœκ΄€λ¦¬
πŸ“‹ μƒνƒœκ΄€λ¦¬

μœ„μ ―μ€ λ ˆμ΄μ•„μ›ƒμ„ κ΅¬μ„±ν•˜λŠ” 거라 직관적이고, 무언가 μ‰½κ²Œ κΈ°λŠ₯을 μ°ΎλŠ” λŠλ‚ŒμΈ λ°˜λ©΄μ— μƒνƒœκ΄€λ¦¬λŠ” μ–΄λ ΅λ‹€. μ™œ μ‚¬μš©ν•΄μ•Ό λ˜λŠ”μ§€, μ–΄λ–€ 이점이 μžˆλŠ”μ§€λŠ” μ•Œκ² μœΌλ‚˜, μ½”λ“œμ—μ„œ 이λ₯Ό ν™œμš©ν•΄μ„œ μž‘μ„±ν•œλ‹€λŠ”κ²Œ 쉽지 μ•Šμ•„ 보인닀.


πŸ” Git

βœ” Git을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ„μ™€μ£ΌλŠ” ν”„λ‘œκ·Έλž¨μΈ forkκ°€ μ„€μΉ˜λ˜μ–΄ μžˆλŠ”λ°, μ˜ˆμ „μ— 파일 λ§Œλ“€μ–΄μ„œ μ–˜λ₯Ό ν™œμš©ν•΄ Git에 μ—…λ‘œλ“œν•˜λŠ” 것을 ν•΄λ΄€μ—ˆλ‹€.

βœ” μ–΄μ œ λ“€μ—ˆλ˜ Git νŠΉκ°•μ΄ 쑰금 μ–΄λ ΅κ³ , μ‹€μ œ μ‚¬μš©ν•΄λ³Έμ§€ μ’€ 된 것 κ°™μ•„μ„œ, 계정도 λ‹€μ‹œ λ‘œκ·ΈμΈν•˜κ³  이것저것 λˆŒλŸ¬λ³΄κΈ°λ„ ν•˜κ³  μ‚΄νŽ΄λ³΄μ•˜λ‹€.


πŸŽ“ 개인 ν•™μŠ΅

πŸ”₯ Lifecycle

Widget Lifecycle

🎯 μ™œ 생λͺ…μ£ΌκΈ°λ₯Ό μ•Œμ•„μ•Ό ν• κΉŒ?
βœ” StatefulWidget은 μƒνƒœ 변화에 따라 화면을 계속 λ‹€μ‹œ κ·Έλ¦¬λŠ”λ°, κ·Έ κ³Όμ •μ—μ„œ μ •ν•΄μ§„ μˆœμ„œλŒ€λ‘œ ν•¨μˆ˜λ“€μ΄ ν˜ΈμΆœλœλ‹€.

πŸ• μ–Έμ œ μ΄ˆκΈ°κ°’μ„ μ„€μ •ν•΄μ•Ό ν•˜λŠ”μ§€
🧼 μ–Έμ œ λ¦¬μ†ŒμŠ€λ₯Ό 정리해야 ν•˜λŠ”μ§€
πŸ”„ μƒνƒœ λ³€κ²½ μ‹œ μ–΄λ–€ ν•¨μˆ˜κ°€ λͺ‡ 번 λΆˆλ¦¬λŠ”μ§€ μ•Œμˆ˜μžˆλ‹€.


πŸ’« 생λͺ…μ£ΌκΈ° 흐름

createState()
↓
initState()
↓
didChangeDependencies()
↓
build()
↓
didUpdateWidget() ← (widget 변경될 λ•Œλ§Œ)
↓
setState() β†’ build() 반볡
↓
deactivate()
↓
dispose()

λ©”μ„œλ“œμ–Έμ œ 호좜됨?μ„€λͺ…
createState()μœ„μ ―μ΄ λ§Œλ“€μ–΄μ§ˆ λ•Œ ν•œ 번StatefulWidget이 μ–΄λ–€ μƒνƒœ(State)λ₯Ό μ‚¬μš©ν• μ§€ μ—°κ²°
initState()μƒνƒœ(State)κ°€ 생성될 λ•Œ ν•œ 번초기 데이터 μ„€μ •, API 호좜 λ“± μ—¬κΈ°μ„œ! (super.initState() κΌ­ 호좜!)
didChangeDependencies()initState() 직후 + μ˜μ‘΄μ„± λ°”λ€” λ•Œcontext.dependOnInheritedWidgetOfExactType() 호좜 μ‹œ
build()μƒνƒœ λ³€κ²½λ§ˆλ‹€ν™”λ©΄ 그릴 λ•Œλ§ˆλ‹€ 호좜됨. setState() ν•˜λ©΄ λ‹€μ‹œ 싀행됨
didUpdateWidget()λΆ€λͺ¨ μœ„μ ―μ΄ μƒˆλ‘œμš΄ 인자λ₯Ό 보낼 λ•ŒoldWidgetκ³Ό 비ꡐ κ°€λŠ₯
deactivate()μœ„μ ―μ΄ 제거될 λ•Œ μ§μ „ν™”λ©΄μ—μ„œ μ‚¬λΌμ§ˆ μ€€λΉ„ 쀑
dispose()μœ„μ ―μ΄ μ™„μ „νžˆ 제거될 λ•Œμ»¨νŠΈλ‘€λŸ¬, 슀트림 λ“± λ©”λͺ¨λ¦¬ ν•΄μ œ μž‘μ—… (ν•„μˆ˜)

πŸ’‘ μ‹€μ œ 개발 μ‹œ μ–Έμ œ μ“°λ‚˜?

μž‘μ—… μ’…λ₯˜μ–΄λ””μ„œ?μ™œ?
μ• λ‹ˆλ©”μ΄μ…˜ 컨트둀러 μ„ μ–ΈinitState()ν•œ 번만 μ΄ˆκΈ°ν™”ν•΄μ•Ό ν•˜λ‹ˆκΉŒ
API 첫 호좜initState() or didChangeDependencies()context μ“Έ 수 μžˆλŠ” κ³³μ—μ„œ
λ©”λͺ¨λ¦¬ ν•΄μ œdispose()슀트림, 컨트둀러 κΌ­ 정리
μƒνƒœ κ°±μ‹ setState() + build()UI λ‹€μ‹œ 그릴 λ•Œ

πŸ”₯ μƒνƒœκ΄€λ¦¬

🎯 μ™œ μƒνƒœ 관리λ₯Ό μ•Œμ•„μ•Ό ν• κΉŒ?
FlutterλŠ” UI = ν•¨μˆ˜(μƒνƒœ)라고 생각해.
즉, β€œλ°μ΄ν„°κ°€ λ°”λ€Œλ©΄ UI도 바뀐닀” λŠ” 것이닀.

그럼 이 데이터λ₯Ό μ–΄λ””μ„œ, μ–΄λ–»κ²Œ λ°”κΏ€κΉŒ?


πŸ’‘ Getx, Key

πŸš€ Getx vs key

βœ” getx와 같은 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μƒνƒœλ₯Ό λ³€κ²½ν•˜κ³  싢은 μœ„μ ―μ„ 쀑앙 관리 라이브러리λ₯Ό 톡해 전달 λ°›κ³ , 직접 전달해쀀닀.

βœ” λ°˜λ©΄μ— key 같은 경우, keyλ₯Ό κ°€μ§„ μœ„μ ―μ— μ§μ ‘μ μœΌλ‘œ μ ‘κ·Όν•˜κΈ° μœ„ν•΄μ„œ μ“΄λ‹€.
예λ₯Ό λ“€μ–΄ μœ„μ ―μ˜ μ‚¬μ΄μ¦ˆ 값을 κ΅¬ν•˜κΈ° μœ„ν•΄ keyλ₯Ό λ“±λ‘ν•΄μ„œ keyλ₯Ό ν˜ΈμΆœν•˜λŠ” 방식인데, ν•΄λ‹Ή 방법은 μ½”λ“œκ°€ 맀우 λ³΅μž‘ν•˜κΈ° λ•Œλ¬Έμ— getxλ‚˜ provider 같은 라이브러리λ₯Ό μ‚¬μš©ν•œλ‹€κ³  ν•œλ‹€.


✏️ setState

class Counter extends StatefulWidget {
  const Counter({super.key});
//
  
  State<Counter> createState() => _CounterState();
}
//
class _CounterState extends State<Counter> {
  int count = 0;
//
  
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text('Count: $count'),
        ElevatedButton(
          onPressed: () {
            setState(() {
              count++; // βœ… 이 μ•ˆμ—μ„œ μƒνƒœλ₯Ό λ°”κΎΈλ©΄
            });        // πŸ‘‰ build()κ°€ λ‹€μ‹œ ν˜ΈμΆœλΌμ„œ UIκ°€ 갱신됨!
          },
          child: const Text('증가'),
        ),
      ],
    );
  }
}

πŸ” 핡심 흐름

βœ” count μƒνƒœλ₯Ό μ •μ˜
βœ” λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ setState() μ‹€ν–‰
βœ” λ‚΄λΆ€ λ³€μˆ˜ κ°’ λ³€κ²½
βœ” build() λ₯Ό λ‹€μ‹œ μ‹€ν–‰ν•΄μ„œ UI κ°±μ‹  πŸ’‘


πŸ’« μƒνƒœλ₯Ό μœ„μ ― 간에 μ£Όκ³ λ°›κΈ°
μœ„κ³„ ꡬ쑰Tree둜, λΆ€λͺ¨ β†’ μžμ‹ 으둜 값을 μ „λ‹¬ν•˜κ³ , μžμ‹ β†’ λΆ€λͺ¨ 둜 이벀트λ₯Ό μ „λ‹¬ν•˜λŠ” ꡬ쑰가 기본이닀. 이게 κΉŠμ–΄μ§ˆμˆ˜λ‘ μ ˆμ°¨κ°€ κΈΈκ³ , λ³΅μž‘ν•΄μ„œ getx와 같은 라이브러리λ₯Ό μ‚¬μš©ν•˜λŠ” 것인데...


βœ… 정리

  • setState() πŸ‘‰ Stateful μœ„μ ― λ‚΄λΆ€μ—μ„œ μƒνƒœ λ°”κΎΈκ³  UI λ‹€μ‹œ κ·Έλ¦Ό
  • props 전달 πŸ‘‰ λΆ€λͺ¨ β†’ μžμ‹μ—κ²Œ 데이터 μ£ΌκΈ°
  • callback 전달 πŸ‘‰ μžμ‹ β†’ λΆ€λͺ¨μ—κ²Œ 이벀트 μ•Œλ¦¬κΈ°


πŸ”₯ λ ˆμ΄μ•„μ›ƒ

μœ„μ ―ν•΅μ‹¬ μ—­ν• μžμ£Ό μ“°μ΄λŠ” 상황
Row, Columnκ°€λ‘œ/μ„Έλ‘œλ‘œ μœ„μ ― λ‚˜μ—΄κΈ°λ³Έ UI μ •λ ¬
Expanded남은 곡간을 κ· λ“±ν•˜κ²Œ μ°¨μ§€λ²„νŠΌ, 리슀트 λ“± μžλ™ 채움 λ ˆμ΄μ•„μ›ƒ
Flexible남은 곡간을 λΉ„μœ¨λ‘œ μ°¨μ§€ (더 μœ μ—°)곡간 λ‚˜λˆ„κΈ°, 크기 μ œν•œμ΄ ν•„μš”ν•  λ•Œ
Spacer빈 곡간 λ„£κΈ° (보톡 Expandedλ‘œλ„ κ°€λŠ₯)μ–‘μͺ½ λ„μš°κΈ°, 간격 쑰절 λ“±
Stackμœ„μ ―μ„ 겹치게 λ°°μΉ˜μ•„μ΄μ½˜ μœ„μ— 뱃지, μΉ΄λ“œ λ°°κ²½ λ“±

πŸ’¬ κ°•μ˜μ—μ„œλŠ” spacer λŒ€μ‹ μ— sized boxλ₯Ό μ“΄ 것 κ°™λ‹€.


✏️ Row, Column

Column(
  children: [
    Text('μœ„'),
    Text('μ•„λž˜'),
  ],
)
Row(
  children: [
    Icon(Icons.star),
    Text('κ°€λ‘œ λ‚˜μ—΄'),
  ],
)

βœ” μ–΄μ œ ν•™μŠ΅ν–ˆλ˜ children은 μ΄λ ‡κ²Œ μœ„μ ―μ΄ μ—¬λŸ¬κ°œμΌ λ•Œ μ‚¬μš©ν•œλ‹€.


✏️ Expanded

Row(
  children: [
    Expanded(child: Container(color: Colors.red)), // ← 남은 곡간 λ‹€ μ°¨μ§€
    Container(width: 100, color: Colors.blue),
  ],
)
Expanded(flex: 2, child: ...)

βœ” 남은 곡간을 μžλ™μœΌλ‘œ 꽉 μ±„μš°λ©°, 보톡 flex 속성도 같이 μ“΄λ‹€.


✏️ Flexible

Flexible(
  flex: 1,
  child: Container(color: Colors.green),
)

βœ” Expandedλž‘ λΉ„μŠ·ν•˜μ§€λ§Œ ExpandedλŠ” 무쑰건 꽉 μ±„μš°λŠ” λ°˜λ©΄μ—, 쑰금 더 μœ μ—°ν•˜λ©°, 곡간이 λΆ€μ‘±ν•˜λ©΄ 그에 맞좰 쀄어든닀.


πŸ₯½ Expanded vs Flexible

ν•­λͺ©Expanded πŸ“¦Flexible 🧘
πŸ“Œ λͺ©μ λ‚¨μ€ 곡간을 무쑰건 꽉 채움곡간을 ν•„μš”ν•œ 만큼만 μ‚¬μš©
πŸ“ κΈ°λ³Έ λ™μž‘ν•­μƒ μ΅œλŒ€ 곡간 μ°¨μ§€ν•¨μžμ‹ μœ„μ ―μ΄ μ›ν•˜λŠ” 만큼만 μ°¨μ§€
βš™οΈ λ‚΄λΆ€ μ˜΅μ…˜fit: FlexFit.tight κ³ μ •fit: FlexFit.tight or loose 선택 κ°€λŠ₯
πŸ”§ child ν•„μš”βœ… μžˆμŒβœ… 있음
🎯 μ£Ό μš©λ„λ²„νŠΌ λ“± 꽉 μ±„μš°λŠ” λ ˆμ΄μ•„μ›ƒν…μŠ€νŠΈλ‚˜ μž‘μ€ μœ„μ ― μœ μ—°ν•˜κ²Œ 넣을 λ•Œ

πŸ“¦ Expanded

Row(
  children: [
    Expanded(
      child: Container(
        height: 50,
        color: Colors.red,
      ),
    ),
    Container(
      width: 100,
      height: 50,
      color: Colors.blue,
    ),
  ],
)

βœ” λΉ¨κ°„ λ°•μŠ€κ°€ 남은 곡간 μ „λΆ€ μ°¨μ§€ν•œλ‹€.


πŸ“¦ Flexible

Row(
  children: [
    Flexible(
      fit: FlexFit.loose, // πŸ’‘ μ›ν•˜λŠ” 만큼만 μ°¨μ§€
      child: Container(
        width: 80,
        height: 50,
        color: Colors.red,
      ),
    ),
    Container(
      width: 100,
      height: 50,
      color: Colors.blue,
    ),
  ],
)

βœ” λΉ¨κ°„ λ°•μŠ€λŠ” 80만큼만 μ°¨μ§€ν•œλ‹€. β†’ πŸ’‘ μœ μ—°ν•¨!


βœ… 핡심 ν•œ 쀄 μš”μ•½
πŸ‘‰ Expanded = λ°˜λ“œμ‹œ 곡간 λ‹€ μ°¨μ§€ β—κ°•μ œ
πŸ‘‰ Flexible = ν•„μš”ν•˜λ©΄ 곡간 쀄일 수 있음 βœ… 선택


πŸ” μ˜ˆμ‹œ

μ˜ˆμ‹œ μƒν™©μΆ”μ²œ μœ„μ ―
λ²„νŠΌ 두 개λ₯Ό λ‚˜λž€νžˆ, λ˜‘κ°™μ€ 크기둜Expanded
ν…μŠ€νŠΈκ°€ λ„ˆλ¬΄ 컀지면 μ€„μ΄κ²Œ ν•˜κ³  μ‹ΆμŒFlexible
μΌλΆ€λŠ” 꽉 μ±„μš°κ³ , μΌλΆ€λŠ” κ°„κ²©λ§Œ μ£ΌκΈ°Expanded + Spacer

✏️ Spacer

Row(
  children: [
    Icon(Icons.arrow_back),
    Spacer(), // ← 쀑간에 빈 곡간
    Icon(Icons.menu),
  ],
)

πŸ₯½ Spacer vs Flexible

ν•­λͺ©Spacer 🧱Flexible 🧘
πŸ“Œ λͺ©μ λΉˆ 곡간 λ§Œλ“€κΈ° (간격 벌리기)μœ„μ ―μ„ μœ μ—°ν•˜κ²Œ 배치
🧩 child ν•„μš”βŒ μ—†μŒβœ… ν•„μˆ˜ (Flexible(child: ...))
βš™οΈ λ‚΄λΆ€ κ΅¬ν˜„Flexible(child: SizedBox()) 둜 λ˜μ–΄ μžˆμŒμ§μ ‘ μœ μ—°ν•œ μœ„μ ― λ„£κΈ° κ°€λŠ₯
πŸ“ 크기 μ„€μ •flex λΉ„μœ¨λ‘œ κ³΅κ°„λ§Œ μ°¨μ§€fit μ˜΅μ…˜μœΌλ‘œ μ€„μ–΄λ“€κ±°λ‚˜ λŠ˜μ–΄λ‚¨
🎯 μ£Ό μš©λ„μœ„μ ― 사이 간격을 μžλ™ μ‘°μ ˆμœ„μ ― 크기λ₯Ό μœ μ—°ν•˜κ²Œ 쑰절

πŸ₯½ Spacer vs SizedBox

ν•­λͺ©Spacer 🧱SizedBox πŸ“¦
πŸ“Œ λͺ©μ λ‚¨μ€ 곡간을 μ°¨μ§€ν•˜λŠ” 빈 μœ„μ ―κ³ μ •λœ 크기의 빈 곡간 λ§Œλ“€κΈ°
πŸš€ μ‚¬μš© μœ„μΉ˜Row, Column λ‚΄λΆ€ (Flex κ³„μ—΄λ§Œ)μ–΄λ””λ“  μ‚¬μš© κ°€λŠ₯ (Stack, Center λ“± 포함)
πŸ“ 크기 지정직접 크기 μ§€μ • ❌ β†’ μžλ™μœΌλ‘œ λŠ˜μ–΄λ‚¨width, height 직접 μ„€μ • κ°€λŠ₯
πŸ”§ flex κ°€λŠ₯flex: 1 λ“±μœΌλ‘œ λΉ„μœ¨ μ„€μ • κ°€λŠ₯λΉ„μœ¨ μ§€μ • ❌, 무쑰건 κ³ μ • 크기
πŸ’¬ μ˜ˆμ‹œ μš©λ„μœ„μ ― 사이에 λΉ„μœ¨ 간격 λ„μš°κ³  싢을 λ•Œμœ„μ ― 사이에 λ”± 8px 간격 λ„£κ³  싢을 λ•Œ

πŸ“¦ SizedBox 예제

Column(
  children: [
    Text('μœ„'),
    SizedBox(height: 20), // βœ… μœ„μ•„λž˜λ‘œ 20px 간격
    Text('μ•„λž˜'),
  ],
)

βœ” λ”± λ–¨μ–΄μ§€λŠ” 간격이 ν•„μš”ν•  λ•Œ μ’‹μœΌλ©°, 크기 μ—†λŠ” SizedBox()λŠ” κ·Έλƒ₯ 빈 μœ„μ ―μ΄λ‹€.


🧱 Spacer 예제

Row(
  children: [
    Icon(Icons.menu),
    Spacer(), // βœ… 남은 곡간 λ‹€ μ°¨μ§€ν•΄μ„œ 였λ₯Έμͺ½ 밀어냄
    Icon(Icons.search),
  ],
)

βœ” Spacer()λŠ” 남은 곡간을 μžλ™μœΌλ‘œ μ±„μ›Œμ£Όλ©°, flex μ„€μ • κ°€λŠ₯ν•˜λ‹€. Spacer(flex: 2) λ“±


✏️ Stack

Stack(
  children: [
    Container(width: 100, height: 100, color: Colors.blue),
    Positioned(
      right: 0,
      bottom: 0,
      child: Icon(Icons.star, color: Colors.yellow),
    ),
  ],
)

βœ” μ €λ²ˆμ— λ°°μ› λ˜ Stack, μ‚¬μš©μž μ•„μ΄μ½˜μ— +λ²„νŠΌμ„ 겹쳐 λ§Œλ“œλŠ” 것 처럼 ν™œμš© κ°€λŠ₯ν•˜λ‹€.


μœ„μ ―μ„€λͺ…
Centerκ°€μš΄λ° μ •λ ¬
Alignμœ„μΉ˜λ₯Ό 쒌츑/우츑/ν•˜λ‹¨ λ“±μœΌλ‘œ μ„€μ • κ°€λŠ₯
SizedBoxκ³ μ • 크기 or 간격 λ§Œλ“€κΈ°

πŸŽ“ ν•™μŠ΅ λ°©ν–₯

πŸ’­ μ•Œκ³ λ¦¬μ¦˜

  • λ‹€μŒ μ£Όμ°¨λΆ€ν„° 맀일 μ•„μΉ¨ 1μ‹œκ°„μ”© μ§„ν–‰ν•˜κ²Œ λ˜λŠ”λ°, λ§Œμ•½ μ–΄λ ΅κ±°λ‚˜, 문제 κ°œμˆ˜κ°€ λΆ€μ‘±ν•  경우 μΆ”κ°€μ μœΌλ‘œ ν•™μŠ΅μ„ μ§„ν–‰ν•˜λŠ”κ²Œ 쒋을 것 κ°™λ‹€.
    아직 μ½”λ“œκ°€ μ΅μˆ™ν•˜μ§€ μ•Šκ³ , λ‡Œκ°€ λ”±λ”±ν•˜κ²Œ κ΅³μ–΄μžˆλŠ” 것 κ°™μ•„μ„œ... λ§λž‘λ§λž‘ν•˜κ²Œ λ§Œλ“œλ €λ©΄ ν•„μš”ν•  것 같은데, λ‹€λ₯Έ 반의 μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό ν•˜λ‚˜μ”© ν’€μ–΄λ³΄λŠ” 것도 λ‚˜μ˜μ§€ μ•Šμ„ 것 κ°™λ‹€.

πŸ• κ°•μ˜

  • Dart 기초 λ¬Έλ²•μœΌλ‘œ κ°•μ˜λ„ μ§€κΈ‰λ˜μ–΄ μˆ˜κ°•μ„ μ§„ν–‰ν•΄μ•Ό 될 것인데, 아직 κ°•μ˜ μˆ˜μ€€μ„ λͺ¨λ₯΄λ‹ˆ 곡뢀 μ‹œκ°„μ΄ μ–Όλ§ˆλ‚˜ 걸릴지 λͺ¨λ₯Έλ‹€.
    κΈ°μ‘΄μ—λŠ” μ­‰ λ“£κ±°λ‚˜, 쀑간쀑간 λ©ˆμΆ°μ„œ κΆκΈˆν•œ 점을 ν•΄κ²°ν•˜κ³  이어 λ“£κ±°λ‚˜ ν–ˆμ—ˆλŠ”λ°... λ§Œμ•½, λΆ„λŸ‰κ³Ό λ‚΄μš©μ΄ μ μ ˆν•΄μ„œ κΈ°κ°„ μ•ˆμ— μ΄‰λ°•ν•˜μ§€ μ•Šκ²Œ μ—¬μœ λ‘­κ²Œ μˆ˜κ°•ν•  수 μžˆλ‹€λ©΄, ν•΄λ‹Ή κ°•μ˜μ— λŒ€ν•΄ μΆ”κ°€ ν•™μŠ΅μ„ μ§„ν–‰ ν•  μ˜ˆμ •μ΄λ‹€.

πŸ₯½ λͺ¨μž‘

  • μ½”λ“œμ™€ μ΅μˆ™ν•΄μ§€λŠ”κ²Œ μ’‹κ³ , 무엇보닀 μ‹€μ „μœΌλ‘œ 직접 μž‘μ„±ν•΄λ³΄λŠ”κ²Œ μ’‹λ‹€κ³  ν•΄μ„œ, λ‚΄κ°€ μ›ν•˜λŠ” μ•± ν•˜λ‚˜λ₯Ό μ„ νƒν•΄μ„œ λͺ¨μž‘ν•˜κ³ μž ν•œλ‹€.
  • μš°μ„  λ‚΄κ°€ μ‚¬μš©ν•΄λ³Έμ  μžˆλŠ” ν•˜λ£¨μ½©μ„ λͺ¨μž‘해보면 μ–΄λ–¨κΉŒ 싢은데, κ°•μ˜μ—μ„œ μ‹€μŠ΅μœΌλ‘œ λ‚˜μ™”λ˜ λ©”λͺ¨ κ΄€λ ¨ν•΄μ„œλ„ ν™œμš©ν•  수 μžˆμ„ 것 κ°™λ‹€.
    ν•˜λ£¨ 일기 μ–΄ν”Œλ‘œ, ν™”λ©΄ UI/UX ꡬ성과 λ ˆμ΄μ•„μ›ƒ, ν…μŠ€νŠΈλ₯Ό μž…λ ₯ν•˜κ³  μ €μž₯ν•˜κ³ , μˆ˜μ •ν•˜κ³ , μ‚­μ œν•˜λŠ” κΈ°λŠ₯κΉŒμ§€ 해보렀고 ν•œλ‹€.
  • 그치만 이걸 μ–Έμ œκΉŒμ§€ μ–΄λŠ λΆ„λŸ‰μœΌλ‘œ μ™„λ£Œν• μ§€λŠ” 아직 λͺ¨λ₯΄κ² λ‹€. ν‹ˆ λ‚ λ•Œ μ‘°κΈˆμ”© ν•˜λŠ” λ°©ν–₯으둜 κ°€μ§€ μ•Šμ„κΉŒ μ‹Άλ‹€.

πŸ’» Git

  • μœ„μ— λͺ¨μž‘μ΄λ‚˜, ν•™μŠ΅ν•˜λ©΄μ„œ 개인, νŒ€ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•  λ•Œ Git을 μ“°λŠ” μ—°μŠ΅μ„ κ³„μ†ν•΄μ„œ μ΅μˆ™ν•΄μ§€κΈ°κ°€ ν•„μš”ν•˜λ‹€.

또 μ–΄λ–€ ν•™μŠ΅μ΄ ν•„μš”ν• κΉŒ..πŸ’¦


🌷 마무리


πŸš€ 제좜

πŸ“˜ KDT

Keep - μ˜κ²¬μ„ μ œμ‹œν•˜κ³  μ„€λ“ν•˜κ³  λ°›μ•„λ“€μ΄λŠ” νŒ€μ›κ³Όμ˜ μ˜μ‚¬μ†Œν†΅κ³Ό μ—΄λ €μžˆλŠ” μžμ„Έ, μ—­ν•  λΆ„λ‹΄

Problem - νŒ€μ›κ³Ό 데일리 슀크럼 κ³΅μœ κ°€ 잘 μ•ˆλ˜μ–΄μ„œ ν•™μŠ΅ ν˜„ν™©λ„ 잘 κ³΅μœ κ°€ μ•ˆλœ 점

Try - μ„œλ‘œ ν•™μŠ΅ 진도λ₯Ό κ³΅μœ ν•˜κ³ , 문제점이 λ°œμƒν•œλ‹€λ©΄ 도움을 μ£ΌλŠ” λ“± ν”„λ‘œμ νŠΈ 외에 좔가적인 μ†Œν†΅μ΄λ‚˜ μž‘λ‹΄λ„ 있으면 μ’‹μ§€ μ•Šμ„κΉŒ


πŸ’­ 개인 ν”Όλ“œλ°±(λŠλ‚€μ ) - μ²˜μŒμ—λŠ” λ°”λ‘œ νŒ€ ν”„λ‘œμ νŠΈλ„ μžˆλ‹€κ³  ν•΄μ„œ μ–΄λ–»κ²Œ 진행될 μ§€ 걱정이 λ§Žμ•˜λŠ”λ°, λ‹€λ“€ 적극적으둜 의견 λ‚˜λˆ„μ‹œκ³ , μ„œλ‘œ μ‘°μœ¨ν•˜μ‹œλ©΄μ„œ μ†Œν†΅ν•˜λŠ” λͺ¨μŠ΅μ— 닀행이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

λ¨Όμ € β€œ~λ‚΄μš© μ–΄λ–»κ²Œ ν• κΉŒμš”β€ ν•˜μ‹œλ©΄μ„œ 닀같이 μ°Έμ—¬ν•  수 μžˆλ„λ‘ 이야기 κΊΌλ‚΄μ‹œκΈ°λ„ ν•˜κ³ , μ—΄μ‹¬νžˆ μ΄νƒˆν•˜λŠ” λΆ„ 없이 이번 μ£Όμ°¨ 마칠 수 μžˆμ–΄μ„œ μ’‹μ•˜λ˜ 것 κ°™μŠ΅λ‹ˆλ‹€.

λ‚΄ν–₯적이닀 λ³΄λ‹ˆ ν”„λ‘œμ νŠΈ 같은 κ±°λ‚˜, μ œμΆœν•΄μ•Ό λ˜λŠ” 것에 λŒ€ν•΄μ„œλ§Œ 이야기λ₯Ό λ‚˜λˆ„κ³  μžˆμ§€λ§Œ 쑰금 더 ν•™μŠ΅μ΄λ‚˜ λ‹€λ₯Έ 이야기듀도 λ‚˜λˆŒ 수 있으면 μ’‹κ² μŠ΅λ‹ˆλ‹€!

λ‹€λ“€ κ³ μƒν•˜μ…¨μŠ΅λ‹ˆλ‹ΉπŸŽ‰


πŸ“… μ£Όμ°¨

πŸ“œ μ˜¨λ³΄λ”© μ£Όμ°¨ 마무리

πŸ• μ‹œκ°„ν‘œ



  • 12μ‹œκ°„ 집쀑!
  • [μ•±κ°œλ°œ μ’…ν•©λ°˜] κ°•μ˜λ‘œ 컀리큘럼 흐름 νŒŒμ•…
  • μŠ¬λž™, λ…Έμ…˜, zep λ“± ν•™μŠ΅ 곡간에 μ΅μˆ™ν•΄μ§€κΈ°
  • νŠΉκ°• μ‹œκ°„μ— zoom μ ‘μ†ν•˜κΈ°
  • μž…μ‹€/퇴싀 μ²΄ν¬ν•˜λŠ” μŠ΅κ΄€!
  • νŠœν„°λ‹˜κ»˜ μ§ˆλ¬Έν•˜κΈ°, λ§€λ‹ˆμ €μ™€ μ†Œν†΅ν•˜κΈ°, νŒ€μ›λ“€κ³Ό μŠ€ν¬λŸΌν•˜κΈ° λ“±λ“±..

πŸ• 2μ£Όμ°¨ μ‹œκ°„ν‘œ



πŸ”₯ Dart 문법 μ£Όμ°¨μ—λŠ” νŒ€ ν”„λ‘œμ νŠΈ 없이 개인 과제만 μžˆλ‹€κ³  ν•œλ‹€..! πŸ”₯
πŸ”₯ κ·Έλž˜μ„œ 기초 및 심화 μ§„ν–‰ν•  λ•ŒλŠ” 개인 ν•™μŠ΅μ— μ’€ 더 집쀑할 수 μžˆμ–΄μ„œ λŠ₯λ ₯을 λŒμ–΄μ˜¬λ¦¬κΈ°μ— 쒋은 것 κ°™λ‹€. πŸ”₯


πŸš€ Dart ν”„λ‘œκ·Έλž˜λ° Chapter 발제

πŸ“‹ ν‚€μ›Œλ“œ

βœ” 쑰건문과 반볡문
βœ” ν•¨μˆ˜μ™€ μ»¬λ ‰μ…˜
βœ” ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°
βœ” ν΄λž˜μŠ€μ™€ λ©”μ„œλ“œ
βœ” 객체지ν–₯κ³Ό 상속


🌱 이번 μ£Όμ°¨μ—λŠ” μΊ ν”„ μƒν™œμ— μ΅μˆ™ν•΄μ§€κΈ°, 곡뢀 μŠ΅κ΄€ 읡히기λ₯Ό 잘 μ μ‘ν•œ 것 κ°™λ‹€.
ν•™μŠ΅λŸ‰μ΄λ‚˜ κ·Έ λ°€λ„λŠ” λ†’μ§€ μ•Šμ€ 것 κ°™μ§€λ§Œ κ°‘μžκΈ° 12μ‹œκ°„ ν•™μŠ΅ν•˜κΈ°λž€ 쉽지 μ•ŠμœΌλ‹ˆκΉŒ λ‚˜λ¦„ λ§Œμ‘±ν•œλ‹€.


🌱 λ‹€μŒ μ£Όμ°¨μ—λŠ” 본격적으둜 Dart 문법 κΈ°μ΄ˆμ— λŒ€ν•΄ 진행될 것 κ°™μ•„μ„œ κΈ°λŒ€λœλ‹€!
λ­”κ°€ μˆ˜ν•™ 곡식 같이 κ°œλ…μ€ μ•Œκ² κ³ , μˆ˜μ‹λ„ μ•Œκ² μ§€λ§Œ κ·Έκ±Έ ν™œμš©ν•˜κ±°λ‚˜ μ‹¬ν™”ν•œ λ¬Έμ œκ°€ μžˆλ‹€λ©΄ 해결이 μ–΄λ ΅λ‹¬κΉŒ μ μ‘ν•˜λŠ”κ²Œ 쑰금 μ–΄λ €μš΄ 것 κ°™λ‹€.

profile
πŸ’» [25.05.26~] Flutter 곡뢀쀑⏳

0개의 λŒ“κΈ€