Realm is a mobile database: a replacement for SQLite & ORMs.

Overview

Realm

License

Realm is a mobile database that runs directly inside phones, tablets or wearables. This repository holds the source code for the Realm SDK for Flutter™ and Dart™.

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.

Getting Started

  • Import Realm in a dart file app.dart

    import 'package:realm/realm.dart';  // import realm package
    
    part 'app.g.dart'; // declare a part file.
        
    @RealmModel() // define a data model class named `_Car`.
    class _Car {
      late String make;
    
      late String model;
    
      int? kilometers = 500;
    }
  • Generate RealmObject class Car from data model class _Car.

    flutter pub run realm generate
    
  • Open a Realm and add some objects.

    var config = Configuration([Car.schema]);
    var realm = Realm(config);
    
    var car = Car("Tesla", "Model Y", kilometers: 5);
    realm.write(() {
      realm.add(car);
    });
  • Query objects in Realm.

    var cars = realm.all<Car>();
    Car myCar = cars[0];
    print("My car is ${myCar.make} model ${myCar.model}");
    
    cars = realm.all<Car>().query("make == 'Tesla'");

Samples

For complete samples check the Realm Flutter and Dart Samples.

Documentation

For API documentation go to

For a complete documentation go to Realm Flutter and Dart SDK Docs.

Limitations

  • This version of Realm Flutter and Dart SDK allows working with a local only (on device) Realm database in Flutter and Dart desktop. Realm Sync functionality is not implemented.

  • It provides the functionality for creating, retrieving, querying, sorting, filtering, updating Realm objects.

  • Flutter Desktop on Linux is not supported yet.

  • Migrations are not supported yet.

    If you change your data models often and receive a migration exception be sure to delete the old default.realm file in your application directory. It will get recreated with the new schema the next time the Realm is opened.

Realm Flutter SDK

The Realm Flutter package name is realm

Environment setup for Realm Flutter

  • Supported platforms are Flutter (iOS, Android, Windows, MacOS) and Dart standalone (Windows, MacOS and Linux)

  • Flutter ^2.8.0

  • For Flutter Desktop environment setup check the guide here

  • Cocoapods v1.11 or newer is required

Usage

The full contents of catalog.dart is listed after the usage

  • Add realm package to a Flutter application.

    flutter pub add realm
    
  • Import Realm in a dart file (ex. catalog.dart).

    import 'package:realm/realm.dart';
  • Declare a part file catalog.g.dart in the begining of the catalog.dart dart file after all imports.

    import 'dart:io';
    
    part 'catalog.g.dart';
  • Create a data model class.

    It should start with an underscore _Item and be annotated with @RealmModel()

    @RealmModel()
    class _Item {
        @PrimaryKey()
        late int id;
    
        late String name;
        
        int price = 42;
    }
  • Generate RealmObject class Item from data model class _Item.

    On Flutter use flutter pub run realm to run realm package commands

    flutter pub run realm generate
    

    A new file catalog.g.dart will be created next to the catalog.dart.

    *This file should be committed to source control

  • Use the RealmObject class Item with Realm.

    // Create a Configuration object
    var config = Configuration([Item.schema]);
    
    // Opean a Realm
    var realm = Realm(config);
    
    var myItem = Item(0, 'Pen', price: 4);
    
    // Open a write transaction
    realm.write(() {
        realm.add(myItem);
        var item = realm.add(Item(1, 'Pencil')..price = 20);
    });
    
    // Objects `myItem` and `item` are now managed and persisted in the realm
    
    // Read object properties from realm
    print(myItem.name);
    print(myItem.price);
    
    // Update object properties
    realm.write(() {
        myItem.price = 20;
        myItem.name = "Special Pencil";
    });
    
    // Get objects from the realm
    
    // Get all objects of type
    var items = realm.all<Item>();
    
    // Get object by index
    var item = items[1];
    
    // Get object by primary key
    var itemByKey = realm.find<Item>(0);
    
    // Filter and sort object
    var objects = realm.query<Item>("name == 'Special Pencil'");
    var name = 'Pen';
    objects = realm.query<Item>(r'name == $0', [name]]);
    
    // Close the realm
    realm.close();

Full contents of catalog.dart

import 'package:realm/realm.dart';

part 'catalog.g.dart';

@RealmModel()
class _Item {
    @PrimaryKey()
    late int id;

    late String name;
    
    int price = 42;
}

// Create a Configuration object
var config = Configuration([Item.schema]);

// Opean a Realm
var realm = Realm(config);

var myItem = Item(0, 'Pen', price: 4);

// Open a write transaction
realm.write(() {
    realm.add(myItem);
    var item = realm.add(Item(1, 'Pencil')..price = 20);
});

// Objects `myItem` and `item` are now managed and persisted in the realm

// Read object properties from realm
print(myItem.name);
print(myItem.price);

// Update object properties
realm.write(() {
    myItem.price = 20;
    myItem.name = "Special Pencil";
});

// Get objects from the realm

// Get all objects of type
var items = realm.all<Item>();

// Get object by index
var item = items[1];

// Get object by primary key
var itemByKey = realm.find<Item>(0);

// Filter and sort object
var objects = realm.query<Item>("name == 'Special Pencil'");
var name = 'Pen';
objects = realm.query<Item>(r'name == $0', [name]]);

// Close the realm
realm.close();

Realm Dart SDK

The Realm Dart package is realm_dart

Environment setup for Realm Dart

  • Supported platforms are Windows, Mac and Linux.

  • Dart SDK ^2.15

Usage

  • Add realm_dart package to a Dart application.

    dart pub add realm_dart
    
  • Install the realm_dart package into the application. This downloads and copies the required native binaries to the app directory.

    dart run realm_dart install
    
  • Import realm_dart in a dart file (ex. catalog.dart).

    import 'package:realm_dart/realm.dart';
  • To generate RealmObject classes with realm_dart use this command.

    On Dart use dart run realm_dart to run realm_dart package commands

    dart run realm_dart generate
    

    A new file catalog.g.dart will be created next to the catalog.dart.

    *This file should be committed to source control

  • For more usage of Realm Dart see the Realm Flutter usage above.

Building the source

Building Realm Flutter

  • Clone the repo
    git clone https://github.com/realm/realm-dart
    git submodule update --init --recursive
    

Build Realm Flutter native binaries

  • Android

    ./scripts/build-android.sh all
    scripts\build-android.bat all
    # Or for Android Emulator only
    ./scripts/build-android.sh x86
    scripts\build-android.bat x86
  • iOS

    ./scripts/build-ios.sh
    # Or for iOS Simulator only
    ./scripts/build-ios.sh simulator
  • Windows

    scripts\build.bat
    
  • MacOS

    ./scripts/build-macos.sh
    

Building Realm Dart

  • Windows
    scripts\build.bat
    
  • MacOS
    ./scripts/build-macos.sh
    
  • Linux
    ./scripts/build-linux.sh
    

Versioning

Realm Flutter and Dart SDK packages follow Semantic Versioning. During the initial development the packages will be versioned according the scheme 0.major.minor+release stage until the first stable version is reached then packages will be versioned with major.minor.patch scheme.

The first versions will follow 0.1.0+preview, 0.1.1+preview etc. Then next release stages will pick up the next minor version 0.1.2+beta, 0.1.3+beta. This will ensure dependencies are updated on dart pub get with the new alpha, beta versions. If an alpha version is released before beta and it needs to not be considered for pub get then it should be marked as prerelease with -alpha so 0.1.2-alpha etc. Updating the major version with every release stage is also possible - 0.2.0+alpha, 0.3.0+beta, 0.3.1+beta.

Code of Conduct

This project adheres to the MongoDB Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].

License

Realm Flutter and Dart SDKs and Realm Core are published under the Apache License 2.0.

