You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Freezed 3.x.x后Riverpod状态类缺失getter实现报错求助

Freezed 3.x.x升级后Riverpod状态类Getter缺失错误修复

升级Freezed从2.x.x到3.x.x版本后,Riverpod状态文件出现编译错误,提示需实现_$PremiumDataState.aiCredits和_$PremiumDataState.premium的getter方法。

相关代码

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:freezed_annotation/freezed_annotation.dart';

part 'premium.userdata.freezed.dart';

final premiumUserStateProvider = NotifierProvider<PremiumDataProvider, PremiumDataState>(() {
  return PremiumDataProvider();
});

@freezed
class PremiumDataState with _$PremiumDataState {
  const factory PremiumDataState({
    @Default(false) bool premium,
    @Default(0) int aiCredits,
  }) = _PremiumDataState;
}

class PremiumDataProvider extends Notifier<PremiumDataState> {
  @override
  PremiumDataState build() {
    return const PremiumDataState();
  }
}

错误信息

Missing concrete implementations of 'getter _$PremiumDataState.aiCredits' and 'getter _$PremiumDataState.premium'.
Try implementing the missing methods, or make the class abstract.dartnon_abstract_class_inherits_abstract_member

修复步骤

  • 在状态类文件头部新增part 'premium.userdata.g.dart';语句,Freezed 3.x.x版本开始,即使不需要JSON序列化,也需要该文件生成完整的类成员实现:
    import 'package:flutter_riverpod/flutter_riverpod.dart';
    import 'package:freezed_annotation/freezed_annotation.dart';
    
    part 'premium.userdata.freezed.dart';
    part 'premium.userdata.g.dart'; // 新增行
    
  • 确保pubspec.yaml中freezed_annotation、build_runner为最新版本,执行以下命令重新生成代码:
    dart run build_runner build --delete-conflicting-outputs
    

Freezed 3.x.x调整了代码生成逻辑,必须通过.g.dart文件补全类的具体实现,这是和2.x.x版本的核心差异,执行上述步骤后即可解决getter缺失问题。

内容的提问来源于stack exchange,提问作者Bamsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 16:05:54