With AI

Dart๋ž€?

  • -
๋ฐ˜์‘ํ˜•

 

๐Ÿ“Œ Dart ์–ธ์–ด ๊ฐœ์š”

Dart๋Š” Google์—์„œ ๊ฐœ๋ฐœํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ, ์ฃผ๋กœ Flutter ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์›น, ๋ชจ๋ฐ”์ผ, ๋ฐ์Šคํฌํ†ฑ, ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•œ ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

โœ… Dart์˜ ์ฃผ์š” ํŠน์ง•

1. JIT & AOT ์ปดํŒŒ์ผ

  • JIT (Just-In-Time) ์ปดํŒŒ์ผ → ๊ฐœ๋ฐœ ์ค‘์—๋Š” ๋น ๋ฅธ ์‹คํ–‰ & Hot Reload ๊ฐ€๋Šฅ
  • AOT (Ahead-Of-Time) ์ปดํŒŒ์ผ → ์•ฑ ๋ฐฐํฌ ์‹œ์—๋Š” ๋น ๋ฅธ ์‹คํ–‰ ์†๋„ ์ œ๊ณต

๐Ÿ“Œ Hot Reload ๋•๋ถ„์— Flutter ์•ฑ ๊ฐœ๋ฐœ ์‹œ UI ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฆ‰์‹œ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Œ.

 

2. ๊ฐ์ฒด์ง€ํ–ฅ & ๋‹คํ˜•์„ฑ ์ง€์›

  • ํด๋ž˜์Šค(Class) ๋ฐ ์ƒ์†(Inheritance) ์ง€์›
  • Mixin, Abstract Class ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋… ํ™œ์šฉ ๊ฐ€๋Šฅ
  • ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๊ฐ์ฒด๋กœ ๊ด€๋ฆฌ๋จ (int, double๋„ ๊ฐ์ฒด)
class Animal {
  String name;
  
  Animal(this.name);
  
  void makeSound() {
    print('$name: ์†Œ๋ฆฌ๋ฅผ ๋‚ธ๋‹ค');
  }
}

class Dog extends Animal {
  Dog(String name) : super(name);
  
  @override
  void makeSound() {
    print('$name: ๋ฉ๋ฉ!');
  }
}

void main() {
  Dog dog = Dog("๋ฐ”๋‘‘์ด");
  dog.makeSound(); // ๋ฐ”๋‘‘์ด: ๋ฉ๋ฉ!
}

 

3. Null Safety (๋„ ์•ˆ์ •์„ฑ)

Dart๋Š” null ๊ฐ’์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Null Safety๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

String? name;  // nullable ๋ณ€์ˆ˜
name = "Dart";
print(name!.length);  // null์ด ์•„๋‹˜์„ ๋ณด์žฅํ•  ๋•Œ ! ์‚ฌ์šฉ

 

๐Ÿ“Œ Null Safety ๋•๋ถ„์— ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.

 

4. ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์› (Future & Stream)

Dart๋Š” async/await, Future, Stream์„ ํ™œ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 2)); // 2์ดˆ ๋Œ€๊ธฐ
  return "๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ์™„๋ฃŒ!";
}

void main() async {
  print("๋กœ๋”ฉ ์ค‘...");
  String data = await fetchData();
  print(data); // 2์ดˆ ํ›„ "๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ์™„๋ฃŒ!" ์ถœ๋ ฅ
}

 

๐Ÿ“Œ Flutter์—์„œ API ํ˜ธ์ถœ, ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ ์‹œ ์œ ์šฉํ•จ.

 

5. ์ปฌ๋ ‰์…˜(List, Set, Map) ํ™œ์šฉ

Dart๋Š” List, Set, Map๊ณผ ๊ฐ™์€ ์ปฌ๋ ‰์…˜์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

void main() {
  List<String> fruits = ["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "ํฌ๋„"];
  Map<String, int> scores = {"์ฒ ์ˆ˜": 90, "์˜ํฌ": 85};

  print(fruits[1]);  // ๋ฐ”๋‚˜๋‚˜
  print(scores["์ฒ ์ˆ˜"]);  // 90
}

 

๐Ÿ“Œ ์ปฌ๋ ‰์…˜ ์กฐ์ž‘์ด ์‰ฝ๊ณ , ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ๋„ ์ œ๊ณต (where, map, reduce ๋“ฑ).

 

6. Dart์™€ Flutter์˜ ๊ด€๊ณ„

  • Dart๋Š” Flutter์˜ ๊ณต์‹ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • Flutter UI ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ง๊ด€์ ์ธ ๋ฌธ๋ฒ• ์ œ๊ณต
  • Hot Reload ๊ธฐ๋Šฅ ๋•๋ถ„์— ์‹ค์‹œ๊ฐ„ UI ๋ฐ˜์˜ ๊ฐ€๋Šฅ
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("Dart & Flutter")),
        body: Center(child: Text("Hello, Dart!")),
      ),
    );
  }
}

 

๐Ÿ“Œ Dart๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Flutter๋กœ ๊ฐ•๋ ฅํ•œ UI๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ.

๐Ÿ”ฅ Dart๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์ด์œ 

โœ… Flutter ๊ฐœ๋ฐœ ํ•„์ˆ˜ ์–ธ์–ด (iOS & Android ์•ฑ ๋™์‹œ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ)
โœ… ๋น ๋ฅธ ์‹คํ–‰ ์†๋„ (JIT & AOT ์ปดํŒŒ์ผ ์ง€์›)
โœ… ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ• & ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์›
โœ… ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (async/await)์œผ๋กœ ๋„คํŠธ์›Œํฌ ์ž‘์—… ์ตœ์ ํ™”
โœ… ์›น, ๋ชจ๋ฐ”์ผ, ๋ฐ์Šคํฌํ†ฑ, ์„œ๋ฒ„ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ (๋ฉ€ํ‹ฐํ”Œ๋žซํผ ์ง€์›)


๐ŸŽฏ Dart ์‚ฌ์šฉ ์‚ฌ๋ก€

โœ” Flutter ์•ฑ ๊ฐœ๋ฐœ (๋ชจ๋ฐ”์ผ, ์›น, ๋ฐ์Šคํฌํ†ฑ)
โœ” ์„œ๋ฒ„ ๊ฐœ๋ฐœ (dart:io, shelf ํŒจํ‚ค์ง€ ํ™œ์šฉ)
โœ” CLI(๋ช…๋ น์ค„) ๋„๊ตฌ ์ œ์ž‘
โœ” ๋จธ์‹ ๋Ÿฌ๋‹ ๋ฐ ๋ฐ์ดํ„ฐ ๋ถ„์„

๋ฐ˜์‘ํ˜•

'With AI' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Spring ํ™˜๊ฒฝ์—์„œ API ํ˜ธ์ถœํ•˜๊ธฐ  (0) 2025.03.05
Vue.js๋ž€?  (0) 2025.03.04
RESTful์ด๋ž€?  (1) 2025.02.28
MongoDB๋ž€?  (0) 2025.02.27
์›น ์„œ๋ฒ„ Apache์™€ Nginx  (0) 2025.02.26
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.