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

Realm 3.1.0无法获取模型类Schema的问题求助

Realm 3.1.0 无法获取模型类schema的解决方案

问题场景

首次使用realm: ^3.1.0,定义了带@RealmModel()注解的私有类_$ProjectModal,并手动创建了子类ProjectTmp。在RealmHelper中尝试通过ProjectModal.schema配置Realm时,报错:The getter 'schema' isn't defined for the type '_$ProjectModal',改用子类ProjectTmp调用schema同样失败。

问题原因

  1. Realm依赖代码生成机制自动生成包含schema属性的公共模型类(比如ProjectModal),直接使用私有基类_$ProjectModal无法获取自动生成的schema属性。
  2. 未执行Realm的代码生成命令,导致自动生成的模型类文件缺失,没有可用的schema属性。
  3. 手动创建的子类ProjectTmp重写了所有属性,未继承到Realm生成类的核心能力,包括schema。

解决步骤

1. 修正模型类结构

无需手动创建子类,直接基于Realm自动生成的公共类扩展方法即可:

import 'dart:developer';
import 'package:realm/realm.dart';

@RealmModel()
class _$ProjectModal {
  @RealmPropertyType.int
  late int project_id;

  @RealmPropertyType.string
  late String project_name;

  @RealmPropertyType.int
  late int student_id;

  @RealmPropertyType.string
  late String? image_url;
}

// 扩展自动生成的ProjectModal类,实现fromMap方法
extension ProjectModalExt on ProjectModal {
  factory ProjectModal.fromMap(Map data) {
    log(data['image_url'].runtimeType.toString());
    return ProjectModal(
      data['project_id'],
      data['project_name'],
      data['student_id'],
      image_url: data['image_url'],
    );
  }
}

2. 执行代码生成命令

在项目根目录执行对应命令,让Realm自动生成包含schema属性的模型类:

  • Dart项目:
dart run realm generate
  • Flutter项目:
flutter pub run realm generate

执行后会在模型类所在目录生成project_modal.g.dart文件,里面包含自动生成的ProjectModal类及schema属性。

3. 修正Realm配置代码

使用自动生成的公共模型类ProjectModal来配置Realm:

import 'package:realm/realm.dart';
import '../data/modal/project_modal.dart';

class RealmHelper {
  RealmHelper._();
  static final RealmHelper instance = RealmHelper._();
  
  // 调用自动生成类的schema属性
  final config = Configuration.local([ProjectModal.schema]);
}

额外注意事项

  • 确保pubspec.yaml中配置完整的依赖:
dependencies:
  realm: ^3.1.0

dev_dependencies:
  build_runner: ^2.4.0
  realm_generator: ^3.1.0
  • 每次修改带@RealmModel()注解的类后,必须重新运行代码生成命令,否则修改不会同步到生成的类中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:53:21