usenavii 0.1.1 copy "usenavii: ^0.1.1" to clipboard
usenavii: ^0.1.1 copied to clipboard

Official Flutter SDK for Navii. Deterministic mascot avatars for Flutter. Same seed in, same face out offline SVG via a Dart port of @usenavii/core.

usenavii #

Flutter binding for Navii — deterministic mascot avatars. Drop a Navii(seed: user.id) and every user has a face, no uploads.

Status: Stable. Engine and widgets match @usenavii/core / @usenavii/react-native; Flutter-specific renderer limitations are listed below.

Install #

dependencies:
  usenavii: ^0.1.1
flutter pub add usenavii

Usage #

import 'package:usenavii/usenavii.dart';

Navii(
  seed: user.id,
  size: 64,
  title: user.name,
)

Renders engine SVG via flutter_svg (SvgPicture.string).

Animation: the animated flag is accepted but not yet supported in the Flutter widget — the first frame is painted statically (same as @usenavii/react-native). CSS keyframes from the engine do not run inside flutter_svg.

SVG filters: flutter_svg does not support the engine's hue-rotation or Gaussian-glow filters. Avatars still render, but affected pack effects can look different from Web.

Platform support #

usenavii supports Android, iOS, Web, macOS, Windows, and Linux on Flutter 3.24 or newer. Rendering is fully offline and does not load remote assets.

Example app #

cd packages/flutter/example
flutter pub get
flutter run -d chrome    # or: flutter run -d macos

Demo covers seed input, size, mood, and NaviiGroup. See example/README.md.

Props (Navii) #

Prop Type Default
seed Stringrequired
size double (logical px) 96
paletteId known palette id (e.g. 'mint') seed-derived
palette Palette — runtime/brand palette none
background 'none' | 'solid' | 'ring' or BackgroundOverride seed-derived
mood 'neutral' | 'happy' | 'serious' | 'sleepy' | 'wink' 'neutral'
packs List<String> — premium pack ids none
styleHint 'masc' | 'femme' | 'neutral' none
title accessible label none
animated bool — accepted, painted statically for now false
alt accessible label (wins over title) none
tileBg opaque disc behind the avatar none

Accessibility uses alt ?? title via [Semantics] (image role), matching RN accessibilityLabel.

NaviiGroup(
  seeds: team.map((u) => u.id).toList(),
  size: 48,
  overlap: 0.3,
  max: 5,
)

Each avatar tile renders as an independent SVG inside a positioned Stack. The +N overflow chip is a Flutter-centered disc (flutter_svg does not honor SVG dominant-baseline). Empty seeds yields a zero-size widget (RN returns null).

Prop Type Default
seeds List<String>required
size double 64
overlap double (clamped 0–0.7) 0.3
max int — overflow → +N tile all seeds
ring / tileBg / counterFill / counterInk colors engine defaults
paletteId / palette / background / mood / packs / styleHint / animated same as Navii
alt accessible label 'Group of N avatars'
groupId clipPath id namespace derived from seeds

Engine API (re-exported) #

sha256Hex(input);
cyrb53(input, [salt]);
createRng(seed);
normalizeEmail(email);
seedFromEmail(email);
seed(SeedFields(...), [SeedOptions(hashEmail: true)]);
selectAvatar(seed, options);
createAvatar(seed, options); // → SVG string
renderAvatar(spec, options);
build(spec, options); // explicit parts, no seed
renderGroup(seeds, options);
renderGroupTiles(seeds, options);
resolvePacks(ids);
random(options);

License #

MIT. See LICENSE.

Publishing #

Flutter versions independently of the npm @usenavii/* lockstep:

cd packages/flutter
dart pub publish --dry-run
dart pub publish

Do not add this package to .github/workflows/release.yml.

1
likes
160
points
0
downloads

Documentation

API reference

Publisher

verified publishernavii.dev

Weekly Downloads

Official Flutter SDK for Navii. Deterministic mascot avatars for Flutter. Same seed in, same face out offline SVG via a Dart port of @usenavii/core.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#avatar #svg #flutter #mascot

License

MIT (license)

Dependencies

flutter, flutter_svg

More

Packages that depend on usenavii