Cross‑platform Flutter plugin for Uber's H3 library. Internally it delegates to h3_ffi on the VM and to h3_web on the web.
final h3Factory = const H3Factory();
final h3 = h3Factory.load();
// Get hexagons in specified triangle.
final hexagons = h3.polyfill(
resolution: 5,
coordinates: [
GeoCoord(20.4522, 54.7104),
GeoCoord(37.6173, 55.7558),
GeoCoord(39.7015, 47.2357),
],
);
There are also a few methods ported from the JS library Geojson2H3. To access them, instantiate the Geojson2H3
class using const Geojson2H3(h3)
. It uses package:geojson2h3 internally.
Add h3_flutter
package to pubspec.yaml
, import it, and load, no further actions required.
import 'package:h3_flutter/h3_flutter.dart';
final h3 = const H3Factory().load();
final geojson2h3 = Geojson2H3(h3);
Web version is built on top of h3-js
v4.2.1, you have to include it.
Add next line to your index.html
:
<script defer src="https://unpkg.com/[email protected]"></script>
Note: Make sure to place this <script> tag before the main.dart.js import in your index.html.
As Xcode doesn't bundle CMake—unlike Android's NDK—it cannot build H3 source files directly, since H3 uses CMake.
This is why GitHub Actions prebuilds a static library before publishing h3_flutter
to pub.dev, providing a smoother experience for users of this library. However, this prebuild step doesn't happen when you clone the library directly from git.
To build the library locally for iOS/macOS development, you need to build the xcframework
yourself by running:
bindings/scripts/build_darwin_static_lib.sh
As this library is built on top of h3_web
and h3_ffi
, you must update these packages first, please refer to their README
files.
Once they are updated, try to run the example for all the platforms.
Ideally, it would work out of the box.