Releases: objectbox/objectbox-dart
Releases · objectbox/objectbox-dart
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
QueryRelationPropertytoQueryRelationToOneandQueryRelationManytoQueryRelationToMany
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
ToOnerelation cycles. - Enforce you can only open the same database directory once (multiple parallel
Storeinstances are not allowed). - Fix
macOSsandbox database directory permissions (see notes in Flutter-specific "Getting Started" docs). - Fix
ToManyshowing 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 aFutureandputQueued()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
streamandfindStream()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
finalfields 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 newUniqueViolationExceptionthrown 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 aFutureandputQueued()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
streamandfindStream()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
finalfields 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 newUniqueViolationExceptionthrown 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.14.0
- Fix non-nullable
DateTimefields deserialization regression (introduced in v0.13.0) - fields were read as nanosecond instead of millisecond timestamp. - Respect case-sensitivity setting in string
PropertyQuery.count()withdistinct = true(the result was always like withcaseSensitive = true). - Query
findFirst()doesn't changeQueryobject'soffsetandlimitanymore. - Change Query string conditions
caseSensitivedefault totrue, previously conditions were case-insensitive by default. - Introduce Store constructor argument
queriesCaseSensitiveDefault- allows changing the default value ofcaseSensitivein queries.
This includes stringPropertyQuerywhen usingdistinct = true. - Get around Flutter's Android release build issue by changing the code the compiler had trouble with.
- Remove deprecated APIs from internal plugin interfaces (deprecation notice printed during Flutter build).
- Generator - update dependencies to their null-safe versions.
- Generated code - avoid more linter issues.
v0.13.0
- Null-safety support: both in the library and the generated code.
- Remove deprecated arguments
offset,limit,withEqualfromQuerymethods. - More performance optimizations, mostly in our FlatBuffers fork.
- Fix FlatBuffers builder growing.
- Update to objectbox-c v0.13.0
- Update to objectbox-android v2.9.1
- Increase minimum SDK versions: Flutter v2.0 & Dart v2.12.
v0.13.0-nullsafety.3
Null safety pre-release, including new features and performance improvements (details will be specified in the final release).
Any feedback is welcome - raise a GitHub issue or comment on an existing one.
v0.12.1
v0.12.0
- Recognize
DateTimeentity fields, settingPropertyType.date(millisecond storage precision). - Support specifying
PropertyType.dateNanoforDateTimefields (nanosecond storage precision). - Add
Store.referencegetter andStore.fromReference()factory - enabling access to store from multiple isolates. - Add
Store.subscribe<EntityType>()andStore.subscribeAll()data change event streams. - Add multiple
SyncClientevent streams. - Add
Queryconditions forlessOrEqual/greaterOrEqualon integer and double property types. - Add self-assignable IDs: annotation
@Id(assignable: true). - Update to objectbox-c v0.12.0
- Update to objectbox-android v2.9.0
- Update to objectbox-swift v1.5.0
- Increase minimum SDK versions: Flutter v1.20 & Dart v2.9. Code generator already required Flutter v1.22 & Dart v2.10.
v0.11.1
v0.11.0
- Add
ToOne<>class to wrap related entities. See examples for details.
(thanks @Buggaboo for jump-starting this). - Add
ToMany<>class to wrap related entities. See examples for details. - Significantly improve
Boxread and write performance. - Change
Box.put()andputMany()- now also update given object's ID property.
Note: If you previouslyput()the same new object instance multiple times without setting id, the object will now
be inserted only the first time, and overwritten on subsequent puts of the same instance, its ID is not zero anymore. - Change
Box.putMany()andQuery.FindIds()to return fixed-size lists. - Change
Box.GetMany()to return a fixed-size list by default, with an option to return a growable list. - Change
@Id()annotation to optional - recognized automatically if there's anint idfield (case insensitive). - Make
observable.dartpart ofobjectbox.dartexports, no need to import it separately. - Expose
PutMode- allowing semantics choice between put, update and insert. - Hide internal classes not intended for general use (e.g. all Model* classes).
- Rename
versionLib()tonativeLibraryVersion(). - Change
TxModeenum values to lowercase. - Remove
flagsfrom theProperty()annotation.