[flutter log] 다트 비동기 프로그래밍

2023. 1. 11. 23:13·개발기록/Flutter
728x90
반응형

안녕하세요 성장형 개발자입니다.

플러터 공부 중입니다
오늘 공부한 내용을 적어보았습니다

공부한 내용 : 다트 비동기 프로그래밍

* 다트 언어는 동기/비동기 프로그래밍을 지원
 ㅇ 동기 : 요청하고 나서 응답이 올 때까지 더는 코드를 진행하지 못하고 기다렸다가 응답을 받으면 그 때 다음 코드 진행
 ㅇ 비동기 : 요청하고 나서 응답을 받지 않았어도 대기하지 않고 다음 코드 진행, 언제든 응답이 오면 그때 응답 처리(CPU의 리소르 낭비 방지)

1. Future
 ㅇ 미래에 받아올 값
 ㅇ 반환값을 딱 한번 받아내는 비동기 프로그래밍에 사용
 ㅇ List, Set처럼 제네릭으로 어떤 미래의 값을 받아올지 정할 수 있음
 ㅇ 비동기프로그래밍은 서버 요청과 같이 오래 걸리는 작업을 기다린 후 값을 받아와야 하기에 미래값을 표현하는 Future 클래스가 필요
 ㅇ Future.delayed() 사용하면 일정 시간 후에 콜백 함수를 실행할 수 있음

Future<String> name; // 미래에 받을 String값
Future<int> number; // 미래에 받을 int값
Future<bool> isOpened; // 미래에 받을 bool값

2. async, await
 ㅇ 작성된 순서대로 실행되지 않으면 개발자 입장에서 헷갈릴 수 있음
 ㅇ 이 때 async, await 키워드 사용하면 비동기 프로그래밍을 유지하면서 코드 가독성도 유지 가능
 ㅇ async 키워드는 함수 매개변수 정의와 바디 사이에 입력
 ㅇ await 대기하고 싶은 비동기 함수 앞에 입력
 ㅇ 비동기 프로그래밍 특징을 그대로 유지하면서 코드가 작성된 순서대로 프로그램 실행

3. 결괏값 반환받기
 ㅇ async, await 키워드를 사용한 함수에서 결괏값을 받아낼 수 있음
 ㅇ Future클래스를 사용
 ㅇ 적용된 함수에 await를 사용해서 결괏값을 받을 수 있음

4. Stream
 ㅇ 지속적으로 값을 반환 받을 때 사용
 ㅇ 한 번 listen하면 Stream에 주입되는 모든 값들을 지속적으로 받아옴
 ㅇ 기본 사용법
  -> 플러터에서 기본 제공하는 dart:async 패키지를 불러와야함( import 'dart:async'; )
  -> StreamController를 listen() 해야 값을 지속적으로 반환받을 수 있음.
  -> StreamController 에 sink.add()하면 값을 주입함
  -> controller.stream

 ㅇ 브로드캐스트 스트림
  -> Stream은 단 한번만 listen()을 실행할 수 있음
  -> 하나의 스트림을 생성하고 여러번 listen() 함수 실행하고 싶을 때 사용
  -> controller.stream.asBroadcastStream()

  ㅇ 함수로 Stream 반환하기
  -> StreamController를 직접 사용하지 않고도 직접 Stream을 반환하는 함수를 작성 가능
  -> Future를 반환하는 함수는 async로 함수 선언, return으로 값 반환
  -> Stream을 반환하는 함수는 async*로 함수 선언, yield으로 값 반환

 
코드팩토리의 플러터 프로그래밍
저자는 왕초보 실력을 현업 수준으로 끌어올리기를 목표로 이 책을 썼습니다. 배운 이론을 곧바로 실무에 진짜 유용한 기능을 담은 앱을 만들며 익힐 수 있게 합니다. 모든 앱은 결과가 아니라 실제 프로젝트 현장에서 구현하듯이 과정을 보여주며 만듭니다. 변경하거나 수정한 코드를 확실하게 표시해 따라하기 쉽습니다. [프로젝트 소개] ➝ [사전 지식] ➝ [준비하기] ➝ [UI 구상하기] ➝ [구현하기] ➝ [테스트하기] 순서를 꼭 지켜서 앱 개발을 체계적으로 이끌어줍니다. 초보자 눈높이에 맞추면서, 다트 언어 입문부터 개발과 광고와 배포까지 현업에 도움이 될 실무적이고 활용도 높은 노하우를 담아 설명했기 때문에 탄탄하면서도 빠르게 스킬업되는 자신을 체감하게 될 겁니다.
저자
최지호(코드팩토리)
출판
골든래빗(주)
출판일
2023.01.01
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'개발기록 > Flutter' 카테고리의 다른 글

[flutter log] 플러터 기본 위젯  (0) 2023.01.17
[flutter log] 플러터 소개 및 구조  (0) 2023.01.17
[flutter log] 객체지향 프로그래밍  (0) 2023.01.11
[flutter log] 기초 문법  (0) 2023.01.10
[flutter log] flutter를 하게 된 계기 및 계획  (0) 2023.01.09
'개발기록/Flutter' 카테고리의 다른 글
  • [flutter log] 플러터 기본 위젯
  • [flutter log] 플러터 소개 및 구조
  • [flutter log] 객체지향 프로그래밍
  • [flutter log] 기초 문법
성장형_개발자
성장형_개발자
시작은 미미하지만 점점 창대하리라 비전공자 신입의 성장 페이지('19.1.2 첫출근)
    반응형
    250x250
  • 성장형_개발자
    성장형개발자
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 전체 (59)
      • 개발기록 (34)
        • AWS (2)
        • Linux (3)
        • JAVA (6)
        • Intellij (1)
        • Git (2)
        • VSCode (1)
        • Python (1)
        • Flutter (9)
        • HTML (0)
        • DB (1)
        • Android (0)
        • PWA(프로그레시브 웹앱) (0)
        • excel (1)
      • 유용한 정보 (7)
      • 정보처리기사 (9)
      • Book (2)
      • 일상 (5)
      • 재테크 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정보처리산업기사
    플러터
    데이터베이스
    실기
    오블완
    flutter기초문법
    SQL
    java
    error
    기사
    아이폰
    티스토리챌린지
    Oracle
    정처기
    it
    정보처리
    정보처리기사
    리눅스
    flutter코딩
    Flutter
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
성장형_개발자
[flutter log] 다트 비동기 프로그래밍
상단으로

티스토리툴바