谈到 Flutter 中的地理搜索,geoFlutterFire 是解决方案的首选https://pub.dev/packages/geoflutterfire 它的一个问题是它没有单一的查询功能只有流(https://github.com/DarshanGowda0/GeoFlutterFire/issues/27)。
在常规 Streambuilder 中,我是否可以在获得第一个快照后增加半径,并通过设置半径变量、处理流、然后设置状态来增加半径?
我需要在调用 setState 之前处理流吗? 这里说如果我们从树中删除一个小部件,流就会取消 Flutter: Streambuilder - Closing of streams setState 会删除当前小部件并重新加载为新的 Streambuilder 吗?
Sg喜欢
Widget build(BuildContext context) {
int radius = 1;
return StreamBuilder<List<DocumentSnapshot>>(
stream: geoFlutterFireInstance.collection(collectionRef: globals.usersCollection)
.within(
center: GeoFirePoint(
geolocatorPosition.latitude,
geolocatorPosition.longitude,
),
radius: radius,
field: 'position',
strictMode: true,
);,
builder: (
BuildContext context,
AsyncSnapshot<List<DocumentSnapshot>> asyncSnapshot,
) {
if (asyncSnapshot.hasError) {
return Center(child: Text(asyncSnapshot.error.toString()));
} else {
switch (asyncSnapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
return Container(...),
case ConnectionState.active:
if (asyncSnapshot.data.length == 0 && radius <= 10)
{radius++; setState(() {
});}
PS 我在 Flutter 上找到了使用 StreamController 的建议如何刷新 StreamBuilder? 会检查出来