This product is not being made available to any person located in Cuba, Iran, North Korea, Sudan, Syria or the Crimea region, or to any other person that is not eligible to receive the product under U.S. law.

The "Dart" name and logo and the "Flutter" name and logo are trademarks owned by Google.

Comments
  •  realm generate not work

    realm generate not work

    run flutter pub run realm generate

    [INFO] Generating build script...
    [INFO] Generating build script completed, took 371ms
    
    [WARNING] Invalidated precompiled build script due to missing asset graph.
    [INFO] Precompiling build script......
    [INFO] Precompiling build script... completed, took 6.2s
    
    [INFO] Initializing inputs
    [INFO] Building new asset graph...
    [INFO] Building new asset graph completed, took 1.1s
    
    [INFO] Checking for unexpected pre-existing outputs....
    [INFO] Deleting 120 declared outputs which already existed on disk.
    

    program has been running until press crtl + c

    schemas.g.dart and json.g.dart(JsonSerializableGenerator code) were deleted.

    when run again:

    Failed to build realm:realm:
    Failed to build realm:realm:
    /D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/generate/options.dart:3:6: Error: Error when reading '/D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/generate/options
    .g.dart': 系统找不到指定的文件。
    
    part 'options.g.dart';
         ^
    /D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/install/options.dart:22:6: Error: Error when reading '/D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/install/options.
    g.dart': 系统找不到指定的文件。
    
    part 'options.g.dart';
         ^
    /D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/metrics/flutter_info.dart:24:6: Error: Error when reading '/D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/metrics/flu
    tter_info.g.dart': 系统找不到指定的文件。
    
    part 'flutter_info.g.dart';
         ^
    /D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/metrics/metrics.dart:27:6: Error: Error when reading '/D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/metrics/metrics.
    g.dart': 系统找不到指定的文件。
    
    part 'metrics.g.dart';
         ^
    /D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/metrics/options.dart:23:6: Error: Error when reading '/D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/metrics/options.
    g.dart': 系统找不到指定的文件。
    
    part 'options.g.dart';
         ^
    /D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/archive/options.dart:21:6: Error: Error when reading '/D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/archive/options.
    g.dart': 系统找不到指定的文件。
    
    part 'options.g.dart';
         ^
    /D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/extract/options.dart:21:6: Error: Error when reading '/D:/sdk/flutter/.pub-cache/hosted/pub.flutter-io.cn/realm-0.3.1+beta/lib/src/cli/extract/options.
    g.dart': 系统找不到指定的文件。
    
    part 'options.g.dart';
    ...
    
    O-Community 
    opened by Comanx 36
  • [Bug]: No items in the document field that are linked via relationship.

    [Bug]: No items in the document field that are linked via relationship.

    What happened?

    No items in the document field that are in another collection and are linked via relationship.

    I linked the collections through the relationships:

    {
      "noteIds": {
        "ref": "#/relationship/mongodb-atlas/todo/Note",
        "foreignKey": "_id",
        "isList": true
      },
      "ownerIds": {
        "ref": "#/relationship/mongodb-atlas/todo/UserProfile",
        "foreignKey": "_id",
        "isList": true
      }
    }
    

    Before that, I was getting a list of ObjectId. Now I get an empty list in the fields: noteIds ownerIds Screenshot 2022-12-06 at 16 22 09

    Items of collections: Screenshot 2022-12-06 at 16 19 45 Screenshot 2022-12-06 at 16 19 38 Screenshot 2022-12-06 at 16 19 24

    Repro steps

    Add relationship

    Version

    Flutter 3.3.9, Realm 0.8.0+rc

    What Realm SDK flavor are you using?

    MongoDB Atlas (i.e. Sync, auth, functions)

    What type of application is this?

    Flutter Application

    Client OS and version

    Android 11

    Code snippets

    @RealmModel()
    class _Topic {
      @PrimaryKey()
      @MapTo('_id')
      late ObjectId id;
      @MapTo('name')
      late String name;
      @MapTo('userIdCreated')
      late ObjectId userIDCreated;
      @MapTo('description')
      late String? description;
      @MapTo('logo')
      late _TopicLogo? logo;
      @MapTo('attachment')
      late List<$Attachment> attachments;
      @MapTo('ownerIds')
      late List<$UserProfile> ownerIDs;
      @MapTo('priorities')
      late List<ObjectId> priorities;
      @MapTo('statuses')
      late List<ObjectId> statuses;
      @MapTo('activityTypes')
      late List<ObjectId> activityTypes;
      @MapTo('timestampCreated')
      late int timestampCreated;
      @MapTo('timestampLastUpdated')
      late int timestampLastUpdated;
      @MapTo('noteIds')
      late List<$Note> noteIDs;
    }
    

    Stacktrace of the exception/crash you're getting

    No response

    Relevant log output

    No response

    O-Community 
    opened by RedFox64 20
  • [Bug]: Unable to install on iOS

    [Bug]: Unable to install on iOS

    What happened?

    I tried to run pod install on my Flutter project with realm: ^0.7.0+rc, but it failed with an error message:

    [!] Unable to install vendored xcframework `realm_dart` for Pod `realm`, because it contains both static and dynamic frameworks.
    

    Because of this error, I could not start debugging my project. Removing realm: ^0.7.0+rc from pubspec.yaml, I can start my project well as expected.

    Based on my observation, I'm guessing that it's a bug of this package, but I'm not sure.

    Repro steps

    1. Add realm: ^0.7.0+rc to pubspec.yaml dependencies.
    2. Try to build / debug the Flutter project with the target set to an iOS device (Note that building a Flutter project calls pod install in its process)
    3. It says pod install failed

    Version

    Flutter 3.3.8 • channel stable • https://github.com/flutter/flutter.git Framework • revision 52b3dc25f6 (2 days ago) • 2022-11-09 12:09:26 +0800 Engine • revision 857bd6b74c Tools • Dart 2.18.4 • DevTools 2.15.0

    What Realm SDK flavor are you using?

    Local Database only

    What type of application is this?

    Flutter Application

    Client OS and version

    iOS 16.0

    Code snippets

    pubspec.yaml

    dependencies:
      flutter:
        sdk: flutter
       ...
      realm: ^0.7.0+rc
    

    Stacktrace of the exception/crash you're getting

    No response

    Relevant log output

    I'm using arch -x86_64 pod install instead of pod install cause I'm using M1 Macbook (https://github.com/CocoaPods/CocoaPods/issues/10220). It would return the same result of pod install on x86_64 based (intel) Macs.

    shawn@Shawns-MacBook-Pro atrablechat % cd ios
    shawn@Shawns-MacBook-Pro ios % arch -x86_64 pod install
    Ignoring ffi-1.15.3 because its extensions are not built. Try: gem pristine ffi --version 1.15.3
    ...
    Analyzing dependencies
    cloud_firestore: Using Firebase SDK version '10.0.0' defined in 'firebase_core'
    firebase_auth: Using Firebase SDK version '10.0.0' defined in 'firebase_core'
    firebase_core: Using Firebase SDK version '10.0.0' defined in 'firebase_core'
    firebase_messaging: Using Firebase SDK version '10.0.0' defined in 'firebase_core'
    firebase_storage: Using Firebase SDK version '10.0.0' defined in 'firebase_core'
    Downloading dependencies
    Installing BoringSSL-GRPC (0.0.24)
    Installing FMDB (2.7.5)
    Installing Firebase (10.0.0)
    Installing FirebaseAppCheckInterop (10.1.0)
    Installing FirebaseAuth (10.0.0)
    Installing FirebaseAuthInterop (10.1.0)
    Installing FirebaseCore (10.0.0)
    Installing FirebaseCoreExtension (10.1.0)
    Installing FirebaseCoreInternal (10.1.0)
    Installing FirebaseFirestore (10.0.0)
    Installing FirebaseInstallations (10.1.0)
    Installing FirebaseMessaging (10.0.0)
    Installing FirebaseStorage (10.0.0)
    Installing Flutter (1.0.0)
    Installing GTMSessionFetcher (2.3.0)
    Installing GoogleDataTransport (9.2.0)
    Installing GoogleUtilities (7.8.0)
    Installing Libuv-gRPC (0.0.10)
    Installing PromisesObjC (2.1.1)
    Installing TOCropViewController (2.6.1)
    Installing abseil (1.20211102.0)
    Installing audio_session (0.0.1)
    Installing camera_avfoundation (0.0.1)
    Installing cloud_firestore (4.0.4)
    Installing emoji_picker_flutter (0.0.1)
    Installing eraser (0.0.1)
    Installing ffmpeg-kit-ios-https (4.5.1)
    Installing ffmpeg_kit_flutter (4.5.1)
    Installing firebase_auth (4.1.1)
    Installing firebase_core (2.1.1)
    Installing firebase_messaging (14.0.4)
    Installing firebase_storage (11.0.4)
    Installing gRPC-C++ (1.44.0)
    Installing gRPC-Core (1.44.0)
    Installing image_cropper (0.0.4)
    Installing image_picker_ios (0.0.1)
    Installing leveldb-library (1.22.1)
    Installing nanopb (2.30909.0)
    Installing path_provider_ios (0.0.1)
    Installing permission_handler_apple (9.0.4)
    Installing realm (0.7.0+rc)
    Installing record (0.0.1)
    Installing share_plus (0.0.1)
    Installing shared_preferences_ios (0.0.1)
    Installing sign_in_with_apple (0.0.1)
    Installing sqflite (0.0.2)
    Installing uni_links (0.0.1)
    Installing url_launcher_ios (0.0.1)
    Installing video_player_avfoundation (0.0.1)
    Generating Pods project
    [!] Unable to install vendored xcframework `realm_dart` for Pod `realm`, because it contains both static and dynamic frameworks.
    
    [!] Automatically assigning platform `iOS` with version `12.1` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
    
    O-Community Needs-Attention 
    opened by Shawn-sudo 17
  • Contribution for Cloud Sync

    Contribution for Cloud Sync

    Hi, is cloud sync support in the current work? Is it open for contribution? I would like to help if it is possible since I need it for the offline capability of my app.

    Thanks

    O-Community 
    opened by dikatok 13
  • [Bug]: Sort not working

    [Bug]: Sort not working

    What happened?

    Maybe I missed something in the documentation, but I can not manage to sort within my Realm query.

    According to the documentation, my syntax should be correct final sortedCars = realm.query<Car>('TRUEPREDICATE SORT(model ASC)');

    Repro steps

    1. Query for collection with sort clause
    2. Get error
    3. Try without the Sort -> It works

    Version

    Channel stable, 3.3.2, on Microsoft Windows [Version 10.0.19043.2006], locale de-AT

    What Realm SDK flavor are you using?

    MongoDB Atlas (i.e. Sync, auth, functions)

    What type of application is this?

    Flutter Application

    Client OS and version

    0.5.0+beta

    Code snippets

    RealmResults petQuery = realm.query("ownerId == oid($oid) SORT(createdAt DESC)");

    Stacktrace of the exception/crash you're getting

    No response

    Relevant log output

    [INFO] Realm: Connection[1]: Session[1]: Received QUERY_ERROR "Client provided query with bad syntax: invalid RQL for table "Pet": syntax error: unexpected Sort, expecting Or or RightParenthesis" (error_code=300, query_version=623)
    
    O-Community 
    opened by Navil 11
  • [Bug]: Disconnect because of session error

    [Bug]: Disconnect because of session error

    What happened?

    I used a flexible sync to connect to mongo db app services, but the connection keeps on disconnecting with this error:

    I/flutter ( 7595): [INFO] Realm: Connection[1]: Session[1]: Received: ERROR "Other session level error: error while querying the state collection "state_Profile": (BadValue) cannot compare to undefined" (error_code=201, try_again=true, recovery_disabled=false) I/flutter ( 7595): [INFO] Realm: Connection[1]: Disconnected

    Repro steps

    Configuration config = Configuration.flexibleSync(currentUser, [Profile.schema], path: path); _realm = Realm(config); _realm.subscriptions.update((MutableSubscriptionSet subs) => subs.add(_realm.all<user.Profile>()));

    ... as per the docs

    _realm.syncSession.connectionState will report that it's connected, but afterwards it disconnects with mentioned error.

    Version

    0.4.0+beta (also tried 0.3.2+beta -> same)

    What Realm SDK flavor are you using?

    MongoDB Atlas (i.e. Sync, auth, functions)

    What type of application is this?

    Flutter Application

    Client OS and version

    Android API 31

    Code snippets

    Configuration config = Configuration.flexibleSync(currentUser, [Profile.schema], path: path); _realm = Realm(config); _realm.subscriptions.update((MutableSubscriptionSet subs) => subs.add(_realm.all<user.Profile>()));

    Stacktrace of the exception/crash you're getting

    I/flutter ( 7595): [INFO] Realm: Connected to endpoint '-.-.-.-:443' (from '-.-.-.-:43326')
    D/EGL_emulation( 7595): app_time_stats: avg=268.90ms min=4.57ms max=1212.86ms count=8
    I/flutter ( 7595): [INFO] Realm: Verifying server SSL certificate using 155 root certificates
    I/flutter ( 7595): [INFO] Realm: Connection[1]: Session[1]: Received: ERROR "Other session level error: error while querying the state collection "state_Profile": (BadValue) cannot compare to undefined" (error_code=201, try_again=true, recovery_disabled=false)
    I/flutter ( 7595): [INFO] Realm: Connection[1]: Disconnected
    

    Relevant log output

    No response

    O-Community 
    opened by McSnowflake 11
  • deleteAll with Flexible Sync

    deleteAll with Flexible Sync

    Hi @nielsenko,

    How does realm.deleteAll() work when used with flexible sync? Will this delete all records (locally and atlas)?

    Edit:

    What would be the way to delete all records locally without affecting atlas? This is necessary when a user logs out.

    O-Community 
    opened by elhe26 9
  • Expose dynamic Realm API

    Expose dynamic Realm API

    This exposes a set of string-based access API for the Realm. The current PR touches only the Realm entrypoint and a follow-up PR will be done to improve the experience when working with objects. The API is as follows

    // Lookup all objects of type Car
    final allCars = realm.dynamic.all('Car');
    
    // The collection can be further filtered using the normal API
    final carsFromJapan = allCars.query('manufacturer.domicile == "Japan"');
    
    // Lookup an object by PK
    final honda = realm.dynamic.find('Car', 'Honda');
    

    Note: One can use the RealmObject.get<...>(...) API to then read properties on the object, but those will change in the future, so not showing them in the example.

    This is a part of https://github.com/realm/realm-dart/issues/70.

    Fixes https://github.com/realm/realm-dart/issues/690.

    cla: yes 
    opened by nirinchev 9
  • Upgrade analyzer in realm_generator

    Upgrade analyzer in realm_generator

    Description

    Because no versions of freezed match >2.3.2 <3.0.0 and freezed 2.3.2 depends on analyzer ^5.2.0, freezed ^2.3.2 requires analyzer ^5.2.0.
    And because realm >=0.8.0+rc depends on realm_generator 0.8.0+rc which depends on analyzer ^4.7.0, freezed ^2.3.2 is incompatible with realm >=0.8.0+rc.
    So, because at depends on both realm ^0.8.0+rc and freezed ^2.3.2, version solving failed.
    pub get failed (1; So, because at depends on both realm ^0.8.0+rc and freezed ^2.3.2, version solving failed.)
    Process finished with exit code 1
    

    How important is this improvement for you?

    Would be a major improvement

    O-Community 
    opened by Rakshak1344 8
  • type bool bug

    type bool bug

    20220420 Flutter Test

    Mac mini (M1)

    flutter doctor                                                                                             
    Doctor summary (to see all details, run flutter doctor -v):
    [✓] Flutter (Channel stable, 2.10.4, on macOS 12.3.1 21E258 darwin-arm, locale zh-Hans-CN)
    [✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    [✓] Xcode - develop for iOS and macOS (Xcode 13.3.1)
    [✓] Chrome - develop for the web
    [✓] Android Studio (version 2021.1)
    [✓] VS Code (version 1.66.2)
    [!] Proxy Configuration
        ! NO_PROXY is not set
    [✓] Connected device (3 available)
    [!] HTTP Host Availability
        ✗ HTTP host https://cocoapods.org/ is not reachable. Reason: An error occurred while checking the HTTP host: Connection reset by
          peer
    
    ! Doctor found issues in 2 categories.
    

    test_demo

    The same bug as dart

    gif


    Hi ver ^0.2.1+alpha

    $ dart --version
    Dart SDK version: 2.16.2 (stable) (Tue Mar 22 13:15:13 2022 +0100) on "macos_x64"
    

    Step

    • dart pub add realm_dart
    • dart run realm_dart install

    then run

    bug

    img

    code:

    realm.write(() {
        /*
          @RealmModel()
    class _TestModel {
      @PrimaryKey()
      late int primaryKey = 0;
      bool test1 = true;
      bool test2 = false;
    }
        */
        realm.add(TestModel()); // default model
        realm.add(TestModel(primaryKey: 1));
        realm.add(TestModel(test1: false, test2: true, primaryKey: 2));
        realm.add(TestModel(test1: true, test2: false, primaryKey: 3));
      });
    

    type bool

    添加进去的数据,和最终取出来的相反 The added data is the opposite of what is finally taken out

    code: test1 = false, realm file test1 = true

    test_demo

    O-Community 
    opened by goldhan 8
  • List<Model> is not a realm model type

    List is not a realm model type

    Hello, I'm new to Realm and I have an error when generating g files

    ➜  app-android git:(develop) ✗ flutter pub run realm generate
    [INFO] Generating build script...
    [INFO] Generating build script completed, took 763ms
    
    [INFO] Initializing inputs
    [INFO] Reading cached asset graph...
    [INFO] Reading cached asset graph completed, took 132ms
    
    [INFO] Checking for updates since last build...
    [INFO] Checking for updates since last build completed, took 1.3s
    
    [INFO] Running build...
    [INFO] Running build completed, took 28ms
    
    [INFO] Caching finalized dependency graph...
    [INFO] Caching finalized dependency graph completed, took 58ms
    
    [SEVERE] realm:realm_generator on lib/Models/FavoritesModel/favorites_model.dart (cached):
    
    Not a realm type
    
    in: package:test_app/Models/FavoritesModel/favorites_model.dart:11:14
    ╷
    6   │ @RealmModel()
    7   │ class _FavoritesModel {
        │       ━━━━━━━━━━━━━━━ in realm model for 'FavoritesModel'
    ... │
    11  │   late final List<AudiosArticleModel> data;
        │              ^^^^^^^^^^^^^^^^^^^^^^^^ List<AudiosArticleModel> is not a realm model type
        ╵
    Remove the invalid field or add an @Ignored annotation on 'data'.
    
    [SEVERE] Failed after 110ms
    

    Here is my favorites_model.dart file:

    import 'package:realm/realm.dart';
    import '../AudiosArticleModel/audios_article_model.dart';
    part 'favorites_model.g.dart';
    
    @RealmModel()
    class _FavoritesModel {
    
      late String title;
      late String author;
      late final List<AudiosArticleModel> data;
    }
    

    Do you know what's the problem ? I already generated successfully the AudiosArticle Model with the same command.

    audios_article_model.dart

    import 'package:realm/realm.dart';
    part 'audios_article_model.g.dart';
    
    @RealmModel()
    class _AudiosArticleModel {
      late String link;
      late String title;
      late String author;
      late String hour;
      late String minute;
      late String second;
    }
    

    audios_article_model.g.dart

    // GENERATED CODE - DO NOT MODIFY BY HAND
    
    part of 'audios_article_model.dart';
    
    // **************************************************************************
    // RealmObjectGenerator
    // **************************************************************************
    
    class AudiosArticleModel extends _AudiosArticleModel with RealmObject {
      AudiosArticleModel(
        String link,
        String title,
        String author,
        String hour,
        String minute,
        String second,
      ) {
        this.link = link;
        this.title = title;
        this.author = author;
        this.hour = hour;
        this.minute = minute;
        this.second = second;
      }
    
      AudiosArticleModel._();
    
      @override
      String get link => RealmObject.get<String>(this, 'link') as String;
      @override
      set link(String value) => RealmObject.set(this, 'link', value);
    
      @override
      String get title => RealmObject.get<String>(this, 'title') as String;
      @override
      set title(String value) => RealmObject.set(this, 'title', value);
    
      @override
      String get author => RealmObject.get<String>(this, 'author') as String;
      @override
      set author(String value) => RealmObject.set(this, 'author', value);
    
      @override
      String get hour => RealmObject.get<String>(this, 'hour') as String;
      @override
      set hour(String value) => RealmObject.set(this, 'hour', value);
    
      @override
      String get minute => RealmObject.get<String>(this, 'minute') as String;
      @override
      set minute(String value) => RealmObject.set(this, 'minute', value);
    
      @override
      String get second => RealmObject.get<String>(this, 'second') as String;
      @override
      set second(String value) => RealmObject.set(this, 'second', value);
    
      static SchemaObject get schema => _schema ??= _initSchema();
      static SchemaObject? _schema;
      static SchemaObject _initSchema() {
       RealmObject.registerFactory(AudiosArticleModel._);
       return const SchemaObject(AudiosArticleModel, [
        SchemaProperty('link', RealmPropertyType.string),
        SchemaProperty('title', RealmPropertyType.string),
        SchemaProperty('author', RealmPropertyType.string),
        SchemaProperty('hour', RealmPropertyType.string),
        SchemaProperty('minute', RealmPropertyType.string),
        SchemaProperty('second', RealmPropertyType.string),
         ]);
      }
    }
    
    

    Also I posted this issue on SO.

    O-Community 
    opened by swifthing 8
  • Add a SyncState feature in SyncSession

    Add a SyncState feature in SyncSession

    Description

    Often times, there is a need to determine the state of the local data in comparison to the remote data. That is, only work with the most up to date data from remote where local data has been successfully synced with the remote. I mean, this is a feature that most cloud sync service provide out of the box (e.g. OneDrive, Dropbox).

    SyncSession has the following great features as described in #567:

    • Get the current SessionState (active, inactive)
    • Get the current ConnectionState (disconnected, connected, connecting)
    • Listen to ConnectionState via ConnectStateChanges stream

    What is missing are the following features:

    • Get the current SyncState (synced, syncing, disconnected)
    • Listen to SyncState via a SyncStateChanges stream

    From an implementation point of view, SyncState can be resolved as follow:

    • The session is 'synced' when SessionState is active, the ConnectionState is connected, and waitForUpload and waitForDownload are completed.
    • The session is 'syncing' when SessionState is active, the ConnectionState is connected and while waitForUpload and waitForDownload have not completed.
    • The session is 'disconnected' when ConnectionState is disconnected.

    The SyncStateChanges stream can piggy-back off of the existing streams by implementing a sink on each ConnectStateChanges and on each SyncProgress update.

    How important is this improvement for you?

    Would be a major improvement

    O-Community 
    opened by lhengl 0
  • 🔄 Synced file(s) with realm/ci-actions

    🔄 Synced file(s) with realm/ci-actions

    Synced local file(s) with realm/ci-actions.

    Changed files
    • Synced local LICENSE with remote synced-files/LICENSE
    • Synced local .github/workflows/Issue-Needs-Attention.yml with remote synced-files/.github/workflows/Issue-Needs-Attention.yml
    • Created local .github/workflows/no-response.yml from remote synced-files/.github/workflows/no-response.yml
    • Synced local .github/workflows/auto-assign.yml with remote synced-files/.github/workflows/auto-assign.yml
    • Synced local .github/auto_assign.yml with remote synced-files/.github/auto_assign.yml
    • Synced local .github/workflows/check-changelog.yml with remote synced-files/.github/workflows/check-changelog.yml
    • Created local .github/advanced-issue-labeler.yml from remote synced-files/.github/advanced-issue-labeler.yml
    • Created local .github/workflows/issue-labeler.yml from remote synced-files/.github/workflows/issue-labeler.yml
    • Synced local .github/ISSUE_TEMPLATE/feature.yml with remote synced-files/.github/ISSUE_TEMPLATE/feature.yml

    This PR was created automatically by the repo-file-sync-action workflow run #3868939534

    cla: yes no-changelog 
    opened by realm-ci 1
  • Add ISRG X1 Root certificate (needed for Android 7.0 and earlier)

    Add ISRG X1 Root certificate (needed for Android 7.0 and earlier)

    The certificates from https://realm.mongodb.com/ are signed by lets-encrypt, which is dependent on the root certificate ISRG Root X1.

    The list of platforms that support the ISRG Root X1 root certificate can be seen here: https://letsencrypt.org/docs/certificate-compatibility/. In particular you need Android >= 7.1.1

    There is a dirty work-around to make these certificates work with old Android apps (>= 2.3.6), that you can read about here: https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/. Unfortunately I don't think this will work with BoringSSL that is used by Dart / Flutter.

    Fixes: #1087

    cla: yes 
    opened by nielsenko 6
  • [Bug]: non-zero custom status code considered fatal

    [Bug]: non-zero custom status code considered fatal

    What happened?

    Our sentry reports a few fatal errors, when signing in:

    AppException: non-zero custom status code considered fatal, link to server logs: null

    We do not get this on our devices, it is visible to us in sentry. We could reproduce it on a GT-I9505 with Android Version 5.0.1. So maybe it is related to old versions of Android?

    The error message does not help much to find the issue.

    Repro steps

    Sign in with Firebase (Phone Auth) Sign in Realm (JWT) Error

    Version

    Channel stable, 3.3.10, on Microsoft Windows [Version 10.0.19045.2364], locale de-AT

    What Realm SDK flavor are you using?

    MongoDB Atlas (i.e. Sync, auth, functions)

    What type of application is this?

    Flutter Application

    Client OS and version

    Android 5.0.1

    Code snippets

    debugPrint('Verifying phone code'); 
    try {
          // Sign the user in (or link) with the credential
          firebase.UserCredential firebaseCredential =
              await firebase.FirebaseAuth.instance.signInWithCredential(credential);
           debugPrint('Signed in with Firebase');
    
          String jwt = await firebaseCredential.user!.getIdToken();
          user = await app.logIn(Credentials.jwt(jwt));
          _verificationId = null;
          notifyListeners();
          debugPrint('Signed in with Realm');
        } catch (error, stackTrace) {
          Sentry.captureException(error, stackTrace: stackTrace);
        }
    

    Stacktrace of the exception/crash you're getting

    AppException: AppException: non-zero custom status code considered fatal, link to server logs: null
    

    Relevant log output

    Verifying phone code
    Signed in with Firebase
    AppException: AppException: non-zero custom status code considered fatal, link to server logs: null
    
    O-Community 
    opened by Navil 11
  •  Extend realm/realm_dart cli to generate a starter app

    Extend realm/realm_dart cli to generate a starter app

    opened by sync-by-unito[bot] 0
  • [Bug]: Query method with IN predicate returns empty results

    [Bug]: Query method with IN predicate returns empty results

    What happened?

    I try build query with IN predicate but return empty results.

    Repro steps

    Build a List String with the values to be filtered. Pass a List with join(",") to get concatenated values as a single string. Build a predicate with IN using query method and pass as parameter list

    Version

    realm 0.8.0+rc -> flutter 3.3.10

    What Realm SDK flavor are you using?

    Local Database only

    What type of application is this?

    Flutter Application

    Client OS and version

    Windows 11

    Code snippets

    Model: image Implementation: image

    Alternative (that works): image

    Stacktrace of the exception/crash you're getting

    No response

    Relevant log output

    No response

    O-Community 
    opened by M4UTR0NI1C 4
Releases(0.8.0+rc)
  • 0.8.0+rc(Nov 14, 2022)

    0.8.0+rc (2022-11-14)

    This project is in Release Candidate stage.

    Breaking Changes

    • FunctionsClient.call no longer accepts a null for the optional functionsArgs parameter, but it is still optional. (#1025)

    Fixed

    • Allow backlinks between files. (#1015)
    • Fix issue with accessing properties after traversing a backlink. (#1018)
    • Bootstraps will not be applied in a single write transaction - they will be applied 1MB of changesets at a time, or as configured by the SDK (Core upgrade).
    • Fix database corruption and encryption issues on apple platforms. (Core upgrade)

    Compatibility

    • Realm Studio: 12.0.0 or later.

    Internal

    • Using Core 12.12.0. (#1025)
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(18.66 MB)
    ios.tar.gz(21.28 MB)
    linux.tar.gz(4.86 MB)
    macos.tar.gz(4.97 MB)
    windows.tar.gz(3.21 MB)
  • 0.7.0+rc(Nov 4, 2022)

    0.7.0+rc (2022-11-04)

    This project is in Release Candidate stage.

    Breaking Changes

    • SyncClientResetErrorHandler is renamed to ClientResetHandler. SyncClientResetError is renamed to ClientResetError. ManualSyncClientResetHandler is renamed to ManualRecoveryHandler.
    • Default resync mode for FlexibleSyncConfiguration is changed from manual to recoverOrDiscard. In this mode Realm attempts to recover unsynced local changes and if that fails, then the changes are discarded.(#925)
    • Added path parameter to Configuration.disconnectedSync. This path is required to open the correct synced realm file. (#1007)

    Enhancements

    • Added MutableSubscriptionSet.removeByType for removing subscriptions by their realm object type. (#317)
    • Added User.functions. This is the entry point for calling Atlas App functions. Functions allow you to define and execute server-side logic for your application. Atlas App functions are created on the server, written in modern JavaScript (ES6+) and executed in a serverless manner. When you call a function, you can dynamically access components of the current application as well as information about the request to execute the function and the logged in user that sent the request. (#973)
    • Support results of primitives, ie. RealmResult<int>. (#162)
    • Support notifications on all managed realm lists, including list of primitives, ie. RealmList<int>.changes is supported. (#893)
    • Support named backlinks on realm models. You can now add and annotate a realm object iterator field with @Backlink(#fieldName). (#996)
    • Added Realm file compaction support. (#1005)
    • Allow @Indexed attribute on all indexable type, and ensure appropriate indexes are created in the realm. (#797)
    • Add parent getter on embedded objects. (#979)
    • Support Client Resets. Atlas App Services automatically detects the need for client resets and the realm client automatically performs it according to the configured callbacks for the type of client reset handlers set on FlexibleSyncConfiguration. A parameter clientResetHandler is added to Configuration.flexibleSync. Supported client reset handlers are ManualRecoveryHandler, DiscardUnsyncedChangesHandler, RecoverUnsyncedChangesHandler and RecoverOrDiscardUnsyncedChangesHandler. RecoverOrDiscardUnsyncedChangesHandler is the default strategy. (#925) An example usage of the default clientResetHandler is as follows:
          final config = Configuration.flexibleSync(user, [Task.schema],
            clientResetHandler: RecoverOrDiscardUnsyncedChangesHandler(
              // The following callbacks are optional.
              onBeforeReset: (beforeResetRealm) {
                // Executed right before a client reset is about to happen.
                // If an exception is thrown here the recovery and discard callbacks are not called.
              },
              onAfterRecovery: (beforeResetRealm, afterResetRealm) {
                // Executed right after an automatic recovery from a client reset has completed.
              },
              onAfterDiscard: (beforeResetRealm, afterResetRealm) {
                // Executed after an automatic recovery from a client reset has failed but the Discard has completed.
              },
              onManualResetFallback: (clientResetError) {
                // Handle the reset manually in case some of the callbacks above throws an exception
              },
            )
        );
      
    
    ### Fixed
    * Fixed a wrong mapping for `AuthProviderType` returned by `User.provider` for google, facebook and apple credentials.
    * Opening an unencrypted file with an encryption key would sometimes report a misleading error message that indicated that the problem was something other than a decryption failure (Core upgrade)
    * Fix a rare deadlock which could occur when closing a synchronized Realm immediately after committing a write transaction when the sync worker thread has also just finished processing a changeset from the server. (Core upgrade)
    * Fixed an issue with `Configuration.disconnectedSync` where changing the schema could result in migration exception. ([#999](https://github.com/realm/realm-dart/pull/999))
    * Added a better library load failed message. ([#1006](https://github.com/realm/realm-dart/pull/1006))
    
    ### Compatibility
    * Realm Studio: 12.0.0 or later.
    
    ### Internal
    * Using Core 12.11.0. ([#988](https://github.com/realm/realm-dart/pull/988))
    
    
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(18.67 MB)
    ios.tar.gz(21.30 MB)
    linux.tar.gz(4.86 MB)
    macos.tar.gz(4.98 MB)
    windows.tar.gz(3.21 MB)
  • 0.6.0+beta(Oct 21, 2022)

    0.6.0+beta (2022-10-21)

    This project is in the Beta stage. The API should be quite stable, but occasional breaking changes may be made.

    Enhancements

    • Added support for asynchronous transactions. (Issue #802)
      • Added Transaction which is a class that exposes an API for committing and rolling back an active transaction.
      • Added realm.beginWriteAsync which returns a Future<Transaction> that resolves when the write lock has been obtained.
      • Added realm.writeAsync which opens an asynchronous transaction, invokes the provided callback, then commits the transaction asynchronously.
    • Support Realm.open API to asynchronously open a local or synced Realm. When opening a synchronized Realm it will download all the content available at the time the operation began and then return a usable Realm. (#731)
    • Add support for embedded objects. Embedded objects are objects which are owned by a single parent object, and are deleted when that parent object is deleted or their parent no longer references them. Embedded objects are declared by passing ObjectType.embedded to the @RealmModel annotation. Reassigning an embedded object is not allowed and neither is linking to it from multiple parents. Querying for embedded objects directly is also disallowed as they should be viewed as complex structures belonging to their parents as opposed to standalone objects. (Issue #662)
    @RealmModel()
    class _Person {
      late String name;
    
      _Address? address;
    }
    
    // The generated `Address` class will be an embedded object.
    @RealmModel(ObjectType.embedded)
    class _Address {
      late String street;
      late String city;
    }
    

    Fixed

    • Added more validations when using User.apiKeys to return more meaningful errors when the user cannot perform API key actions - e.g. when the user has been logged in with API key credentials or when the user has been logged out. (Issue #950)
    • Fixed dart run realm_dart generate and flutter pub run realm generate commands to exit with the correct error code on failure.
    • Added more descriptive error messages when passing objects managed by another Realm as arguments to Realm.add/delete/deleteMany. (PR #942)
    • Fixed a bug where list.remove would not correctly remove the value if the value is the first element in the list. (PR #975)

    Compatibility

    • Realm Studio: 12.0.0 or later.

    Internal

    • Using Core 12.9.0
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(18.66 MB)
    ios.tar.gz(21.28 MB)
    linux.tar.gz(4.86 MB)
    macos.tar.gz(4.97 MB)
    windows.tar.gz(3.21 MB)
  • 0.5.0+beta(Oct 10, 2022)

    0.5.0+beta (2022-10-10)

    This project is in the Beta stage. The API should be quite stable, but occasional breaking changes may be made.

    Breaking Changes

    • Fixed an issue that would cause passwords sent to the server (e.g. Credentials.EmailPassword or EmailPasswordAuthProvider.registerUser) to contain an extra empty byte at the end. (PR #918). Notice: Any existing email users might need to be recreated because of this breaking change.

    Enhancements

    • Added support for "frozen objects" - these are objects, queries, lists, or Realms that have been "frozen" at a specific version. All frozen objects can be accessed and queried as normal, but attempting to mutate them or add change listeners will throw an exception. Realm, RealmObject, RealmList, and RealmResults now have a method freeze() which returns an immutable version of the object, as well as an isFrozen property which can be used to check whether an object is frozen. (#56)
    • You can now set a realm property of type T to any object o where o is T. Previously it was required that o.runtimeType == T. (#904)
    • Performance of indexOf on realm lists has been improved. It now uses realm-core instead of the generic version from ListMixin. (#911)
    • Performance of remove on realm list has been improved. It now uses indexOf and removeAt. (#915)
    • Added support for migrations for local Realms. You can now construct a configuration with a migration callback that will be invoked if the schema version of the file on disk is lower than the schema version supplied by the callback. (#70) Example:
      final config = Configuration.local([Person.schema], schemaVersion: 4, migrationCallback: (migration, oldSchemaVersion) {
        if (oldSchemaVersion == 1) {
          // Between v1 and v2 we removed the Bar type
          migration.deleteType('Bar');
        }
      
        if (oldSchemaVersion == 2) {
          // Between v2 and v3 we fixed a typo in the 'Person.name' property.
          migration.renameProperty('Person', 'nmae', 'name');
        }
      
        if (oldSchemaVersion == 3) {
          final oldPeople = migration.oldRealm.dynamic.all('Person');
          for (final oldPerson in oldPeople) {
            final newPerson = migration.findInNewRealm<Person>(oldPerson);
            if (newPerson == null) {
              // That person must have been deleted, so nothing to do.
              continue;
            }
      
            // Between v3 and v4 we're obfuscating the users' exact age by storing age group instead.
            newPerson.ageGroup = calculateAgeGroup(oldPerson.dynamic.get<int>('age'));
          }
        }
      });
      
    • Added support for realm list of nullable primitive types, ie. RealmList<int?>. (#163)
    • Allow null arguments on query. (#871)
    • Added support for API key authentication. (Issue #432)
      • Expose User.apiKeys client - this client can be used to create, fetch, and delete API keys.
      • Expose Credentials.apiKey that enable authentication with API keys.
    • Exposed User.accessToken and User.refreshToken - these tokens can be used to authenticate against the server when calling HTTP API outside of the Dart/Flutter SDK. For example, if you want to use the GraphQL. (PR #919)
    • Added support for encryptionKey to Configuration.local, Configuration.flexibleSync and Configuration.disconnectedSync so realm files can be encrypted and existing encrypted files from other Realm sources opened (assuming you have the key)(#920)

    Fixed

    • Previously removeAt did not truncate length. (#883)
    • List.length= now throws, if you try to increase length. This previously succeeded silently. (#894).
    • Queries on lists were broken. (#909) Example:
      expect(realm.all<Person>(), [alice, bob, carol, dan]); // assume this pass, then ...
      expect(team.players.query('TRUEPREDICATE'), [alice, bob]); // <-- ... this fails and return the same as realm.all<Person>()
      
    • Queries on results didn't filter the existing results. (#908). Example
      expect(realm.query<Person>('FALSEPREDICATE').query('TRUEPREDICATE'), isEmpty); //<-- Fails if a Persion object exists
      
    • Fixed copying of native structs for session errors and http requests. (#924)
    • Fixed a crash when closing the SyncSession on App instance teardown. (#5752)
    • Fixed sporadic generator failure. (#879)
    • Exceptions thrown by user code inside the Configuration.initialDataCallback are now properly surfaced back to the Realm() constructor. (#698)

    Compatibility

    • Realm Studio: 12.0.0 or later.

    Internal

    • Uses Realm Core v12.9.0
    • Added tracking of child handles for objects/results/lists obtained from an unowned Realm. This ensures that all children are invalidated as soon as the parent Realm gets released at the end of the callback. (Issue #527)
    • Added an action to enforce that the changelog is updated before a PR is merged (Issue #939)
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(18.66 MB)
    ios.tar.gz(67.23 MB)
    linux.tar.gz(4.86 MB)
    macos.tar.gz(5.05 MB)
    windows.tar.gz(3.21 MB)
  • 0.4.0+beta(Aug 19, 2022)

    0.4.0+beta (2022-08-19)

    This project is in the Beta stage. The API should be quite stable, but occasional breaking changes may be made.

    Breaking Changes

    • Changed the name of Configuration.schema to Configuration.schemaObjects and changed its type to Iterable<SchemaObject>. You can now access the Realm's schema via the new Realm.schema property. #495)

    Enhancements

    • Expose an API for string-based access to the objects in the Realm. Those are primarily intended to be used during migrations, but are available at all times for advanced use cases. #495)
    • Added Realm.schema property exposing the Realm's schema as passed through the Configuration or read from disk. #495)

    Fixed

    • Lifted a limitation that only allowed non-nullable primary keys. (#458)
    • Fix boolean values get/set after ffigen update. (#854)

    Compatibility

    • Realm Studio: 12.0.0 or later.

    Internal

    • Using Core x.y.z.
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(18.47 MB)
    ios.tar.gz(65.60 MB)
    linux.tar.gz(4.82 MB)
    macos.tar.gz(4.99 MB)
    windows.tar.gz(3.16 MB)
  • 0.3.2+beta(Aug 17, 2022)

    0.3.2+beta (2022-08-16)

    This project is in the Beta stage. The API should be quite stable, but occasional breaking changes may be made.

    Enhancements

    • Added DisconnectedSyncConfiguration for opening a synchronized realm in a disconnected state. This configuration allows a synchronized realm to be opened by a secondary process, while a primary process handles synchronization. (#621)

    • Support better default paths on Flutter. (#665)

    • Support Configuration.defaultRealmName for setting the default realm name. (#665)

    • Support Configuration.defaultRealmPath for setting a custom default path for realms. (#665)

    • Support Configuration.defaultStoragePath for getting the platform specific storage paths. (#665)

    • Support App.deleteUser for deleting user accounts. (#679)

    • Support Apple, Facebook and Google authentication. (#740)

    • Allow multiple anonymous sessions. When using anonymous authentication you can now easily log in with a different anonymous user than last time. (#750).

    • Support Credentials.jwt for login user with JWT issued by custom provider . (#715)

    • Support Credentials.function for login user with Custom Function Authentication Provider. (#742)

    • Added update flag on Realm.add and Realm.addAll to support upserts. (#668)

    • Allow multiple anonymous sessions. (PR #5693).

    • Introducing query parser support for constant list expressions such as fruit IN {'apple', 'orange'}. This also includes general query support for list vs list matching such as NONE fruits IN {'apple', 'orange'}. (Issue #4266)

    • SubscriptionSet::refresh() does less work if no commits have been made since the last call to refresh(). (PR #5695)

    • Reduce use of memory mappings and virtual address space (PR #5645). Also fixes some errors (see below)

    Fixed

    • Use Dart 2.17 Finalizable to ensure lexically scoped lifetime of finalizable resources (Realm, App, etc.). (#754)
    • Fix crash after hot-restart. (#711 and PR #5570)
    • Processing a pending bootstrap before the sync client connects will properly surface errors to the user's error handler (#5707, since Realm Core v12.0.0)
    • Using the Query Parser, it was not allowed to query on a property named desc. (#5723)
    • Improved performance of sync clients during integration of changesets with many small strings (totalling > 1024 bytes per changeset) on iOS 14, and devices which have restrictive or fragmented memory. (#5614)
    • Fixed a segfault in sync compiled by MSVC 2022. (#5557, since Realm Core 12.1.0)
    • Fix a data race when opening a flexible sync Realm (since Realm Core v12.1.0).
    • Fixed an issue on Windows that would cause high CPU usage by the sync client when there are no active sync sessions. (Issue #5591, since the introduction of Sync support for Windows)
    • Fix a data race when committing a transaction while multiple threads are waiting for the write lock on platforms using emulated interprocess condition variables (most platforms other than non-Android Linux).
    • Fix some cases of running out of virtual address space (seen/reported as mmap failures) (PR #5645)

    Internal

    • Added a command to realm_dart for deleting Atlas App Services applications. Usage: dart run realm_dart delete-apps. By default it will delete apps from http://localhost:9090 which is the endpoint of the local docker image. If --atlas-cluster is provided, it will authenticate, delete the application from the provided cluster. (PR #663)
    • Uses Realm Core v12.5.1
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(18.47 MB)
    ios.tar.gz(65.60 MB)
    linux.tar.gz(4.82 MB)
    macos.tar.gz(4.99 MB)
    windows.tar.gz(3.16 MB)
  • 0.3.1+beta(Jun 7, 2022)

    0.3.1+beta (2022-06-07)

    This project is in the Beta stage. The API should be quite stable, but occasional breaking changes may be made.

    Fixed

    • Fixed the Url command to correctly encode the SDK version. (#650)

    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 from Configuration. Use Configuration.inMemory factory instead.
    • Due to the introduction of different types of configurations the Configuration constructor has been removed. Use the Configuration.local factory instead. (#496)

    Enhancements

    • Added a property Configuration.disableFormatUpgrade. When set to true, 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 the realm.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)
    Source code(tar.gz)
    Source code(zip)
  • 0.3.0+beta(Jun 2, 2022)

    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 from Configuration. Use Configuration.inMemory factory instead.
    • Due to the introduction of different types of configurations the Configuration constructor has been removed. Use the Configuration.local factory instead. (#496)

    Enhancements

    • Added a property Configuration.disableFormatUpgrade. When set to true, 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 the realm.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 to http://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 the BAAS_URL environment variable is not set, no apps will be imported and sync tests will not run. (PR #309) Uses Realm Core 12.1.0.

    Compatibility

    • Dart ^2.17 on Windows, MacOS and Linux
    • Flutter ^3.0 on Android, iOS, Linux, MacOS and Windows
    Source code(tar.gz)
    Source code(zip)
  • 0.3.0-beta(Jun 2, 2022)

    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 from Configuration. Use Configuration.inMemory factory instead.
    • Due to the introduction of different types of configurations the Configuration constructor has been removed. Use the Configuration.local factory instead. (#496)

    Enhancements

    • Added a property Configuration.disableFormatUpgrade. When set to true, 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 the realm.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 to http://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 the BAAS_URL environment variable is not set, no apps will be imported and sync tests will not run. (PR #309)
    • Using Core 12.1.0.

    Compatibility

    • Dart ^2.17 on Windows, MacOS and Linux
    • Flutter ^3.0 on Android, iOS, Linux, MacOS and Windows
    Source code(tar.gz)
    Source code(zip)
  • 0.2.1+alpha(Mar 20, 2022)

    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 a changes method returning a Stream<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 a changes method returning a Stream<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 now has a query method.

      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)
    • Bump CMake requirement to 3.19. Fixes build failure on Flutter Windows when older version of CMake is used. (#266)

    Compatibility

    • Dart ^2.15 on Windows, MacOS and Linux
    • Flutter ^2.10 on Android, iOS, Linux, MacOS and Windows
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(8.71 MB)
    ios.tar.gz(50.34 MB)
    linux.tar.gz(2.86 MB)
    macos.tar.gz(1.49 MB)
    windows.tar.gz(1.16 MB)
  • 0.2.0+alpha(Jan 31, 2022)

    Note: 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

    • Flutter ^2.8
    • Flutter Mobile on Android and iOS
    • Flutter Desktop on Windows and MacOS
    • Dart ^2.15 on Windows, MacOS and Linux
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(9.72 MB)
    ios.tar.gz(50.44 MB)
    linux.tar.gz(2.84 MB)
    macos.tar.gz(1.54 MB)
    windows.tar.gz(1.15 MB)
  • 0.2.0-alpha.2(Jan 29, 2022)

    Notes: This release is a prerelease version. All API's might change without warning and no guarantees are given about stability.

    Enhancements

    • Completely rewritten from the ground up with sound null safety and using Dart FFI

    Internal

    • Fix running realm package commands on Flutter macOS.

    Compatibility

    • Flutter ^2.8
    • Flutter Mobile on Android and iOS
    • Flutter Desktop on Windows and MacOS
    • Dart ^2.15 on Windows, MacOS and Linux
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(9.72 MB)
    ios.tar.gz(50.44 MB)
    linux.tar.gz(2.84 MB)
    macos.tar.gz(1.54 MB)
    windows.tar.gz(1.15 MB)
  • 0.2.0-alpha.1(Jan 29, 2022)

    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

    • Running realm generate command on Flutter.
    • Realm close stops internal scheduler.

    Internal

    • Fix linter issues
    • Fix running realm package commands on Flutter.

    Compatibility

    • Flutter ^2.8
    • Flutter Mobile on Android and iOS
    • Flutter Desktop on Windows and MacOS
    • Dart ^2.15 on Windows, MacOS and Linux
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(9.72 MB)
    ios.tar.gz(50.44 MB)
    linux.tar.gz(2.84 MB)
    macos.tar.gz(1.54 MB)
    windows.tar.gz(1.15 MB)
  • 0.2.0-alpha(Jan 27, 2022)

    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

    • Flutter ^2.8
    • Flutter Mobile on Android and iOS
    • Flutter Desktop on Windows and MacOS
    • Dart ^2.15 on Windows, MacOS and Linux
    Source code(tar.gz)
    Source code(zip)
    android.tar.gz(9.72 MB)
    ios.tar.gz(50.44 MB)
    linux.tar.gz(2.84 MB)
    macos.tar.gz(1.54 MB)
    windows.tar.gz(1.15 MB)
Owner
Realm
Realm is a mobile database: a replacement for SQLite & ORMs. SDKs for Swift, Objective-C, Java, Kotlin, C#, and JavaScript.
Realm
simple note application using Flutter ,Dart and SQLite database

note_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

nirmalnyure 3 Feb 15, 2022
Note Taking App made with Flutter with Sqlite as database..

Note Taking App made in Flutter with Sqlite database This is a note taking app made with flutter. Concepts used: Sqlite database to store custom Note

Bibek Timsina 351 Dec 24, 2022
Inspired by PocketBase provide client side SQLite database, schema generator and admin UI

Firebase SQLite Taking Cloud Firestore ODM to the next level. Admin UI The Admin UI is a web interface for managing your database in firestore and is

Rody Davis 12 Dec 11, 2022
Aplicativo desenvolvido em sala de aula com auxilio do Profº Kleber Andrade, utilizando Flutter e Sqlite.

App Lista de Tarefas Aplicativo desenvolvido apartir de um exercicio proposto pelo professor kleber Andrade. Objetivo era fazer uma lista de tarefas c

Otavio Freire 0 Dec 27, 2021
A note keeper created using Flutter and sqlite

note_keeper This is a note keeper created using flutter and sqlite. Getting Started This project is a starting point for a Flutter application. A few

Amine Elmouradi 14 Feb 13, 2022
A shopper Flutter app that use BloC pattern and CRUD operations with different ways(memory/sqlite/http)

The project is maintained by a non-profit organisation, along with an amazing collections of Flutter samples. We're trying to make continuous commits

Flutter Samples 80 Nov 10, 2022
Time do - A Flutter Todo Application Using GetX And Sqlite

time_do A TODO Flutter project. Getting Started Flutter application -Design Patt

Ahmed Khaled 12 Oct 11, 2022
The typesafe, reactive, and lightweight SQLite abstraction for your Flutter applications

See the project's website for the full documentation. Floor provides a neat SQLite abstraction for your Flutter applications inspired by the Room pers

Vitus 786 Dec 28, 2022
sqfEntity ORM for Flutter SQLite (sqflite)

SqfEntity ORM for Flutter/Dart lets you build and execute SQL commands on SQLite database easily and quickly with the help of fluent methods similar to .Net Entity Framework. SqfEntity also generates add/edit forms with validations and special controls (DropDown List, DateTime pickers, Checkboxes.. etc) for your table.

Hüseyin Tokpınar 347 Jan 2, 2023
Small Flutter app that uses SQLite to persist data.

Crud_With_Flutter_And_Sqlite A new Flutter project. The application allows you to register a user with your name and email, edit and also delete. All

Idelfonso Joás 0 Oct 22, 2022
Pocketbase client cached with drift (sqlite)

PocketBase Drift PocketBase client cached with Drift. Full Text Search Offline first Partial updates CRUD support SQLite storage All platforms support

Rody Davis 9 Dec 30, 2022
Criando meu primeiro aplicativo completo com o Flutter, utlizando sqlite, provider, firebase e implementando google login..

Todo list App Projeto de estudo de flutter em andamento... Conteudos aqui! Sobre o projeto Tecnologias usadas Demonstração Tela de login Tela de cadas

Gustavo Andrade 4 Nov 25, 2022
Raden Saleh 20 Aug 12, 2023
Raden Saleh 53 Jul 27, 2023
This is an application that uses the Flutter framework, SQFLite as a database to record blood pressure, blood sugar, BMI, or create medication reminders in multi mobile platforms You can run this project on iOS, Android

This is an application that uses the Flutter framework, SQFLite as a database to record blood pressure, blood sugar, BMI, or create medication reminders in multi mobile platforms You can run this project on iOS, Android

null 14 Dec 29, 2022
CARP Mobile Sensing for Flutter, including mobile sensing framework, data backend support, and the CARP mobile sensing app.

This repo hold the source code for the CACHET Research Platform (CARP) Mobile Sensing (CAMS) Flutter software. It contains the source code for CACHET

Copenhagen Center for Health Technology (CACHET) 61 Dec 16, 2022
Persist data with Flutter's Hive NoSQL Database locally on Android, iOS & Web.

Flutter Tutorial - Hive NoSQL Database Persist data with Flutter's Hive NoSQL Database locally on Android, iOS & Web. ✌  Preview App Preview Course Pr

Johannes Milke 54 Dec 31, 2022
Lightweight and blazing fast key-value database written in pure Dart.

Fast, Enjoyable & Secure NoSQL Database Hive is a lightweight and blazing fast key-value database written in pure Dart. Inspired by Bitcask. Documenta

HiveDB 3.4k Dec 30, 2022
A Flutter application that demonstrate simple CRUD operations with Firebase cloud database.

Cricket Team A Flutter application that demonstrate simple CRUD operations with Firebase cloud database. Preview Home Empty Swipe Add Player Update Pl

Bhavik Makwana 45 Jun 19, 2021