본문 바로가기
Dart & Flutter

Flutter를 위한 Dart 기본 개념 정리

by Devinus 2024. 1. 21.

Dart
Dart

1.  Dart 언어란?

Dart 언어는 Google에서 개발한 프로그래밍 언어로, 모바일 , , 서버 다양한 플랫폼에서 사용되는 다용도 언어입니다. Dart</span >는 다양한 기능과 특징을 제공하며, 강력한 개발 생산성을 지원합니다. 이번 글에서는 Dart 언어의 기본 개념을 소개하고, 간단한 예제를 통해 언어의 특징을 살펴보겠습니다.

Dart의 특징

  1. 접근성과 안정성: Dart는 </span >널 안전성 패턴 매칭과 같은 현대적인 기능을 제공하여 안정적이고 안전한 코드를 작성할 수 있도록 도와줍니다. </span >강력한 타입 시스템은 오류를 미연에 방지하고 코드의 가독성을 향상시킵니다.
  2. 생산성: Dart는 개발자가 생산성을 극대화할 수 있도록 합니다. 핫 리로드 기능을 통해 코드를 수정한 즉시 결과를 확인할 수 있어 개발 과정을 빠르고 효율적으로 만듭니다. 반복적인 변경사항을 빠르게 확인하여 개발 생산성을 높일 수 있습니다.
  3. 휴대가 간편하고 빠름: Dart는 </span >모바일, 데스크톱, 백엔드 등 다양한 플랫폼에서 사용할 수 있습니다. 또한, ARM, x64, RISC-V와 같은 다양한 아키텍처로 머신 코드로 컴파일하거나 웹에서 자바스크립트 및 웹어셈블리로 컴파일할 수 있어 휴대성과 성능 면에서 우수한 결과를 제공합니다.

flutter

Dart와 Flutter의 연관성

특히 Flutter 프레임워크를 통해 Dart는 강력한 UI 개발 기능을 제공합니다. Flutter는 Dart 언어를 기반으로 하는 UI 툴킷으로, 단일 코드베이스에서 iOS, Android, 웹, 데스크톱 등 다양한 플랫폼을 지원하는 크로스 플랫폼 프레임워크입니다. Flutter는 핫 리로드 기능을 통해 빠른 개발 속도를 제공하며, 위젯을 사용한 풍부한 UI 디자인을 구현할 수 있습니다.

 

2. Flutter의 특징

Flutter와 Dart의 통합

Flutter는 Dart와 완벽하게 통합되어 있어서, Dart 언어의 기능과 특징을 활용하여 효율적으로 모바일 및 웹 애플리케이션을 개발할 수 있습니다. Flutter는 위젯을 사용하여 UI를 구성하며, 이를 통해 다양한 디바이스에서 일관된 사용자 경험을 제공합니다.

Flutter의 핵심 개념

  • 위젯 (Widgets): Flutter 애플리케이션의 UI 구성 요소로, 모든 것이 위젯입니다. 텍스트, 버튼, 이미지, 레이아웃 등 모든 UI 요소는 위젯으로 표현됩니다.
  • 핫 리로드 (Hot Reload): 애플리케이션 코드를 수정할 때 즉시 결과를 확인할 수 있는 핫 리로드 기능은 Flutter의 강력한 특징 중 하나입니다. 빠른 피드백을 통해 개발 생산성을 향상시킵니다.
  • 플랫폼 별 코드 (Platform-specific code): Flutter는 하나의 코드베이스로 여러 플랫폼을 대상으로 할 수 있지만, 필요에 따라 각 플랫폼에 맞는 특정 코드를 작성할 수 있는 기능을 제공합니다.
  • 상태 관리 (State Management): Flutter는 다양한 방식으로 상태를 관리할 수 있습니다. Provider, Bloc, MobX 등의 패키지를 활용하여 상태 관리를 유연하게 구현할 수 있습니다.

Flutter Dart 함께 사용하면 모바일 애플리케이션을 효율적으로 개발할 있으며, 풍부한 커뮤니티와 다양한 라이브러리를 활용하여 더욱 강력한 애플리케이션을 구축할 있습니다. 이를 통해 뛰어난 사용자 경험을 제공하는 멀티 플랫폼 애플리케이션을 구현할 있습니다.

 

3. Dart 언어의 기본 문법

변수 타입 지정 (Types)

Dart는 정적 타입 언어로, 변수의 데이터 타입을 명시적으로 선언할 수 있습니다.

다양한 데이터 타입이 지원되며, 예를 들면 </span >int, double, </span >String, bool</b > 등이 있습니다.

// 변수 선언
var message = 'Hello, Dart!'; 

