compassx 0.0.2 copy "compassx: ^0.0.2" to clipboard
compassx: ^0.0.2 copied to clipboard

Flutter compass plugin offering true heading, accuracy, and calibration needs.

CompassX #

Logo

Provides reliable compass data and extensive documentation. #

Usage #

StreamBuilder<CompassXEvent>(
  stream: CompassX.events,
  builder: (context, snapshot) {
    if (!snapshot.hasData) return const Text('No data');
    final compass = snapshot.data!;
    return Column(
      mainAxisSize: MainAxisSize.min,
      children: [
        Text('Heading: ${compass.heading}'),
        Text('Accuracy: ${compass.accuracy}'),
        Text('Should calibrate: ${compass.shouldCalibrate}'),
        Transform.rotate(
          angle: compass.heading * math.pi / 180,
          child: Icon(
            Icons.arrow_upward_rounded,
            size: MediaQuery.of(context).size.width - 80,
          ),
        ),
      ],
    );
  },
),
  • heading: The heading relative to true north in degree.
  • accuracy: The accuracy of the sensor data.
  • shouldCalibrate: Whether the sensor should be calibrated or not.

Install #

$ flutter pub add compassx

Check the minimum supported version of your project and update as necessary.

  • iOS: 12
  • Android: 21

Request permission to get true heading in Android. Not required on iOS.

$ flutter pub add permission_handler

Specify the permissions one or both of the following in AndroidManifest.xml. It can be copied from exmaple.

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • ACCESS_COARSE_LOCATION: Used when normal accuracy is required.
  • ACCESS_FINE_LOCATION: Used when the highest quality accuracy is required.

Add code to request premissions.

if (!Platform.isAndroid) return;
await Permission.location.request();

Precautions #

When testing, use the actual device for testing. The emulator may not provide correct sensor data.
If you are going to use this plugin in your product apps, I strongly suggest you read wiki carefully.
More information about compasses in general and calibration in particular can be found on it.
Please be sure to read the documentation before submitting an issue.

CompassX heading currently supports only portrait mode. It is recommended to fix the orientation of the device.

SystemChrome.setPreferredOrientations([
        DeviceOrientation.portraitUp,
        DeviceOrientation.portraitDown,
      ]);
17
likes
160
pub points
81%
popularity
screenshot

Publisher

verified publishermidoridesign.studio

Flutter compass plugin offering true heading, accuracy, and calibration needs.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#compass #sensor #heading #north #calibration

Documentation

Documentation
API reference

Funding

Consider supporting this project:

github.com

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on compassx