Version 9 intentionally makes the package smaller and more deliberate.
Install
dependencies:
flutter_helper_utils: ^9.0.0
Imports
Most users should import the package once:
import 'package:flutter_helper_utils/flutter_helper_utils.dart';
If you only want the shortcut-heavy surface, use the opt-in sugar import:
import 'package:flutter_helper_utils/sugar.dart';
Notifiers
Notifier utilities were extracted from this package in v9.
If you need the old notifier-style workflows, use better_value_notifier
Highlights
Adaptive UI
runApp(
const PlatformTypeProvider(
child: MyApp(),
),
);
@override
Widget build(BuildContext context) {
final breakpoint = context.watchBreakpoint;
if (breakpoint.isMobile) {
return const MobileLayout();
}
if (breakpoint.isTablet) {
return const TabletLayout();
}
return const DesktopLayout();
}
PlatformEnv
final report = PlatformEnv.report();
final os = PlatformEnv.operatingSystem;
final locale = PlatformEnv.localeName;
final processors = PlatformEnv.numberOfProcessors;
Color Toolkit
final brand = tryToColor('#F97316') ?? Colors.orange;
final accent = tryToColor('rgb(14 165 233)') ?? Colors.blue;
final hex = brand.toHex(includeAlpha: true);
final readableText = brand.contrastColor();
final passesAA = brand.meetsWCAG(
readableText,
level: WCAGLevel.aa,
context: WCAGContext.normalText,
);
Color parsing supports:
- hex strings
rgb(...)andrgba(...)hsl(...)andhsla(...)hwb(...)- CSS named colors
Typed Lists
TypedListView<Product>(
items: products,
itemBuilder: (context, index, product) {
return ProductTile(product: product);
},
spacing: 12,
header: const Text('Products'),
);
CustomScrollView(
slivers: [
const SliverAppBar(title: Text('Products')),
products.buildSliverList(
itemBuilder: (context, index, product) {
return ProductTile(product: product);
},
spacing: 12,
),
],
);
BuildContext and UI Helpers
context.pushPage(const DetailsPage());
context.showSnackBar(const SnackBar(content: Text('Saved')));
context.unfocus();
final theme = context.themeData;
final width = context.widthPx;
final height = context.heightPx;
Opt-in Sugar
final padding = 16.edgeInsetsAll;
final hSpace = 12.heightBox();
final radius = 24.allCircular;
final rawColor = 0xFFF97316.color;
0xFFF97316.color lives in sugar.dart, not in the main color toolkit.
Widgets
Included widgets and widget systems:
PlatformTypeProviderPlatformInfoLayoutBuilderBreakpointLayoutBuilderTypedListViewTypedSliverListGradientWidgetMultiTapDetectorThemeWithoutEffects
Migration
Version 9 includes several breaking changes:
- notifier utilities moved to
better_value_notifier - deprecated
Color.add*aliases removed GradientWidget.gradientAlignmentremoved- explicit navigation naming finalized
- focus helper naming finalized
For the full v9 migration guide, read
migration_guides.md.
Example
The example app in example/ was rebuilt for v9 and acts as the current visual
reference for the package surface.
License
MIT