List<Model> 不是领域模型类型

swi*_*ing 4 realm dart flutter

我是 Realm 的新手,我想将它与 Flutter (Dart) 一起使用,但使用此命令生成g 文件时遇到问题

\n
flutter pub run realm generate\n
Run Code Online (Sandbox Code Playgroud)\n

这是终端中的错误:

\n
\xe2\x9e\x9c  app-android git:(develop) \xe2\x9c\x97 flutter pub run realm generate\n[INFO] Generating build script...\n[INFO] Generating build script completed, took 763ms\n\n[INFO] Initializing inputs\n[INFO] Reading cached asset graph...\n[INFO] Reading cached asset graph completed, took 132ms\n\n[INFO] Checking for updates since last build...\n[INFO] Checking for updates since last build completed, took 1.3s\n\n[INFO] Running build...\n[INFO] Running build completed, took 28ms\n\n[INFO] Caching finalized dependency graph...\n[INFO] Caching finalized dependency graph completed, took 58ms\n\n[SEVERE] realm:realm_generator on lib/Models/FavoritesModel/favorites_model.dart (cached):\n\nNot a realm type\n\nin: package:test_app/Models/FavoritesModel/favorites_model.dart:11:14\n\xe2\x95\xb7\n6   \xe2\x94\x82 @RealmModel()\n7   \xe2\x94\x82 class _FavoritesModel {\n    \xe2\x94\x82       \xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81\xe2\x94\x81 in realm model for \'FavoritesModel\'\n... \xe2\x94\x82\n11  \xe2\x94\x82   late final List<AudiosArticleModel> data;\n    \xe2\x94\x82              ^^^^^^^^^^^^^^^^^^^^^^^^ List<AudiosArticleModel> is not a realm model type\n    \xe2\x95\xb5\nRemove the invalid field or add an @Ignored annotation on \'data\'.\n\n[SEVERE] Failed after 110ms\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的favorites_model.dart文件:

\n
import \'package:realm/realm.dart\';\nimport \'../AudiosArticleModel/audios_article_model.dart\';\npart \'favorites_model.g.dart\';\n\n@RealmModel()\nclass _FavoritesModel {\n\n  late String title;\n  late String author;\n  late final List<AudiosArticleModel> data;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

有人知道问题是什么吗?我已经使用相同的命令成功生成了 AudiosArticle 模型。

\n

audios_article_model.dart

\n
import \'package:realm/realm.dart\';\npart \'audios_article_model.g.dart\';\n\n@RealmModel()\nclass _AudiosArticleModel {\n  late String link;\n  late String title;\n  late String author;\n  late String hour;\n  late String minute;\n  late String second;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

audios_article_model.g.dart

\n
// GENERATED CODE - DO NOT MODIFY BY HAND\n\npart of \'audios_article_model.dart\';\n\n// **************************************************************************\n// RealmObjectGenerator\n// **************************************************************************\n\nclass AudiosArticleModel extends _AudiosArticleModel with RealmObject {\n  AudiosArticleModel(\n    String link,\n    String title,\n    String author,\n    String hour,\n    String minute,\n    String second,\n  ) {\n    this.link = link;\n    this.title = title;\n    this.author = author;\n    this.hour = hour;\n    this.minute = minute;\n    this.second = second;\n  }\n\n  AudiosArticleModel._();\n\n  @override\n  String get link => RealmObject.get<String>(this, \'link\') as String;\n  @override\n  set link(String value) => RealmObject.set(this, \'link\', value);\n\n  @override\n  String get title => RealmObject.get<String>(this, \'title\') as String;\n  @override\n  set title(String value) => RealmObject.set(this, \'title\', value);\n\n  @override\n  String get author => RealmObject.get<String>(this, \'author\') as String;\n  @override\n  set author(String value) => RealmObject.set(this, \'author\', value);\n\n  @override\n  String get hour => RealmObject.get<String>(this, \'hour\') as String;\n  @override\n  set hour(String value) => RealmObject.set(this, \'hour\', value);\n\n  @override\n  String get minute => RealmObject.get<String>(this, \'minute\') as String;\n  @override\n  set minute(String value) => RealmObject.set(this, \'minute\', value);\n\n  @override\n  String get second => RealmObject.get<String>(this, \'second\') as String;\n  @override\n  set second(String value) => RealmObject.set(this, \'second\', value);\n\n  static SchemaObject get schema => _schema ??= _initSchema();\n  static SchemaObject? _schema;\n  static SchemaObject _initSchema() {\n   RealmObject.registerFactory(AudiosArticleModel._);\n   return const SchemaObject(AudiosArticleModel, [\n    SchemaProperty(\'link\', RealmPropertyType.string),\n    SchemaProperty(\'title\', RealmPropertyType.string),\n    SchemaProperty(\'author\', RealmPropertyType.string),\n    SchemaProperty(\'hour\', RealmPropertyType.string),\n    SchemaProperty(\'minute\', RealmPropertyType.string),\n    SchemaProperty(\'second\', RealmPropertyType.string),\n     ]);\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

swi*_*ing 10

我发现问题:由于_前缀,模型类是私有的。

解决方案是使用$前缀来使其对所有项目公开。

audios_article_model.dart

import 'package:realm/realm.dart';
part 'audios_article_model.g.dart';

@RealmModel()
class $AudiosArticleModel {
  late String link;
  late String title;
  late String author;
  late String hour;
  late String minute;
  late String second;
}
Run Code Online (Sandbox Code Playgroud)

当然你需要生成g文件。