5. streamProvider

shin·2023년 3월 13일
0

Flutter riverpod

목록 보기
5/6
  • Stream 타입만 반환가능하다.
  • API 요청 결과를 Stream으로 반환 할 때 자주 사용한다.
    Socket등...

생성하기

  • 길이가 3인 리스트에 각각의 값을 i를 곱해가는 Provider를 생성한다.
import 'package:flutter_riverpod/flutter_riverpod.dart';

final multipleStreamProvider = StreamProvider<List<int>>(
  (ref) async* {
    for (int i = 0; i < 10; i++) {
      await Future.delayed(Duration(seconds: 1));

      yield List.generate(3, (index) => index * i);
    }
  },
);

사용하기

  • futureProvider와 마친가지로 when을 사용해서 코드를 작성한다.
  • watch를 통해서 provider 값이 변경될 때마다 build가 재실행 되면서 값이 반영된다.
  • futureProvider처럼 데이터가 캐싱된다.
class StreamProviderScreen extends ConsumerWidget {
  const StreamProviderScreen({Key? key}) : super(key: key);

  
  Widget build(BuildContext context, WidgetRef ref) {
    final state = ref.watch(multipleStreamProvider);

    return DefaultLayout(
      title: 'StreamProviderScreen',
      body: Center(
        child: state.when(
          data: (data) => Text(
            data.toString(),
          ),
          error: (err, stack) => Text(
            err.toString(),
          ),
          loading: () => CircularProgressIndicator(),
        ),
      ),
    );
  }
}

0개의 댓글