GeoFlutterFire is a powerful open-source library that lets you store and query keys based on their geographic location, making your applications responsive and efficient. In this article, we’ll walk you through setting up and using GeoFlutterFire in your Flutter project, along with troubleshooting tips to tackle common issues.
Getting Started
To use GeoFlutterFire, the first step is to add it as a dependency in your Flutter project. You can do this by updating your pubspec.yaml file with the following:
dependencies:
geoflutterfire: latest-version
Alternatively, if you prefer to reference the GitHub repository directly, use:
dependencies:
geoflutterfire:
git: git://github.com/DarshanGowda0/GeoFlutterFire.git
After adding the dependency, run flutter packages get to update your packages.
Initializing GeoFlutterFire
Before writing or querying geographic data, you need to initialize Firebase and GeoFlutterFire. Here’s how:
import 'package:geoflutterfire/geoflutterfire.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
final geo = Geoflutterfire();
final _firestore = FirebaseFirestore.instance;
Adding Geographic Data
To store geographic data, create a GeoFirePoint like this:
GeoFirePoint myLocation = geo.point(latitude: 12.960632, longitude: 77.641603);
Then, add the GeoFirePoint to your Firestore document:
_firestore.collection('locations').add({
'name': 'random name',
'position': myLocation.data
});
Querying Geographic Data
To query locations within a certain radius, follow these steps:
- Create a
GeoFirePointfor your center point. - Get the collection reference.
- Use the
withinmethod to get a stream of data.
Here’s an example:
GeoFirePoint center = geo.point(latitude: 12.960632, longitude: 77.641603);
var collectionReference = _firestore.collection('locations');
double radius = 50;
String field = 'position';
Stream> stream = geo.collection(collectionRef: collectionReference)
.within(center: center, radius: radius, field: field);
stream.listen((List documentList) {
// Do something with the documents
});
Understanding the Code with an Analogy
Think of GeoFlutterFire as a treasure map where each key is a treasure location. The map shows you where the treasures (data) are hidden, but you only want to see the treasures that are within a specific area (or radius). When you create a GeoFirePoint, it’s like marking your current location on the map. When you search for treasures, you’re asking the map to show only the ones that are close to where you are standing.
Troubleshooting Tips
While integrating GeoFlutterFire, you might encounter some issues. Here are some common troubleshooting steps:
- Ensure your Firestore database is set up correctly: Make sure you have Firestore enabled in your Firebase project.
- Check permissions: Your Firestore Security Rules should permit read/write access for the authenticated user.
- Composite Index errors: If you receive an error about needing a composite index, follow the error prompt to create it.
For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.
Conclusion
At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

