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.new, ); class ChallengeDetailViewModel extends AutoDisposeAsyncNotifier { ChallengeRepository get _repository => ref.read(challengeRepositoryProvider); @override Future build() async { return null; } Future loadChallenge(int challengeId) async { state = const AsyncLoading(); state = await AsyncValue.guard(() => _repository.getChallengeById(challengeId)); } // 手动刷新用 Future refreshChallenge(int challengeId) async { await loadChallenge(challengeId); } }