새소식

반응형
개발기록/Flutter

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

  • -
반응형

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

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

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

* 다트 언어는 동기/비동기 프로그래밍을 지원
 ㅇ 동기 : 요청하고 나서 응답이 올 때까지 더는 코드를 진행하지 못하고 기다렸다가 응답을 받으면 그 때 다음 코드 진행
 ㅇ 비동기 : 요청하고 나서 응답을 받지 않았어도 대기하지 않고 다음 코드 진행, 언제든 응답이 오면 그때 응답 처리(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
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.