Files
pangolin/client/lib/state/invite_provider.dart
T

26 lines
938 B
Dart

// invite_provider.dart — 邀请信息状态装配:复用 apiClientProvider,未登录不打网络。
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../services/invite_api.dart';
import 'account_providers.dart';
import 'auth_provider.dart';
final inviteApiProvider = Provider<InviteApi>((ref) => InviteApi(ref.watch(apiClientProvider)));
class InviteNotifier extends AsyncNotifier<InviteInfo?> {
@override
Future<InviteInfo?> build() async {
// 未登录返回 null(不打网络);已登录拉取。
final token = ref.watch(authProvider).accessToken;
if (token == null || token.isEmpty) return null;
return ref.read(inviteApiProvider).fetch();
}
Future<void> refresh() async {
state = const AsyncLoading();
state = await AsyncValue.guard(() => ref.read(inviteApiProvider).fetch());
}
}
final inviteProvider = AsyncNotifierProvider<InviteNotifier, InviteInfo?>(InviteNotifier.new);