Flutter Realm 利用

投稿者:

pubspeck.yaml

Thank you for reading this post, don't forget to subscribe!
  provider: ^6.1.2
  realm: ^2.1.0

– person.dart

import 'package:realm/realm.dart';

part 'person.realm.dart'; // 自動生成ファイル

@RealmModel()
class _Person {
  late String name;
  late String link;
  late String title;
  late String author;
  late String hour;
  late String minute;
  late String second;
}

コマンド実行

# dart run realm generate

person.realm.dart ファイルが自動生成される

// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'person.dart';

// **************************************************************************
// RealmObjectGenerator
// **************************************************************************

// ignore_for_file: type=lint
class Person extends _Person with RealmEntity, RealmObjectBase, RealmObject {
  Person(
    String name,
    String link,
    String title,
    String author,
    String hour,
    String minute,
    String second,
  ) {
    RealmObjectBase.set(this, 'name', name);
    RealmObjectBase.set(this, 'link', link);
    RealmObjectBase.set(this, 'title', title);
    RealmObjectBase.set(this, 'author', author);
    RealmObjectBase.set(this, 'hour', hour);
    RealmObjectBase.set(this, 'minute', minute);
    RealmObjectBase.set(this, 'second', second);
  }

  Person._();

  @override
  String get name => RealmObjectBase.get(this, 'name') as String;
  @override
  set name(String value) => RealmObjectBase.set(this, 'name', value);

  @override
  String get link => RealmObjectBase.get(this, 'link') as String;
  @override
  set link(String value) => RealmObjectBase.set(this, 'link', value);

  @override
  String get title => RealmObjectBase.get(this, 'title') as String;
  @override
  set title(String value) => RealmObjectBase.set(this, 'title', value);

  @override
  String get author => RealmObjectBase.get(this, 'author') as String;
  @override
  set author(String value) => RealmObjectBase.set(this, 'author', value);

  @override
  String get hour => RealmObjectBase.get(this, 'hour') as String;
  @override
  set hour(String value) => RealmObjectBase.set(this, 'hour', value);

  @override
  String get minute => RealmObjectBase.get(this, 'minute') as String;
  @override
  set minute(String value) => RealmObjectBase.set(this, 'minute', value);

  @override
  String get second => RealmObjectBase.get(this, 'second') as String;
  @override
  set second(String value) => RealmObjectBase.set(this, 'second', value);

  @override
  Stream> get changes =>
      RealmObjectBase.getChanges(this);

  @override
  Person freeze() => RealmObjectBase.freezeObject(this);

  EJsonValue toEJson() {
    return {
      'name': name.toEJson(),
      'link': link.toEJson(),
      'title': title.toEJson(),
      'author': author.toEJson(),
      'hour': hour.toEJson(),
      'minute': minute.toEJson(),
      'second': second.toEJson(),
    };
  }

  static EJsonValue _toEJson(Person value) => value.toEJson();
  static Person _fromEJson(EJsonValue ejson) {
    return switch (ejson) {
      {
        'name': EJsonValue name,
        'link': EJsonValue link,
        'title': EJsonValue title,
        'author': EJsonValue author,
        'hour': EJsonValue hour,
        'minute': EJsonValue minute,
        'second': EJsonValue second,
      } =>
        Person(
          fromEJson(name),
          fromEJson(link),
          fromEJson(title),
          fromEJson(author),
          fromEJson(hour),
          fromEJson(minute),
          fromEJson(second),
        ),
      _ => raiseInvalidEJson(ejson),
    };
  }

  static final schema = () {
    RealmObjectBase.registerFactory(Person._);
    register(_toEJson, _fromEJson);
    return SchemaObject(ObjectType.realmObject, Person, 'Person', [
      SchemaProperty('name', RealmPropertyType.string),
      SchemaProperty('link', RealmPropertyType.string),
      SchemaProperty('title', RealmPropertyType.string),
      SchemaProperty('author', RealmPropertyType.string),
      SchemaProperty('hour', RealmPropertyType.string),
      SchemaProperty('minute', RealmPropertyType.string),
      SchemaProperty('second', RealmPropertyType.string),
    ]);
  }();

  @override
  SchemaObject get objectSchema => RealmObjectBase.getSchema(this) ?? schema;
}