realm_common 0.3.0+beta realm_common: ^0.3.0+beta copied to clipboard
Hosts the common code shared between realm, realm_dart and realm_generator packages. This package is part of the official Realm Flutter and Realm Dart SDKs.
0.3.0+beta (2022-06-02) #
This project is in the Beta stage. The API should be quite stable, but occasional breaking changes may be made.
Breaking Changes #
- Made all
Configuration
fields final so they can only be initialized in the constructor. This better conveys the immutability of the configuration class. (#455) - Removed
inMemory
field fromConfiguration
. UseConfiguration.inMemory
factory instead. - Due to the introduction of different types of configurations the
Configuration
constructor has been removed. Use theConfiguration.local
factory instead. (#496)
Enhancements #
- Added a property
Configuration.disableFormatUpgrade
. When set totrue
, opening a Realm with an older file format will throw an exception to avoid automatically upgrading it. (#310) - Support result value from write transaction callbacks. (#294)
- Added a property
Realm.isInTransaction
that indicates whether the Realm instance has an open write transaction associated with it. - Support anonymous application credentials. (#443)
- Added a property
Configuration.initialDataCallback
. This is a callback executed when a Realm file is first created and allows you to populate some initial data necessary for your application. (#298) - Support app configuration. (#306)
- Support app class. (#446)
- Support should realm compact on open callback
Configuration.shouldCompactCallback
as option when configuring a Realm to determine if it should be compacted before being returned. (#466) - Support ObjectId type. (#468)
- Support Uuid type. (#470)
- Support application login. (#469)
- Support app configuration log level and request timeout.(#566)
- Support EmailPassword register user. (#452)
- Support EmailPassword confirm user. (#478)
- Support EmailPassword resend user confirmation email. (#479)
- Support EmailPassword complete reset password. (#480)
- Support EmailPassword reset password. (#481)
- Support EmailPassword calling custom reset password functions. (#482)
- Support EmailPassword retry custom user confirmation functions. (#484)
- Expose currentUser property on App. (473)
- Support remove user. (#492)
- Support switch current user. (#493)
- Support user custom data and refresh. (#525)
- Support linking user credentials. (#525)
- Support user state. (#525)
- Support getting user id and identities. (#525)
- Support user logout. (#525)
- Support user deviceId. (#570)
- Support user authentication provider type. (#570)
- Support user profile data. (#570)
- Support flexible synchronization. (#496)
- Added support for DateTime properties. (#569)
- Support setting logger on AppConfiguration. (#583)
- Support setting logger on Realm class. Default is to print info message or worse to the console. (#583)
- Support getting the
SyncSession
for a synchronized Realm via therealm.syncSession
property. - Support the following
SyncSession
API:realmPath
returning the path of the Realm for the session.state
returning the current state of the session.connectionState
returning the current state of the connection.connectionStateChanges
returns a Stream that emits connection state updates.user
returning the user that owns the session.pause()
pauses synchronization.resume()
resumes synchronization.waitForUpload/waitForDownload
returns a Future that completes when the session uploaded/downloaded all changes.getProgressStream
returns a Stream that emits progress updates.
- Support SyncErrorHandler in FlexibleSyncConfiguration. (#577)
- Support SyncClientResetHandler in FlexibleSyncConfiguration. (#608)
- [Dart] Added
Realm.Shutdown
method to allow normal process exit in Dart applications. (#617)
Fixed #
- Fixed an issue that would result in the wrong transaction being rolled back if you start a write transaction inside a write transaction. (#442)
- Fixed boolean value persistence (#474)
Internal #
- Added a command to deploy an Atlas App Services application to
realm_dart
. Usage:dart run realm_dart deploy-apps
. By default it will deploy apps tohttp://localhost:9090
which is the endpoint of the local docker image. If--atlas-cluster
is provided, it will authenticate, create an application and link the provided cluster to it. (PR #309) - Unit tests will now attempt to lookup and create if necessary Atlas App Services applications (similarly to the above mentioned command). See
test.dart/setupBaas()
for the environment variables that control the Url and Atlas Cluster that will be used. If theBAAS_URL
environment variable is not set, no apps will be imported and sync tests will not run. (PR #309)
Compatibility #
- Dart ^2.17 on Windows, MacOS and Linux
- Flutter ^3.0 on Android, iOS, Linux, MacOS and Windows
0.2.1+alpha Release notes (2022-03-20) #
This project is in the Alpha stage. All API's might change without warning and no guarantees are given about stability. Do not use it in production.
Enhancements #
-
Support change notifications on query results. (#208)
Every
RealmResults<T>
object now has achanges
method returning aStream<RealmResultsChanges<T>>
which can be listened to.final subscription = realm.all<Dog>().changes.listen((changes) { changes.inserted // indexes of inserted ojbects changes.modified // indexes of modified objects changes.deleted // indexes of deleted objects changes.newModified // indexes of modified objects after deletions and insertions are accounted for. changes.moved // indexes of moved objects }}); subscription.cancel(); // cancel the subscription
-
Support change notifications on list collections. (#261)
Every
RealmList<T extends RealmObject>
object now has achanges
method returning aStream<RealmListChanges<T>>
which can be listened to.final team = Team('team', players: [Person("player")]); realm.write(() => realm.add(team)); var firstCall = true; final subscription = team.players.changes.listen((changes) { changes.inserted // indexes of inserted ojbects changes.modified // indexes of modified objects changes.deleted // indexes of deleted objects changes.newModified // indexes of modified objects after deletions and insertions are accounted for. changes.moved // indexes of moved objects }); subscription.cancel(); // cancel the subscription
-
Support change notifications on realm objects. (#262)
Every managed
RealmObject
now has a changes method which allows to listen for object property changes.var dog = realm.all<Dog>().first; final subscription = dog.changes.listen((changes) { changes.isDeleted // if the object has been deleted changes.object // the RealmObject being listened to. changes.properties // the changed properties }); subscription.cancel(); // cancel the subscription
-
Added support for checking if realm lists and realm objects are valid. (#183)
-
Support query on lists of realm objects. (#239)
Every RealmList
final team = Team('Dream Team', players: [Person("Michael Jordan")]); realm.write(() => realm.add(team)); // Object needs to be managed. final result = team.players.query(r'name BEGINSWITH $0', ['M']);
-
Added support for opening realm in read-only mode. (#260)
-
Added support for opening in-memory realms. (#280)
-
Primary key fields no longer required to be
final
in data model classes (#240)Previously primary key fields needed to be
final
.@RealmModel() class _Car { @PrimaryKey() late final String make; // previously }
Now primary key fields no longer need to be
final
@RealmModel() class _Car { @PrimaryKey() late String make; // now }
-
List fields no longer required to be
final
in data model classes. (#253)Previously list fields needed to be
final
.@RealmModel() class _Car { late final List<Person> owner; // previously }
Now list fields no longer need to be
final
@RealmModel() class _Car { late List<Person> owner; // now }
-
Support custom FIFO special files. (#284)
-
Support flutter for Linux desktop. (#279)
Fixed #
- Snapshot the results collection when iterating collections of realm objects. (#258)
Compatibility #
- Dart ^2.15 on Windows, MacOS and Linux
- Flutter ^2.10 on Android, iOS, Linux, MacOS and Windows
0.2.0+alpha Release notes (2022-01-31) #
This project is in the Alpha stage. All API's might change without warning and no guarantees are given about stability. Do not use it in production.
Enhancements #
- Completely rewritten from the ground up with sound null safety and using Dart FFI
Compatibility #
- Dart ^2.15 on Windows, MacOS and Linux
0.2.0-alpha.2 Release notes (2022-01-29) #
Notes: This release is a prerelease version. All API's might change without warning and no guarantees are given about stability.
Enhancements #
- Completеly rewritten from the ground up with sound null safety and using Dart FFI
Fixed #
- Fix running package commands.
Compatibility #
- Dart ^2.15 on Windows, MacOS and Linux
0.2.0-alpha.1 Release notes (2022-01-29) #
Notes: This release is a prerelease version. All API's might change without warning and no guarantees are given about stability.
Enhancements #
- Completеly rewritten from the ground up with sound null safety and using Dart FFI
Fixed #
- Realm close stops internal scheduler.
Internal #
- Fix linter issues
Compatibility #
- Dart ^2.15 on Windows, MacOS and Linux
0.2.0-alpha Release notes (2022-01-27) #
Notes: This release is a prerelease version. All API's might change without warning and no guarantees are given about stability.
Enhancements #
- Completеly rewritten from the ground up with sound null safety and using Dart FFI
Compatibility #
- Dart ^2.15 on Windows, MacOS and Linux
Internal #
- Uses Realm Core v11.9.0
0.1.1+preview Release notes (2021-04-01) #
Fixed #
realm_dart install
command is correctly installing the realm native binary
Compatibility #
- Windows and Mac
- Dart SDK 2.12 stable from https://dart.dev/
0.1.0+preview Release notes (2021-04-01) #
Enhancements #
- The initial preview version of the Realm SDK for Dart.
Compatibility #
- Windows and Mac
- Dart SDK 2.12 stable from https://dart.dev/