realm/realm-dart được TopGit xếp vào nhóm dự án di động, với 794 sao trên GitHub, viết chủ yếu bằng Dart. Realm is a mobile database: a replacement for SQLite & ORMs.
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
[!WARNING]
We announced the deprecation of Atlas Device Sync + Realm SDKs in September 2024. For more information please see:
SDK Deprecation
Device Sync Deprecation
For a version of realm-dart without sync features, install version 20 or see the community branch.
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™.
Features
Mobile-first: Realm is the first database built from the ground up to run directly inside phones, tablets, and wearables.
Simple: Realm’s object-oriented data model is simple to learn, doesn’t need an ORM, and the API lets you write less code to get apps up & running in minutes.
Modern: Realm supports latest Dart and Flutter versions and is built with sound null-safety.
Fast: Realm is faster than even raw SQLite on common operations while maintaining an extremely rich feature set.
MongoDB Atlas Device Sync: Makes it simple to keep data in sync across users, devices, and your backend in real-time. Get started for free with a template application and create the cloud backend.
Getting Started
Import Realm in a dart file app.dart
import 'package:realm/realm.dart'; // import realm package
part 'app.realm.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.
dart run realm generate
Open a Realm and add some objects.
var config = Configuration.local([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'");
For complete samples check the Realm Flutter and Dart Samples.
Documentation
For API documentation go to
Realm Flutter API Docs
Realm Dart API Docs
Use realm package for Flutter and realm_dart package for Dart applications.
For complete documentation of the SDKs, go to the Realm SDK documentation.
If you are using the Realm SDK for the first time, refer to the Quick Start documentation.
To learn more about using Realm with Atlas App Services and Device Sync, refer to the following Realm SDK documentation:
App Services Overview
Device Sync Overview
Realm Flutter SDK
Realm Flutter package is published to realm.
Environment setup for Realm Flutter
Realm Flutter supports the platforms iOS, Android, Windows, MacOS and Linux.
Flutter 3.10.2 or newer.
For Flutter Desktop environment setup, see Desktop support for Flutter.
Cocoapods v1.11 or newer.
CMake 3.21 or newer.
Usage
The full contents of catalog.dart is listed after the usage
Add realm package to a Flutter application.
flutter pub add realm
For running Flutter widget and unit tests run the following command to install the required native binaries.
dart run realm install
Import Realm in a dart file (ex. catalog.dart).
import 'package:realm/realm.dart';
Declare a part file catalog.realm.dart in the begining of the catalog.dart dart file after all imports.
import 'dart:io';
part 'catalog.realm.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 dart run realm to run realm package commands
dart run realm generate
A new file catalog.realm.dart will be created next to the catalog.dart.
*The generated file should be committed to source control
Use the RealmObject class Item with Realm.
// Create a Configuration object
var config = Configuration.local([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.realm.dart';
@RealmModel()
class _Item {
@PrimaryKey()
late int id;
late String name;
int price = 42;
}
// Create a Configuration object
var config = Configuration.local([Item.schema]);
// Open 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 Standalone SDK
Realm Dart package is published to realm_dart.
Environment setup for Realm Dart
Realm Dart supports the platforms Windows, Mac and Linux.
Dart SDK 3.0.2 or newer.
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.realm.dart will be created next to the catalog.dart.
*The generated file should be committed to source control
The usage of the Realm Dart SDK is the same like the Realm Flutter above.
Sync data with Realm Flutter and Dart using Device Sync
This section is about how to use the Realm with Device Sync and how to connect to Atlas App Services.
I. Set up Atlas App Services
Create an account on cloud.mongodb.com. Follow the instructions: Register a new Atlas Account.
Create a new App following the instructions here: Create an App with Atlas App Services UI.
Read Authentication Providers to see how to configure the appropriate authentication provider type.
Go to the Device Sync menu and Enable Flexible Sync.
Find and Copy the App ID of your new application.
II. Use Device Sync with the Realm
Initialize the App Services App client and authenticate a user.
String appId = "<Atlas App ID>";
final appConfig = AppConfiguration(appId);
final app = App(appConfig);
final user = await app.logIn(Credentials.anonymous());
Open a synced realm.
final config = Configuration.flexibleSync(user, [Task.schema]);
final realm = Realm(config);
Add a sync subscription and write data.
Only data matching the query in the subscription will be synced to the server and only data matching the subscription will be downloaded to the local device realm file.
realm.subscriptions.update((mutableSubscriptions) {
mutableSubscriptions.add(realm.query<Task>(r'status == $0 AND progressMinutes == $1', ["completed", 100]));
});
await realm.subscriptions.waitForSynchronization();
realm.write(() {
realm.add(Task(ObjectId(), "Send an email", "completed", 4));
realm.add(Task(ObjectId(), "Create a meeting", "completed", 100));
realm.add(Task(ObjectId(), "Call the manager", "init", 2));
});
realm.close();
To learn more about how to sync data with Realm using Device Sync, refer to the Quick Start with Sync documentation.
Building the source
See CONTRIBUTING.md for instructions about building the source.
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.
The "Dart" name and logo and the "Flutter" name and logo are trademarks owned by Google.
realm/realm-dart thuộc nhóm Mobile trên TopGit, cùng 8 topic GitHub. Trang Trending và Topics liệt kê các repo cùng số sao và cùng ngôn ngữ để so sánh.
Đọc thêm về realm/realm-dart ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/realm/realm-dart là nguồn chính thức.
realm/realm-dart có bao nhiêu sao?
realm/realm-dart có 794 sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/realm/realm-dart. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
realm/realm-dart có phải mã nguồn mở không?
Có — realm/realm-dart phát hành theo license Apache-2.0, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/realm/realm-dart.
realm/realm-dart còn đang phát triển không?
Commit gần nhất trên realm/realm-dart là 10 tháng trước (theo timestamp GitHub). Repo có 120 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
realm/realm-dart dùng license gì?
realm/realm-dart phát hành theo license Apache-2.0. Nên mở file LICENSE trên GitHub để xác nhận — license metadata đôi khi lệch với thực tế dự án.
realm/realm-dart là gì?
realm/realm-dart (realm/realm-dart) là dự án Dart trên GitHub. Theo mô tả gốc: Realm is a mobile database: a replacement for SQLite & ORMs.
realm/realm-dart viết bằng ngôn ngữ gì?
realm/realm-dart chủ yếu viết bằng Dart. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Đọc đầy đủ README ở tab phía trên.
Vẫn đang phân vân về realm-dart?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về realm-dart.