[flutter] Flutter Riverpod에서 웹소설 앱 만들기

목차

개요

이번에는 Flutter 프레임워크에서 새로운 Riverpod 라이브러리를 사용하여 웹 소설 앱을 개발하는 방법에 대해 알아보겠습니다. Riverpod는 상태 관리 모델로 유명한 프로바이더 패키지의 새로운 버전이며, 적은 중복 코드와 강력한 기능을 제공하여 Flutter 앱을 더욱 효과적으로 관리할 수 있게 해줍니다.

Riverpod 소개

Riverpod는 Flutter 앱의 상태 관리의존성 주입을 위한 강력한 도구입니다. 간단하고 직관적인 구문을 사용하여 상태를 관리하고, 적은 양의 코드로 다양한 화면 간의 데이터를 공유할 수 있습니다.

앱 구성

이번 예시에서는 웹 소설 앱을 만들 것입니다. 각 웹 소설의 목록을 가져와 보여주고, 각 웹 소설의 세부 정보를 볼 수 있는 화면으로 이동하는 기능을 구현할 것입니다.

글로벌 스토어

우선, Riverpod를 사용하여 전역으로 상태를 관리하는 스토어를 만들어 보겠습니다.

final novelListProvider = FutureProvider<List<Novel>>((ref) async {
  final novels = await fetchNovelList();
  return novels;
});

위 코드에서 FutureProvider를 사용하여 novelListProvider를 선언하고, fetchNovelList 함수를 통해 소설 목록을 가져옵니다.

리스트 뷰

다음으로, 상태를 사용하여 소설 목록을 화면에 표시하는 리스트 뷰를 만들어 보겠습니다.

Consumer(builder: (context, watch, child) {
  final novelListAsyncValue = watch(novelListProvider);
  return novelListAsyncValue.when(
    data: (novelList) {
      return ListView.builder(
        itemCount: novelList.length,
        itemBuilder: (context, index) {
          final novel = novelList[index];
          return ListTile(
            title: Text(novel.title),
            subtitle: Text(novel.author),
            onTap: () {
              Navigator.of(context).push(MaterialPageRoute(
                builder: (context) {
                  return NovelDetailScreen(novel);
                },
              ));
            },
          );
        },
      );
    },
    loading: () => CircularProgressIndicator(),
    error: (error, stackTrace) => Text('Error: $error'),
  );
}),

위 코드에서 Consumer를 사용하여 novelListProvider를 관찰하고, 상태가 바뀔 때마다 리스트를 업데이트합니다.

요약

이제 Riverpod를 사용하여 Flutter 앱에서 웹 소설을 다루는 기본적인 기능을 구현하는 방법에 대해 알아보았습니다. Riverpod의 강력한 기능을 활용하여 상태 관리와 데이터 공유를 보다 쉽게 할 수 있습니다. Flutter에서 Riverpod를 사용하면 앱을 더욱 효과적으로 관리할 수 있고, 생산성을 향상시킬 수 있습니다.

참고 문헌