import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../api/family_api.dart'; import '../api/api_client.dart'; import '../models/family.dart'; final familyApiProvider = Provider((ref) { return FamilyApi(ref.read(apiClientProvider)); }); class FamilyNotifier extends StateNotifier>> { final FamilyApi _api; FamilyNotifier(this._api) : super(const AsyncValue.loading()); Future loadFamilies() async { state = const AsyncValue.loading(); try { final res = await _api.getFamilies(); if (res['success'] == true) { state = AsyncValue.data((res['data'] as List).map((e) => Family.fromJson(e)).toList()); } else { state = AsyncValue.error(res['error'] ?? '加载失败', StackTrace.current); } } catch (e, st) { state = AsyncValue.error(e.toString(), st); } } Future createFamily(String name) async { try { final res = await _api.createFamily(name); if (res['success'] == true) { return Family.fromJson(res['data']); } } catch (_) {} return null; } Future joinFamily(String inviteCode) async { try { final res = await _api.joinFamily(inviteCode); if (res['success'] == true) { return Family.fromJson(res['data']); } } catch (_) {} return null; } } final familyProvider = StateNotifierProvider>>((ref) { return FamilyNotifier(ref.read(familyApiProvider)); });