♻️ Rebuilt fetching state machine

This commit is contained in:
2026-01-01 11:40:28 +08:00
parent eea56a742e
commit 38dffa414f
34 changed files with 665 additions and 430 deletions

View File

@@ -1,3 +1,5 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:island/models/realm.dart';
@@ -8,15 +10,30 @@ import 'package:island/widgets/realm/realm_list_tile.dart';
import 'package:styled_widget/styled_widget.dart';
final realmListNotifierProvider = AsyncNotifierProvider.autoDispose
.family<RealmListNotifier, List<SnRealm>, String?>(RealmListNotifier.new);
.family<RealmListNotifier, PaginationState<SnRealm>, String?>(
RealmListNotifier.new,
);
class RealmListNotifier extends AsyncNotifier<List<SnRealm>>
class RealmListNotifier extends AsyncNotifier<PaginationState<SnRealm>>
with AsyncPaginationController<SnRealm> {
String? arg;
RealmListNotifier(this.arg);
static const int _pageSize = 20;
@override
FutureOr<PaginationState<SnRealm>> build() async {
final items = await fetch();
return PaginationState(
items: items,
isLoading: false,
isReloading: false,
totalCount: totalCount,
hasMore: hasMore,
cursor: cursor,
);
}
@override
Future<List<SnRealm>> fetch() async {
final client = ref.read(apiClientProvider);