使用 Streambuilder 进行 Flutter 附近搜索,如果没有结果则增加搜索半径?

问题描述 投票:0回答:0

谈到 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? 会检查出来

flutter geolocation location
© www.soinside.com 2019 - 2024. All rights reserved.