challenge_detail_vm.dart 957 B

123456789101112131415161718192021222324252627282930
  1. import 'package:flutter_riverpod/flutter_riverpod.dart';
  2. import 'package:japp_flutter/core/models/challenge_model.dart';
  3. import 'package:japp_flutter/core/proviers/repository_providers.dart';
  4. import 'package:japp_flutter/core/repositories/challenge_repository.dart';
  5. final challengeDetailProvider = AsyncNotifierProvider.autoDispose<ChallengeDetailViewModel, ChallengeModel?>(
  6. ChallengeDetailViewModel.new,
  7. );
  8. class ChallengeDetailViewModel extends AutoDisposeAsyncNotifier<ChallengeModel?> {
  9. ChallengeRepository get _repository => ref.read(challengeRepositoryProvider);
  10. @override
  11. Future<ChallengeModel?> build() async {
  12. return null;
  13. }
  14. Future<void> loadChallenge(int challengeId) async {
  15. state = const AsyncLoading();
  16. state = await AsyncValue.guard(() => _repository.getChallengeById(challengeId));
  17. }
  18. // 手动刷新用
  19. Future<void> refreshChallenge(int challengeId) async {
  20. await loadChallenge(challengeId);
  21. }
  22. }