Flutter Qiblah is a plugin that allows you to display Qiblah direction in you app with support for both Android and iOS.
This plugin depends on both geolocator and flutter_compass.
To use this plugin, add flutter_compass
as a dependency in your pubspec.yaml file. For example:
dependencies:
flutter_qiblah: '^1.0.1'
- Check Device Sensor support (Android)
- Request Location permission
- Check GPS Status (Enabled and permission status)
- Receive Qiblah direction, North direction and Qiblah offset from North
Make sure to add keys with appropriate descriptions to the Info.plist
file.
-
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location when in the background.</string>
-
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs access to location when open and in the background.</string>
Make sure to add permissions to the app/src/main/AndroidManifest.xml
file.
android.permission.INTERNET
android.permission.ACCESS_COARSE_LOCATIO
android.permission.ACCESS_FINE_LOCATION
Check the device sensor support.
For Android, a check will be made to determine whether the device contains Sensor.TYPE_ROTATION_VECTOR
and return true
else false
.
In iOS, will directly return true
.
import 'package:flutter_qiblah/flutter_qiblah.dart';
final bool _deviceSupport = await FlutterQiblah.androidDeviceSensorSupport();
Request GPS Location permission
import 'package:flutter_qiblah/flutter_qiblah.dart';
final GeolocationStatus status = await FlutterQiblah.requestPermission();
Check GPS Location Status. Contains
bool enabled
GeolocationStatus status {GeolocationStatus.granted, GeolocationStatus.denied, GeolocationStatus.disabled, GeolocationStatus.unknown}
import 'package:flutter_qiblah/flutter_qiblah.dart';
final LocationStatus locationStatus = await FlutterQiblah.checkLocationStatus();
Qiblah Stream, returns a stream of QiblahDirection, containing:
double qiblah
: The direction of Qiblah from Northdouble direction
: The direction of Northdouble offset
: The offset of Qiblah from North
import 'package:flutter_qiblah/flutter_qiblah.dart';
final Stream<QiblahDirection> _stream = FlutterQiblah.qiblahStream;
Here is the Example app demo:
Based on the LocationStatus class, you can add a check to see the current status of the GPS and display an error widget if it's disabled or permission is denied. check the 📝 Example Code
For devices with no sensors, a Map can be displayed with the direction from the current/selected location to Mecca. check the 📝 Example Code
Please file any issues, bugs or feature request as an issue on our GitHub page.
If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug or adding a cool new feature), please carefully review our contribution guide and send us your pull request.