Flutter中如何使用MutableData?是否已弃用?如何对接Firebase Realtime Database?
Firebase Realtime Database MutableData使用说明
1. 弃用状态说明
MutableData是旧版本firebase_database依赖包(2.0.0版本以前)中事务操作专属的参数类,2.0.0及以上版本已经正式弃用该类,替换为功能一致的TransactionData类,核心操作接口没有变化,仅类名做了调整。
2. 不同版本的使用方案
若你使用低于2.0.0版本的firebase_database
你给出的现有代码可以正常运行,MutableData的作用就是在事务场景下安全修改节点数据,规避多设备并发写入同一个节点时的数据冲突,你当前的计数器原子自增逻辑完全符合使用规范。
若你使用2.0.0及以上版本的firebase_database
仅需将事务回调的参数类型从MutableData修改为TransactionData即可,其余逻辑无需调整,适配后代码如下:
addUser(User user) async { final TransactionResult transactionResult = await _counterRef.runTransaction((TransactionData transactionData) async { transactionData.value = (transactionData.value ?? 0) + 1; return transactionData; }); }
3. 用户信息上传场景补充
如果你的需求仅为上传独立的用户信息,不需要做计数器类的并发修改操作,不需要走事务逻辑,直接调用set方法写入即可,示例如下:
Future<void> addUser(User user) async { // 需提前实现User类的toJson方法,将实体转为键值对格式 await _userRef.child(user.userId).set(user.toJson()); }
仅在多个客户端可能同时修改同一个节点值的场景(比如计数、库存扣减)下,才需要使用事务操作。
内容的提问来源于stack exchange,提问作者Gheh
相关产品推荐
相关产品推荐

