trm11tkr / github-repo-search

株式会社ゆめみ様のFlutterエンジニアコードチェック課題。
0 stars 0 forks source link

totalCountProviderの更新方法を修正する #57

Closed trm11tkr closed 1 year ago

trm11tkr commented 1 year ago

概要

repoList.dart ```dart class RepoList extends ConsumerWidget { const RepoList({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final page = ref.watch(pageProvider); final pagingController = ref.watch(pageProvider.notifier); return Expanded( child: page.when( data: (data) { WidgetsBinding.instance.addPostFrameCallback( /// トータルカウントプロバイダーを更新 (_) => ref .watch(totalCountProvider.state) .update((state) => data.totalCount), ); return data.items.isEmpty ? const NotFound() : RepoListBuilder( repos: data.items, onLoading: pagingController.fetchNextBatch, hasNext: pagingController.hasNext, ); }, loading: () => const Center( child: CircularProgressIndicator(), ), error: (error, stack) { /// トータルカウントプロバイダーを更新(表示させない) WidgetsBinding.instance.addPostFrameCallback( <--------------------- ここ!!!!! (_) => ref.watch(totalCountProvider.state).update((state) => null), ); return RetryButton( title: error.toString(), textButton: ElevatedButton( onPressed: pagingController.fetchFirstBatch, child: Text(i18n.retry), ), ); }, onGoingError: (previousData, error, stack) { WidgetsBinding.instance.addPostFrameCallback((_) { context.showSnackBar(error.toString()); }); return RepoListBuilder( repos: previousData.items, onLoading: pagingController.fetchNextBatch, ); }, onGoingLoading: (previousData) { return RepoListBuilder( repos: previousData.items, onLoading: pagingController.fetchNextBatch, ); }, ), ); } } ```

解決策