firebase - 在一种方法中过滤firebase调用,按命名参数过滤不起作用->变量类型错误?
问题描述
我尝试使用带有命名参数的相同方法从 firebase 获取过滤/未过滤的数据。
如果我将变量 polylinesRef 声明为 final 并且我只使用一个 firebase 引用而没有命名参数“onlyOwnPolys”的条件/差异,我会从“polylinesRef”中的 firebase 获得预期的正确结果。
如果我在条件之前将“polylinesRef”声明为 var 并尝试在条件中使用它,我不会得到任何结果。
如何正确声明“polylinesRef”?我的错误是什么?
void _fbListenPolylines({bool onlyOwnPolys}) async {
final currentUserUuid =
await PrefHelper.getLoginResponse().then((r) => r.uuid);
final firebase = (await FirebaseHelper.fbDb);
var polylinesRef;
if (onlyOwnPolys == true) {
polylinesRef = firebase
.reference()
.child('new_polys/$orderUuid')
.orderByChild("userUuid")
.startAt('$currentUserUuid')
.endAt('$currentUserUuid');
} else {
polylinesRef = firebase.reference().child('new_polys/$orderUuid');
}
_messagesSubscription?.cancel();
_messagesSubscription = polylinesRef.onValue
.debounceTime(Duration(seconds: 1))
.listen((Event event) {
final Map<dynamic, dynamic> map = event.snapshot.value;
final orderSegments = map?.entries?.toList();enter code here
解决方案
声明时可以使用条件运算符(? :
)
final polyLineRefs = onlyOwnPolys
? firebase
.reference()
.child('new_polys/$orderUuid')
.orderByChild("userUuid")
.startAt('$currentUserUuid')
.endAt('$currentUserUuid')
: firebase.reference().child('new_polys/$orderUuid');
此外,为了将来参考,您不需要对布尔值进行布尔运算。
✅<code>if (myBoolean)
❌<code>if (myBoolean == true)
推荐阅读
- selenium - 从 Jenkins 运行无头 Selenium 时速度缓慢
- python - 如何批量增加唯一的 IntegerField?
- php - 创建一个需要范围数字、> 符号和 N/A 的表单,如何?
- flutter - Flutter Web,错误:不支持的操作:Platform._operatingSystem at Object.throw_ [as throw]
- string - Lua escape multiline string
- c# - Nservice总线中Async handler的优势
- angular - 我收到此错误:当我尝试从 Linux 使用 ng serve 运行我的应用程序时,找不到模块 '@angular-devkit/build-angular/package.json
- javascript - Javascript异步等待未按预期等待
- python - 如何让 DDE 服务器在 python 3 中工作?
- python - Pandas Dataframe, adding years and calculations for future years from another dataframe