Package selection guidance compiled from public package information, community data, and project usage.
A Dart utility package that provides helpful extensions and re-exports core APIs from convert_object, collection, and intl. It enhances developer productivity by offering convenient methods for common operations like type conversion, collection manipulation, and internationalization. The package is lightweight and designed to streamline everyday Dart tasks across multiple platforms. Ideal for projects requiring consistent, reusable utility functions without external dependencies.
Use cases
Simplifying data type conversions
Enhancing collection operations
Streamlining internationalization workflows
Improving code readability with extensions
Reducing boilerplate in utility functions
Supporting cross-platform development
Key features
Re-exports essential Dart libraries
Provides intuitive extensions
Lightweight and minimal overhead
Cross-platform compatibility
Easy integration via pub
Clean, maintainable code practices
Suitable for
Dart developers seeking utility enhancements
Projects using convert_object, collection, or intl
Cross-platform applications
Teams prioritizing code consistency
Developers reducing repetitive utility code
Apps needing quick extension-based helpers
Considerations
Depends on re-exported packages (convert_object, collection, intl)
Not a standalone solution for complex logic
Best used alongside existing Dart tooling
Limited to utility and extension functionality
No runtime performance improvements
Requires familiarity with re-exported APIs
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
A batteries-included utility package for Dart. One import gives you type-safe
conversions, ergonomic extensions, a serious debouncer, stream superpowers,
and the APIs you already know from convert_object, collection, and intl.
This repository ships a package-specific agent plugin for
Claude Code and OpenAI Codex (this is tooling for coding agents, not
a runtime feature of the Dart package). It teaches the agent the exact
dart_helper_utils APIs - utility member names and semantics, the
Debouncer/throttle/stream lifecycles, the v5-to-v6 breaking migration, and
version-aware upgrades.
Start a new agent session after installing so the skills load. Then try
prompts like "debounce this search field with dart_helper_utils and clean it
up on dispose" or "migrate this project from dart_helper_utils 5.x to 6.x",
or invoke a skill explicitly in Claude Code, e.g.
/dart-helper-utils:use-dart-helper-utils.
The plugin is installed from this Git repository (not from the pub.dev
archive), contains markdown skills only - no hooks, no MCP servers, no
telemetry - and its version tracks the package version. Details, the full
capability list, updating, and uninstalling are in
tooling/ai/dart-helper-utils/README.md.
// Hold events until you are ready for them.final paused = sensorStream.asPausable();
// Cap a noisy source at 5 events per second.final safe = eventStream.rateLimit(5, constDuration(seconds: 1));
// Group events into fixed-size or time-based batches.final batched = logStream.bufferCount(100);
final windowed = logStream.window(constDuration(seconds: 1));
// Behaviour-subject semantics: late subscribers see the last value.final replay = priceStream.withLatestValue();
Bounded concurrency and soft timeouts
// Run at most 4 uploads at once, results in completion order.final urls = await files.mapConcurrent(upload, parallelism: 4);
// Soft timeout: the original task keeps running in the background.try {
final report = awaitTimeUtils.runWithTimeout(
task: fetchReport,
timeout: constDuration(seconds: 5),
);
} onTimeoutException {
showSlowNetworkBanner();
}
Deep map utilities for config-heavy apps
final nested = {
'user': {'name': 'Omar', 'roles': ['admin', 'editor']},
};
final flat = nested.flatMap();
// {user.name: Omar, user.roles.0: admin, user.roles.1: editor}print(flat.unflatten()); // round-trips back to nestedfinal payload = {'users': [{'name': 'A'}, {'name': 'B'}]};
print(payload.getPath('users[1].name')); // B
Also in the box
Everyday sugar that you would otherwise write by hand: the full
stringo string toolkit (case conversion,
slugify, truncate, mask, whitespace normalization) re-exported here,
format validators (isValidEmail, isUuid), parseDuration, MIME checks
(isPDF, isImage, isFont), date helpers (isBetween, addBusinessDays,
daysInMonth), Intl formatters (formatAsCurrency, formatAsCompact,
toOrdinal, pluralize), URI builders (rebuild, mergeQueryParameters,
appendPathSegment), and Iterable<num> statistics (mean, median,
percentile, standardDeviation).
Browse the full API: https://pub.dev/documentation/dart_helper_utils/latest/
Migration notes
6.1.0 moved string text transformations into
stringo, which is re-exported here.
Call sites are unchanged; only explicit extension type names differ (see
the CHANGELOG). Depend on stringo directly if you want the
string helpers without the rest of this package.
v6 moved conversion logic into convert_object, which is re-exported here.
Duplicate iterable and map helpers were removed in favor of
package:collection, which is now also re-exported.
Old JSON helpers like safelyEncodedJson are now toJsonString(...) or
encodeWithIndent from convert_object.
Full guide: https://github.com/omar-hanafy/dart_helper_utils/blob/main/migration_guides.md