1 minute read


  • Future Builder

FutureBuilder는 카메라에서 이미지 가져오기, 장치 배터리 가져오기, 파일 참조 가져오기, HTTP 요청 만들기 등과 같은 기본 플랫폼에서 데이터 한 번 가져오기와 같은 일회성 응답에 사용된다.

Future를 사용하는 이유와 같이 데이터를 모두 다 받기 전에 먼저 데이터가 없이 그릴 수 없는 부분을 먼저 그려주기 위해 사용이 되는 것이다. FutureBuilder가 없다면 데이터가 다 받아지기를 기다린 후 화면을 그리거나 데이터의 변함을 setState()를 통해 바꿔야 줘야 할 것이다.

flutter의 경우 비동기 통신을 사용하고 있는데 이는 동기식 통신과 다르게 서버에서 데이터를 모두 받아오기전 화면을 그려줄수 있게 되는 장점을 가질 수가 있다.

Future를 return해주는 함수같은 경우는 dispose를 해줄 필요없다.

Future를 사용하게 되면 미래의 잠재적인 값을 결정하게 되고 정보를 불러오는 동안 어떤걸 보여줄지 선택할수 있도록 해준다. 만약 서버에서 데이터를 받아올때에 어플리케이션 측에서는 정보를 언제 다 받는지 알수가 없다. 그렇기 때문에 future의 상태를 확실히 확인하는 과정이 필요하다.

  • 비동기 데이터를 가져올 때 사용
  • api 통신에서 많이 사용됨
  • snapshop 상태에 따라서 다양한 기능을 넣을 수 있음
  • 캐싱 기능이 있음
1
2
3
4
5
6
7
8
9
Future<int> getNumber() async {

  //api 통신 부분 (예제로 통신 시간 대신 delay 사용)
  await Future.delayed(Duration(seconds: 3));

  final random = Random();

  return random.nextInt(100);
}
  • Stream Builder

StreamBuilder는 비동기 방식으로 시간에 따라 변하는 값을 지속적으로 동기화한다. StreamBuilder 는 치 업데이트 수신, 음악 재생, 스톱워치 등 같은 일부 데이터를 두 번 이상 가져온다.

stream 처리를 하기위해 StreamBuilder를 사용한다. StreamBuilder를 사용하면 setState 함수를 사용하지 않고도 UI를 업데이터 할 수 있다. 항상 stream의 최신 값을 가져오니, 최신 값을 확인 할 필요가 없다.

Stream이란? Stream은 데이터가 들어오고 나가는 통로이다. 데이터가 변하는 걸 보고 있다가 그에 맞춰 적절한 처리, 필터링(where)이나 수정(map), 버퍼링(take)같은 일을 한다.

StreamBuilder는 대부분 위치 업데이트 , 음악 재생 , 스톱워치 일부 데이터를 여러번 가져올 때 사용

  • 비동기로 데이터를 가져올 때 사용
  • 데이터를 steram 형태로 지속적으로 가져와서 위젯을 추가 또는 삭제할 수 있다.
1
2

Updated: