# parse subscribe itemSubscribe() async { /// 1. 등록, 2. 수정, 3. 삭제 itemDao.subscribe(pantry?.objectId, (LiveQueryEvent type, Item item) { switch (type) { case LiveQueryEvent.create: case LiveQueryEvent.enter: itemList.add(item); break; case LiveQueryEvent.update: var idx = itemList.indexWhere((e) => e.objectId == item.objectId); itemList[idx] = item; break; case LiveQueryEvent.leave: case LiveQueryEvent.delete: itemList = itemList.where((e) => e.objectId != item.objectId).toList(); break; default: } itemClassify(); }); } subscribe( String? pantryId, Function(LiveQueryEvent, Item) callback, ) async { if (_liveQuery == null) _liveQuery = LiveQuery(); unsubscribe(); var query = QueryBuilder(Item()) ..whereEqualTo(Item.keyPantryId, pantryId); _subscription = await _liveQuery?.client.subscribe(query); subscribeOn(_subscription, callback); } subscribeOn(Subscription? subscription, Function callback) { if (subscription == null) return; subscription.on(LiveQueryEvent.create, (value) { print('*** CREATE ***: ${DateTime.now().toString()}\n $value '); callback(LiveQueryEvent.create, value); }); subscription.on(LiveQueryEvent.enter, (value) { print('*** ENTER ***: ${DateTime.now().toString()}\n $value '); callback(LiveQueryEvent.enter, value); }); subscription.on(LiveQueryEvent.update, (value) { print('*** UPDATE ***: ${DateTime.now().toString()}\n $value '); callback(LiveQueryEvent.update, value); }); subscription.on(LiveQueryEvent.leave, (value) { print('*** LEAVE ***: ${DateTime.now().toString()}\n $value '); callback(LiveQueryEvent.leave, value); }); subscription.on(LiveQueryEvent.delete, (value) { print('*** DELETE ***: ${DateTime.now().toString()}\n $value '); callback(LiveQueryEvent.delete, value); }); }