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 challengeEditProvider = AsyncNotifierProvider.autoDispose( ChallengeEditViewModel.new, ); class ChallengeEditViewModel extends AutoDisposeAsyncNotifier { ChallengeRepository get _repository => ref.read(challengeRepositoryProvider); @override Future build() async { // 初始化为 null,由外部传入初始数据 return null; } /// 初始化编辑数据(从详情页传入) void initialize(ChallengeModel challenge) { state = AsyncData(challenge); } /// 更新挑战标题 void updateTitle(String title) { state.whenData((challenge) { state = AsyncData(challenge!.copyWith(title: title)); }); } /// 更新挑战描述 void updateDescription(String description) { state.whenData((challenge) { state = AsyncData(challenge!.copyWith(description: description)); }); } /// 更新挑战描述 void updateDifficulty(int difficulty) { state.whenData((challenge) { state = AsyncData(challenge!.copyWith(difficulty: difficulty)); }); } /// 保存挑战 Future saveChallenge() async { final challenge = state.value; if (challenge == null) return; state = const AsyncLoading(); state = await AsyncValue.guard(() => _repository.updateChallenge(challenge)); } }