import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'account_provider.dart'; import 'bill_provider.dart'; import 'budget_provider.dart'; import 'statistics_provider.dart'; /// 账单数据的统一失效入口。 /// /// 任何写操作(手动记账、OCR 批量存储、编辑、删除)成功后调用这里, /// 首页与统计页会自动重新取数——替代 uniApp 的 `uni.$emit('refreshBills')` 事件总线。 /// /// 传入的是 **family 对象**,Riverpod 会失效该 family 的所有 key, /// 所以即使用户之前浏览过其它月份,那些缓存也一并作废,不会出现脏数据。 /// /// 账户信息也要一起失效:余额和总收支都是由账单汇总出来的。 /// /// 说明:Ref 与 WidgetRef 没有公共父类(且 invalidate 的参数类型 ProviderOrFamily /// 未公开导出),所以这里写成两个入口,各自直接调用而不是抽公共函数。 void invalidateBillData(Ref ref) { ref.invalidate(billsProvider); ref.invalidate(monthlyStatisticsProvider); ref.invalidate(statisticsProvider); ref.invalidate(budgetProvider); ref.invalidate(billDetailProvider); ref.invalidate(accountProvider); } /// 供 Widget 层调用(下拉刷新、页面重试) void invalidateBillDataFromWidget(WidgetRef ref) { ref.invalidate(billsProvider); ref.invalidate(monthlyStatisticsProvider); ref.invalidate(statisticsProvider); ref.invalidate(budgetProvider); ref.invalidate(billDetailProvider); ref.invalidate(accountProvider); }