[TIL] 20241015_ Flutter 및 Dart 기초

ds-k.dev·2024년 10월 15일
1

TIL

목록 보기
1/26

변수

  • 값을 담아두는 박스
  • 프로그램은 많은 변수들에 값을 가공하고 꺼내와서 연산하고 처리하는 결과물

Dart의 타입

  • int
  • double
  • String
  • bool
  • List
  • Set
  • Map

변수 선언

void main() {
  var author = "김대성" // 형 추론
  String stringValue = "문자열"
  int intValue = 2;
  bool booleanValue = false;
}

반복문

void main() {
  var sum = 0;
  for(var i = 0; i<1000; i++){
    sum+=i;
  }
  print(sum); // 499500
}

함수

반환타입 함수이름(매개변수1, 매개변수2, ...) {
  // 비즈니스 로직 구현부
  return 반환값
}

반환타입 : 반환하는 값의 타입을 정의, 반환값이 없으면 void
함수이름 : 비즈니스 로직을 대표할수 있는 명확한 이름
매개변수 : 함수가 입력받는 값
4. 로직 : 함수가 수행할 작업
5. 반환값 : 함수가 작업을 완료한 후 함수를 호출한 곳으로 돌려주는 값

int sum(int a, int b) {
  int sum = a + b;
  return sum;
}
 // 중괄호를 넣지 않으면 positional parameter

void main() {
  int result = sum(1, 2);
  print(result); // 3
}


int sum({required int a, required int b}) {
  int sum = a + b;
  return sum;
}
  // 중괄호를 넣으면 Named parameter, 보다 명확!

void main() {
  int result = sum(a : 1, b :2);
  print(result); // 3
}

int sum({required int a, required int b, int? c}) {
  int sum = a + b + (c ?? 0);
  return sum;
}

// Optional parameter

void main() {
  int result = sum(a: 1, b: 2);
  int result2 = sum(a: 1, b: 2, c: 3);
  print(result); // 3
  print(result2); // 6
}

조건문

void main() {
  int number = 3;

  if (number > 5) {
    print("5보다 큼");
  } else {
    print("5보다 크지 않다");
  }
}

void main() {
  int number = 3;

  switch (number) {
    case 1:
      print(1);
      break;
    case 2:
      print(2);
      break;
    case 3:
      print(3);
      break;
    default:
      print("1,2,3 다 아님");
  }
  
}

동기

동기 방식에서는 작업이 순차적으로 처리되는 것, 하나의 작업이 끝나야 다음 작업이 진행

void main() {
  print('작업 1 시작');
  performTask();
  print('작업 1 완료');
}

void performTask() {
  print('작업 2 실행');
}

비동기

작업을 병렬적으로 처리 가능, 동시에 다음 작업을 할 수가 있다.

void main() {
  print('작업 1 시작');
  performTask();
  print('작업 1 완료');
}

Future<void> performTask() async {
  await Future.delayed(Duration(seconds: 2)); // 2초 뒤
  print('작업 2 실행');
}
작업 1 시작
작업 1 완료
작업 2 실행

// 비동기를 동기처럼 처리

void main() async {
  print('작업 1 시작');
  await performTask();
  print('작업 1 완료');
}

Future<void> performTask() async {
  await Future.delayed(Duration(seconds: 2));
  print('작업 2 실행');
}

작업 1 시작
작업 2 실행
작업 1 완료

async/await

async

  • 함수에 async를 붙이면 비동기 함수
  • 비동기 함수는 Future 객체를 반환한다.

await

  • await은 비동기 함수 내에서만 사용 가능
  • Future가 완료될때까지 기다리며, 완료되면 결과 값을 반환한다.

0개의 댓글