Skip to content

festelo/h3_dart

Repository files navigation

Build & Test codecov License: Apache 2.0

H3 Flutter

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.

Setup

Mobile, Desktop

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

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.


For contributors

Running iOS and Mac builds locally (not from pub)

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

Upgrading the package to a new version of H3 library

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.

About

The package provides Dart version of the H3 Core library, a hexagon-based geographic grid system

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •