firebase - Flutter Firebase 数据库启动分页
问题描述
我想知道如何使用flutter和firebase数据库对数据进行分页,这里是我的数据结构:
我正在尝试这样做:
_getItems() async {
setState(() {
_loading = true;
});
Query query = Database.getReferenceFrases(widget.categoria.key)
.orderByKey()
.limitToFirst(_num_items);
DataSnapshot snapshot = await query.once();
Map values = snapshot.value;
values.forEach((key, data) {
Frase frase = Frase.fromJson(key, data);
print(frase.key);
_frases.add(frase);
});
setState(() {
_loading = false;
});
}
这是获取更多数据的方法:
_getMoreItems() async {
print('called');
if (!_hasMore) {
return;
}
if (_loadingMore) {
return;
}
_loadingMore = true;
Query query = Database.getReferenceFrases(widget.categoria.key)
.orderByKey()
.startAt(_lastItem)
.limitToFirst(_num_items);
DataSnapshot snapshot = await query.once();
Map values = snapshot.value;
if (values.length < _num_items) {
_hasMore = false;
}
values.forEach((key, data) {
Frase frase = Frase.fromJson(key, data);
print(frase.key);
_frases.add(frase);
});
setState(() {
_loadingMore = false;
});
}
然后当我调用 getMoreItems 时,我以这种方式从列表中获取最后一个键:
_lastItem = _frases[_frases.length - 1].key;
问题是我每次都得到相同的数据,没有得到下一个数据:
I/flutter ( 5885): -KY9YGChAX-GxRX5ztFz
I/flutter ( 5885): -KY9YKb5f7OORGd0mHA3
I/flutter ( 5885): -KY9YOWsZckgO-_S_gGb
I/flutter ( 5885): -KY9YYNWp4J9wlxr08HN
I/flutter ( 5885): -KY9YSraznJYQrUecv9q
I/flutter ( 5885): -KY9Y92vEybWi6rVKJG3
I/flutter ( 5885): -KY9YCeYbN68RdlpAelG
I/flutter ( 5885): called
I/flutter ( 5885): -KY9YGChAX-GxRX5ztFz
I/flutter ( 5885): -KY9YasX8LJN2ZcMe8CU
I/flutter ( 5885): -KY9YKb5f7OORGd0mHA3
I/flutter ( 5885): -KY9YOWsZckgO-_S_gGb
I/flutter ( 5885): -KY9YYNWp4J9wlxr08HN
I/flutter ( 5885): -KY9YSraznJYQrUecv9q
I/flutter ( 5885): -KY9YCeYbN68RdlpAelG
在调用 getMoreItems 方法之前打印 _lastItem 值我得到这个值:
I/flutter ( 5318): last key = -KY9YCeYbN68RdlpAelG
如果我使用第一个键而不是最后一个键进行硬编码,它会返回不同的值,也许是相反的?
解决方案
推荐阅读
- c++ - 我的公式有问题,我不知道是哪一个以及在哪里
- c++ - 为什么 C++ 中模板的大小是 1 字节?
- objective-c - NSSecureCoding 与核心数据中的符合元素数组
- flutter - Flutter,in_app_purchase:显示订阅到期日期或状态的方式
- php - 了解 PHP 中奇怪的引用/循环行为
- javascript - Zuck.js 不使用 jQuery 获取功能加载故事
- c++ - 如何在 Linux mint 的 Codeblocks 中安装 GNU MP (GMP)
- ios - Turning a 3d swiftui view into an image
- reactjs - react native expo i18n 中缺少翻译
- python - MySQL中的特殊字符导致错误