| 123456789101112131415161718192021222324252627282930 |
- import 'package:flutter_riverpod/flutter_riverpod.dart';
- import 'package:japp_flutter/core/models/challenge_model.dart';
- import 'package:japp_flutter/core/proviers/repository_providers.dart';
- import 'package:japp_flutter/core/repositories/challenge_repository.dart';
- final challengeDetailProvider = AsyncNotifierProvider.autoDispose<ChallengeDetailViewModel, ChallengeModel?>(
- ChallengeDetailViewModel.new,
- );
- class ChallengeDetailViewModel extends AutoDisposeAsyncNotifier<ChallengeModel?> {
- ChallengeRepository get _repository => ref.read(challengeRepositoryProvider);
- @override
- Future<ChallengeModel?> build() async {
- return null;
- }
- Future<void> loadChallenge(int challengeId) async {
- state = const AsyncLoading();
- state = await AsyncValue.guard(() => _repository.getChallengeById(challengeId));
- }
- // 手动刷新用
- Future<void> refreshChallenge(int challengeId) async {
- await loadChallenge(challengeId);
- }
- }
|