Skip to content

Releases: objectbox/objectbox-dart

v1.1.1

09 Jul 11:19

Choose a tag to compare

  • Add support for Query.param() on linked entities.
  • Fix generated openStore() for apps that don't enable null-safety yet.

v1.1.0

06 Jul 12:29

Choose a tag to compare

  • 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 to QueryRelationToOne and QueryRelationMany to QueryRelationToMany
    to help users pick the right link function: link() vs linkMany().
  • 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

18 May 11:02

Choose a tag to compare

  • New Box putAsync() returning a Future and putQueued() 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 appropriate List<...> type without casts.
  • Query conditions inside() renamed to oneOf(), notIn() and notInList() renamed to notOneOf().
  • Query stream and findStream() are replaced by QueryBuilder.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 to watch().
  • Store subscribeAll() replaced by a shared broadcast stream entityChanges.
  • 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 new UniqueViolationException thrown when an object you're trying to put() would violate a Unique() 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

14 May 10:33

Choose a tag to compare

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 a Future and putQueued() 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 appropriate List<...> type without casts.
  • Query conditions inside() renamed to oneOf(), notIn() and notInList() renamed to notOneOf().
  • Query stream and findStream() are replaced by QueryBuilder.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 to watch().
  • Store subscribeAll() replaced by a shared broadcast stream entityChanges.
  • 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 new UniqueViolationException thrown when an object you're trying to put() would violate a Unique() 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

01 Apr 07:15

Choose a tag to compare

  • Fix non-nullable DateTime fields deserialization regression (introduced in v0.13.0) - fields were read as nanosecond instead of millisecond timestamp.
  • Respect case-sensitivity setting in string PropertyQuery.count() with distinct = true (the result was always like with caseSensitive = true).
  • Query findFirst() doesn't change Query object's offset and limit anymore.
  • Change Query string conditions caseSensitive default to true, previously conditions were case-insensitive by default.
  • Introduce Store constructor argument queriesCaseSensitiveDefault - allows changing the default value of caseSensitive in queries.
    This includes string PropertyQuery when using distinct = 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

19 Mar 17:36

Choose a tag to compare

  • Null-safety support: both in the library and the generated code.
  • Remove deprecated arguments offset, limit, withEqual from Query methods.
  • 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

17 Mar 17:36

Choose a tag to compare

v0.13.0-nullsafety.3 Pre-release
Pre-release

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

05 Mar 13:51

Choose a tag to compare

  • Further performance optimizations in our FlatBuffers fork.
  • Avoid empty FFI structs - get rid of "INFO" messages with new Dart SDK v2.12.
  • More internal changes in preparation for null-safety.

v0.12.0

26 Feb 18:02

Choose a tag to compare

  • Recognize DateTime entity fields, setting PropertyType.date (millisecond storage precision).
  • Support specifying PropertyType.dateNano for DateTime fields (nanosecond storage precision).
  • Add Store.reference getter and Store.fromReference() factory - enabling access to store from multiple isolates.
  • Add Store.subscribe<EntityType>() and Store.subscribeAll() data change event streams.
  • Add multiple SyncClient event streams.
  • Add Query conditions for lessOrEqual/greaterOrEqual on 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

26 Feb 17:49

Choose a tag to compare

  • Fix List<String> and List<int> reading - replace official FlatBuffers lazy reader with a custom (eager) one.