Firebase 按两个字段进行的Flatter、firestore订单

Firebase 按两个字段进行的Flatter、firestore订单,firebase,flutter,google-cloud-firestore,geofirestore,Firebase,Flutter,Google Cloud Firestore,Geofirestore,我正在尝试在我的应用程序中制作两个滑块,当它们是Firestore中的移动用户时,应将其过滤并加载到listview,我遇到以下错误: 未处理的异常:PlatformException(无效的_查询、FIRInvalidArgumentException、无效的查询。您的where筛选器带有不等式(lessThan、lessthanRequal、greaterThan或greaterThanOrEqual)在字段“age”上,因此您还必须使用“age”作为您的第一个queryOrderedBy字

我正在尝试在我的应用程序中制作两个滑块,当它们是Firestore中的移动用户时,应将其过滤并加载到listview,我遇到以下错误:

未处理的异常:PlatformException(无效的_查询、FIRInvalidArgumentException、无效的查询。您的where筛选器带有不等式(lessThan、lessthanRequal、greaterThan或greaterThanOrEqual)在字段“age”上,因此您还必须使用“age”作为您的第一个queryOrderedBy字段,但您的第一个queryOrderedBy当前位于字段“position.geohash”上。)

我正在使用GeoFlatterFire和firestore,这是代码:

  Future<Stream<List<DocumentSnapshot>>> getUsersInRadiusAndAge(double radius,
      double minAge, double maxAge) async {
      Query q = _firestore.collection('users').where('age', isGreaterThanOrEqualTo: minAge, isLessThanOrEqualTo: maxAge);

      Position userLocation = await Geolocator().getCurrentPosition();

      GeoFirePoint center = geo.point(
          latitude: userLocation.latitude, longitude: userLocation.longitude);

      return geo.collection(collectionRef: q)
          .within(center: center, radius: radius, field: 'position');

  }
Future getUsersInRadiusAndAge(双半径、,
双最小值,双最大值)异步{
查询q=_firestore.collection('users')。其中('age',大于或等于0:minAge,小于或等于0:maxAge);
Position userLocation=等待地理定位器()。getCurrentPosition();
地理点中心=地理点(
纬度:userLocation.latitude,经度:userLocation.longitude);
返回地理集合(collectionRef:q)
.内(中心:中心,半径:半径,字段:“位置”);
}
此查询错误:

  Query q = _firestore.collection('users').where('age', isGreaterThanOrEqualTo: minAge, isLessThanOrEqualTo: maxAge);
您应该执行以下操作:

Query q = _firestore.collection('users').where('age', isGreaterThanOrEqualTo: minAge).where('age', isLessThanOrEqualTo: maxAge);

这将返回年龄>=minAge和年龄的文档您确定错误在这一行吗?你有一个名为“position.geohash”的字段吗?是的,我有“position.geohash”和按距离搜索正常工作,但当我试图查询按距离和年龄搜索时,其他任何解决方案都不起作用?