ÙگراÙ
Ø§Û Ø²Ø§Ø± آپ Ú©Ù ÚÛٹا بÛس Ù ÛÚº ÛÙÙÛ ÙاÙÛ ØªØ¨Ø¯ÛÙÛÙÚº ک٠سبسکرائب کرÙÛ Ú©Û Ø§Ø¬Ø§Ø²Øª دÛتا ÛÛÛ Ø¢Ù¾ Ú©Ø³Û Ù Ø®ØµÙص Ø´ÛØ Ù¾ÙØ±Û Ù Ø¬Ù ÙعÛØ Ûا Ú©Ø³Û Ø³Ùا٠٠ÛÚº تبدÛÙÛÙÚº Ú©Û ÙÛÛ "دÛÚ©Ú¾" Ø³Ú©ØªÛ ÛÛÚºÛ
ÙÚ¯Ûبا٠آپ Ú©Ù ÚÛٹا بÛس Ù ÛÚº ÛÙÙÛ ÙاÙÛ ØªØ¨Ø¯ÛÙÛÙÚº پر Ù Ùثر اÙداز Ù ÛÚº رد ع٠٠ظاÛر کرÙÛ Ú©Û Ùاب٠بÙØ§ØªÛ ÛÛÚºÛ Ù Ø«Ø§Ù Ú©Û Ø·Ùر پر جب Ú©ÙØ¦Û Ø±Ø§Ø¨Ø·Û Ø´Ø§Ù Ù Ú©Ûا جاتا ÛÛ ØªÙ Ø¢Ù¾ اپÙا ÛÙØ¢Ø¦Û Ø¯ÙØ¨Ø§Ø±Û Ø¨Ùا Ø³Ú©ØªÛ ÛÛÚºØ Ø¬Ø¨ Ú©ÙØ¦Û Ø¯Ø³ØªØ§ÙÛز اپ ÚÛÙ¹ ÛÙ Ø¬Ø§Ø¦Û ØªÙ ÙÛÙ¹ Ùرک Ú©Û Ø¯Ø±Ø®Ùاست بھÛج Ø³Ú©ØªÛ ÛÛÚºØ ÙغÛرÛÛ
ÙÛ٠دÛÙ Ú©Û Ú©Ø§Ù ÛØ§Ø¨Û Ø³Û Ø§Ùجا٠پاÙÛ Ø§Ùر Ûد٠٠ÛÚº تبدÛÙÛ Ú©Û Ø¨Ø¹Ø¯ دÛÚ©Ú¾ÙÛ ÙاÙÛ Ú©Ù Ù Ø·Ùع Ú©Ûا جاتا ÛÛÛ
##آبجÛÚ©Ù¹ دÛÚ©Ú¾Ùا
اگر آپ ÚاÛØªÛ ÛÛÚº Ú©Û Ú©Ø³Û Ù Ø®ØµÙص ÚÛز Ú©Û Ø¨ÙÙÛØ Ø§Ù¾ ÚÛÙ¹ Ûا ØØ°Ù ÛÙÙÛ Ù¾Ø± آپ Ú©Ù Ù Ø·Ùع Ú©Ûا جائÛØ ØªÙ Ø¢Ù¾ Ú©Ù Ú©Ø³Û ÚÛز ک٠دÛÚ©Ú¾Ùا ÚاÛÛÛ:
Stream<User> userChanged = isar.users.watchObject(5);
userChanged.listen((newUser) {
print('User changed: ${newUser?.name}');
});
final user = User(id: 5)..name = 'David';
await isar.users.put(user);
// prints: User changed: David
final user2 = User(id: 5)..name = 'Mark';
await isar.users.put(user);
// prints: User changed: Mark
await isar.users.delete(5);
// prints: User changed: null
جÛسا Ú©Û Ø¢Ù¾ اÙپر Ú©Û Ù Ø«Ø§Ù Ù ÛÚº دÛÚ©Ú¾ Ø³Ú©ØªÛ ÛÛÚºØ Ø¢Ø¨Ø¬ÛÚ©Ù¹ Ú©Ù Ø§Ø¨Ú¾Û Ù ÙجÙد ÛÙÙÛ Ú©Û Ø¶Ø±Ùرت ÙÛÛÚº ÛÛÛ Ø¯ÛÚ©Ú¾ÙÛ ÙاÙÛ Ú©Ù Ø§Ø³ Ú©Û Ø¨ÙÙÛ Ù¾Ø± Ù Ø·Ùع Ú©Ûا Ø¬Ø§Ø¦Û Ú¯Ø§Û
There is an additional parameter fireImmediately
. If you set it to true
, Isar will immediately add the object's current value to the stream.
سست دÛÚ©Ú¾ رÛا ÛÛÛ
ÛÙسکتا ÛÛ Ú©Û Ø¢Ù¾ Ú©Ù ÙØ¦Û ÙÛ٠ت ÙصÙ٠کرÙÛ Ú©Û Ø¶Ø±Ùرت ÙÛ ÛÙ ÙÛک٠صر٠تبدÛÙÛ Ú©Û Ø¨Ø§Ø±Û Ù ÛÚº Ù Ø·Ùع Ú©Ûا جائÛÛ ÛÛ Ø§Û Ø²Ø§Ø± ک٠آبجÛÚ©Ù¹ ÙاÙÛ Ø³Û Ø¨Úاتا ÛÛ:
Stream<void> userChanged = isar.users.watchObjectLazy(5);
userChanged.listen(() {
print('User 5 changed');
});
final user = User(id: 5)..name = 'David';
await isar.users.put(user);
// prints: User 5 changed
Ú©ÙÛکش٠دÛÚ©Ú¾ رÛÛ ÛÛÚºÛ
Ú©Ø³Û Ø§ÛÚ© Ø´Û Ú©Ù Ø¯ÛÚ©Ú¾ÙÛ Ú©Û Ø¨Ø¬Ø§Ø¦ÛØ Ø¢Ù¾ اÛÚ© Ù¾Ùرا ٠ج٠ÙØ¹Û Ø¯ÛÚ©Ú¾ Ø³Ú©ØªÛ ÛÛÚº اÙر Ú©Ø³Û Ø¨Ú¾Û ÚÛز ک٠شا٠ÙØ Ø§Ù¾ ÚÛÙ¹ Ûا ØØ°Ù Ú©ÛÛ Ø¬Ø§ÙÛ Ù¾Ø± Ù Ø·Ùع کر Ø³Ú©ØªÛ ÛÛÚº:
Stream<void> userChanged = isar.users.watchLazy();
userChanged.listen(() {
print('A User changed');
});
final user = User()..name = 'David';
await isar.users.put(user);
// prints: A User changed
سÙاÙات دÛÚ©Ú¾ رÛÛ ÛÛÚºÛ
Ù¾ÙØ±Û Ø³ÙاÙات ک٠دÛÚ©Ú¾Ùا Ø¨Ú¾Û Ù Ù Ú©Ù ÛÛÛ Ø§Û Ø²Ø§Ø± صر٠آپ Ú©Ù Ù Ø·Ùع کرÙÛ Ú©Û Ù¾ÙØ±Û Ú©Ùشش کرتا ÛÛ Ø¬Ø¨ سÙØ§Ù Ú©Û Ùتائج ØÙÛÙت Ù ÛÚº تبدÛÙ ÛÙÚºÛ Ø¢Ù¾ Ú©Ù Ù Ø·Ùع ÙÛÛÚº Ú©Ûا Ø¬Ø§Ø¦Û Ú¯Ø§ اگر ÙÙکس استÙسار ک٠تبدÛ٠کرÙÛ Ú©Ø§ سبب بÙØªÛ ÛÛÚºÛ Ø§Ú¯Ø± آپ Ú©Ù ÙÙÚ© Ú©Û ØªØ¨Ø¯ÛÙÛÙÚº Ú©Û Ø¨Ø§Ø±Û Ù ÛÚº Ù Ø·Ùع کرÙÛ Ú©Û Ø¶Ø±Ùرت Û٠ت٠کÙÛÚ©Ø´Ù ÙاÚر کا استع٠ا٠کرÛÚºÛ
Query<User> usersWithA = isar.users.filter()
.nameStartsWith('A')
.build();
Stream<List<User>> queryChanged = usersWithA.watch(fireImmediately: true);
queryChanged.listen((users) {
print('Users with A are: $users');
});
// prints: Users with A are: []
await isar.users.put(User()..name = 'Albert');
// prints: Users with A are: [User(name: Albert)]
await isar.users.put(User()..name = 'Monika');
// no print
awaited isar.users.put(User()..name = 'Antonia');
// prints: Users with A are: [User(name: Albert), User(name: Antonia)]
اÙتباÛ
اگر آپ Ø¢ÙسÛÙ¹ اÙر ÙÙ ÛÙ¹ Ûا اÙÚ¯ اÙÚ¯ سÙاÙات Ø§Ø³ØªØ¹Ù Ø§Ù Ú©Ø±ØªÛ ÛÛÚºØ ØªÙ Ø¢Ø¦Ø³Ø± آپ ک٠اس ÙÙت Ø¨Ú¾Û Ù Ø·Ùع Ú©Ø±Û Ú¯Ø§ جب اشÛاء ÙÙٹر Ø³Û Ù Ù Ø§Ø«Ù ÛÙÚº ÙÛک٠استÙسار Ø³Û Ø¨Ø§ÛØ±Ø Ùتائج تبدÛÙ ÛÙØªÛ ÛÛÚºÛ
Just like watchObject()
, you can use watchLazy()
to get notified when the query results change but not fetch the results.
خطرÛ
Ûر تبدÛÙÛ Ú©Û ÙÛÛ Ø§Ø³ØªÙسارات ک٠دÙØ¨Ø§Ø±Û ÚÙاÙا بÛت ÙØ§Ú©Ø§Ø±Û ÛÛÛ Ø§Ø³ Ú©Û Ø¨Ø¬Ø§Ø¦Û Ø§Ú¯Ø± آپ سست Ú©ÙÛÚ©Ø´Ù ÙاÚر کا استع٠ا٠کرÛÚº ت٠بÛتر ÛÙگاÛ