| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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, ChallengeModel?>(
- ChallengeEditViewModel.new,
- );
- class ChallengeEditViewModel extends AutoDisposeAsyncNotifier<ChallengeModel?> {
- ChallengeRepository get _repository => ref.read(challengeRepositoryProvider);
- @override
- Future<ChallengeModel?> 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<void> saveChallenge() async {
- final challenge = state.value;
- if (challenge == null) return;
- state = const AsyncLoading();
- state = await AsyncValue.guard(() => _repository.updateChallenge(challenge));
- }
- }
|