// 변수 선언 및 타입 명시
int number = 42;
double pi = 3.14;
String text = 'Hello, Dart!';
bool isFlutterCool = true;

조건문 (Condition)

Dart에서의 조건문은 </span >if, else if, </span >else</b >를 사용하여 구현할 수 있습니다.

int num = 42;

if (num > 0) {
  print('Positive');
} else if (num < 0) {
  print('Negative');
} else {
  print('Zero');
}

반복문 (Loop)

forwhile</b > 등을 사용하여 반복문을 작성할 수 있습니다.</span >

// for loop
for (int i = 0; i < 5; i++) {
  print(i);
}

// while loop
int count = 0;
while (count < 5) {
  print(count);
  count++;
}

함수 (Function)

Dart에서 함수는 다음과 같이 선언할 수 있습니다. 함수 또한 일반적인 프로그래밍 언어와 유사한 문법으로 작성 가능합니다.

// 함수 선언
void greet(String name) {
  print('Hello, $name!');
}
int add(int a, int b) {
  return a + b;
}

// 함수 호출
greet('John');
add(1, 2);

객체지향 클래스 (Class)

Dart는 객체지향 프로그래밍을 지원하며, 클래스를 사용하여 객체를 정의할 수 있습니다.

class Person {
  String name;
  int age;

  // 생성자
  Person(this.name, this.age);

  // 메서드
  void printInfo() {
    print('Name: $name, Age: $age');
  }
}

void main() {
  // 객체 생성
  Person person = Person('John', 25);

  // 메서드 호출
  person.printInfo();
}

컬렉션 (Collection) 활용

Dart에서는 List, Set, Map 등 다양한 컬렉션을 제공하고 있습니다. 이를 활용하여 데이터를 다룰 수 있습니다.

// List
List<int> numbers = [1, 2, 3, 4, 5];

// Set
Set<String> uniqueNames = {'John', 'Jane', 'Doe'};

// Map
Map<String, dynamic> person = {'name': 'John', 'age': 25};

플러터에서 자주 사용되는 유용한 다트 문법

String Interpolation

문자열에 변수를 출력하는 방법입니다.
사용법은 `$variable` 혹은 계산이 필요한 경우는 `${variable + 값}`으로 표현한다.

var name = 'man';
var age = 12;
var greeting = 'Hello World!, my name is $name, and I\'m ${age + 2}';
print(greeting); // Hello World!, my name is man, and I'm 14

Collection if

Dart의 Collection if는 리스트를 생성할 때 조건에 따라 원소를 추가하는 편리한 문법입니다. 조건이 참일 경우에만 해당 원소를 추가하고, 조건이 거짓일 경우에는 해당 원소를 추가하지 않습니다. 이를 통해 코드를 간결하게 작성할 수 있습니다.</span >

var giveMeFive = true;
var numbers = [
  1,
  2,
  3,
  4,
  if (giveMeFive) 5, // 만약 giveMeFive가 true라면 5를 추가
];

// 위 코드와 동일하게 동작
var numbers2 = [
  1,
  2,
  3,
  4,
];

if (giveMeFive) {
 numbers2.add(5); // 만약 giveMeFive가 true라면 5를 추가
}

Collection for

Collection for는 Dart에서 리스트를 생성할 때 반복문을 활용하여 간단하게 여러 원소를 추가할 수 있는 문법입니다. 반복문을 통해 리스트를 초기화할 때 코드를 간결하게 유지할 수 있습니다.</span >

var oldFriends = ['nico', 'lynn'];
var newFriends = [
  'lewis',
  'ralph',
  'darren',
  for (var friend in oldFriends) "My $friend",
];

// 위 코드와 동일하게 동작
var newFriends2 = [
  'lewis',
  'ralph',
  'darren',
];

for(var friend in oldFriends) {
  newFriends.add("My $friend");
}

 

4. 정리

이 글에서는 Dart 언어의 기본 개념과 특징을 알아보았습니다. 또한 Flutter와의 연관성, Dart의 기본 문법, 플러터에서 사용되는 다양한 문법에 대해 살펴보았습니다. Dart는 다양한 플랫폼에서 활용되는 강력한 언어로, Flutter를 통해 효과적이고 생산적인 개발이 가능합니다. 이를 통해 모바일 앱부터 웹 앱, 서버까지 폭넓은 영역에서 Dart의 장점을 활용할 수 있습니다.

 

5. 참고 자료

- dart docs: https://dart.dev/language

 

Introduction to Dart

A brief introduction to Dart programs and important concepts.

dart.dev

- flutter docs: https://flutter.dev/

 

Flutter - Build apps for any screen

Flutter transforms the entire app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase.

flutter.dev