Releases: objectbox/objectbox-dart
Releases · objectbox/objectbox-dart
v1.5.0
- Add
Store.runInTransactionAsync
to run database operations asynchronously in the background (requires Flutter 2.8.0/Dart 2.15.0 or newer). #415 - Rename
Store.runIsolated
torunAsync
, drop unusedmode
parameter, propagate errors and handle premature isolate exit. #415 - The native ObjectBox library is also searched for in the
lib
subfolder on desktop OS (macOS, Linux, Windows). This is where theinstall.sh
script downloads it by default.
E.g. it is no longer necessary to install the library globally to rundart test
orflutter test
. - Windows: Support database directory paths that contain unicode (UTF-8) characters. #406
- Changed
Query.stream
to collect results in a worker isolate, which should typically be faster. #420 - Update: objectbox-c 0.16.0.
- Update: objectbox-android 3.1.3.
- Add new task with tag list Flutter example app that shows how to use relations. #419
v1.4.1
v1.4.0
Note: the code generated by ObjectBox has breaking changes, make sure to re-generate it after upgrading using
flutter pub run build_runner build
(or dart run build_runner build
for Dart only projects).
- Support ObjectBox Admin for Android apps to browse the database. #148
- Add
Store.runIsolated
to run database operations (asynchronous) in the background (requires Flutter 2.8.0/Dart 2.15.0 or newer). It spawns an isolate, runs the given callback in that isolate with its own Store and returns the result of the callback. This is similar to Flutters compute, but with the callback having access to a Store. #384 - Add
Store.attach
to attach to a Store opened in a directory. This is an improved replacement forStore.fromReference
to share a Store across isolates. It is no longer required to pass a Store reference and the underlying Store remains open until the last instance is closed. #376 - Add an option to change code-generator's
output_dir
inpubspec.yaml
. #341 - Update: objectbox-c 0.15.2.
- Update: objectbox-android 3.1.2.
- Update: objectbox-swift 1.7.0.
v1.3.0
v1.2.1
v1.2.0
- Add
Query.findUnique()
to find a single object matching the query. - Add support for relations when using 3rd-party JSON serialization libraries.
- Fix generator when mixing backlinks and "standard" relations in the same entity (generated code had a syntax error).
- Fix
@Backlink()
annotation when specifying aToOne
relation by field name. - Fix
Query.find*()
exception forwarding when a user-provided property converter throws. - Increase supported
analyzer
dependency version to include v2.x major version. - Update FlatBuffer dependency to the latest upstream version.
v1.1.1
v1.1.0
- New
openStore()
in the generated code to simplify creating a store instance, especially on Flutter (uses application
documents directory as a default). - Add support for Entities used together with some custom code-generators (immutable objects, JSON, ...).
See@Entity(realClass: )
new field and its docs. - New
Query.param()
to support reusable queries (changing condition values before execution).
See Reusing queries in docs. - Rename semi-internal
QueryRelationProperty
toQueryRelationToOne
andQueryRelationMany
toQueryRelationToMany
to help users pick the right link function:link()
vslinkMany()
. - Add support for the entity/property/relation rename or reset workflow.
See Data model updates for details. - Add support for
ToOne
relation cycles. - Enforce you can only open the same database directory once (multiple parallel
Store
instances are not allowed). - Fix
macOS
sandbox database directory permissions (see notes in Flutter-specific "Getting Started" docs). - Fix
ToMany
showing duplicate items after adding them before reading the previous list. - Fix invalid native free during store shutdown if large data was inserted (more than 64 kilobytes flatbuffer).
- FlatBuffers serialization performance improvements.
- Update to objectbox-android v2.9.2-RC3.
v1.0.0
- New Box
putAsync()
returning aFuture
andputQueued()
for asynchronous writes. - Query now supports auto-closing. You can still call
close()
manually if you want to free native resources sooner
than they would be by Dart's garbage collector, but it's not mandatory anymore. - Change the "meta-model" fields to provide completely type-safe query building.
Conditions you specify are now checked at compile time to match the queried entity. - Make property queries fully typed,
PropertyQuery.find()
now returns the appropriateList<...>
type without casts. - Query conditions
inside()
renamed tooneOf()
,notIn()
andnotInList()
renamed tonotOneOf()
. - Query
stream
andfindStream()
are replaced byQueryBuilder.watch()
, i.e.box.query(...).watch()
. - New Query
stream()
to stream objects all the while the query is executed in the background. - New Query condition
between()
for integers and IDs. - Store
subscribe<EntityType>()
renamed towatch()
. - Store
subscribeAll()
replaced by a shared broadcast streamentityChanges
. - Entities can now contain
final
fields and they're properly stored/loaded (must be constructor params). - Flutter desktop - native library is now downloaded automatically, same as for mobile platforms.
- Follow exception-vs-error throwing conventions - throwing errors when it's a permanent developer-caused error. Namely,
there's a newUniqueViolationException
thrown when an object you're trying toput()
would violate aUnique()
index. - Even higher than usual amount of internal optimizations and improvements.
- Update to objectbox-c v0.14.0.
- Update to objectbox-swift v1.6.0.
- Update to objectbox-android v2.9.2-RC.
v0.15.0
This is a 1.0 release candidate - please try it out and give us any last-minute feedback, especially on new and changed APIs.
- New Box
putAsync()
returning aFuture
andputQueued()
for asynchronous writes. - Query now supports auto-closing. You can still call
close()
manually if you want to free native resources sooner
than they would be by Dart's garbage collector, but it's not mandatory anymore. - Change the "meta-model" fields to provide completely type-safe query building.
Conditions you specify are now checked at compile time to match the queried entity. - Make property queries fully typed,
PropertyQuery.find()
now returns the appropriateList<...>
type without casts. - Query conditions
inside()
renamed tooneOf()
,notIn()
andnotInList()
renamed tonotOneOf()
. - Query
stream
andfindStream()
are replaced byQueryBuilder.watch()
, i.e.box.query(...).watch()
. - New Query
stream()
to stream objects all the while the query is executed in the background. - Store
subscribe<EntityType>()
renamed towatch()
. - Store
subscribeAll()
replaced by a shared broadcast streamentityChanges
. - Entities can now contain
final
fields and they're properly stored/loaded (must be constructor params). - Flutter desktop - native library is now downloaded automatically, same as for mobile platforms.
- Follow exception-vs-error throwing conventions - throwing errors when it's a permanent developer-caused error. Namely,
there's a newUniqueViolationException
thrown when an object you're trying toput()
would violate aUnique()
index. - Even higher than usual amount of internal optimizations and improvements.
- Update to objectbox-c v0.14.0.
- Update to objectbox-swift v1.6.0.
- Update to objectbox-android v2.9.2-RC.