dust_flutter 0.1.3
dust_flutter: ^0.1.3 copied to clipboard
Flutter annotations and runtime APIs for Dust-generated routing, state management, and i18n.
dust_flutter #
Flutter annotations and runtime APIs for code generated by Dust.
Use this package for typed Navigator 2.0 routing, ViewModel state management,
and ARB-based localization. Dart models, JSON, validation, and HTTP clients live
in dust_dart.
Installation #
Most Flutter apps use both Dust packages:
flutter pub add dust_flutter dust_dart
dust_flutter provides Flutter annotations and runtime types. dust_dart
provides the model derives used in the example below.
Install the Dust CLI by following the main installation guide. If the CLI and package versions differ, check the compatibility guide.
Quick Start #
Define immutable state and a ViewModel that extends its generated base:
import 'package:dust_dart/derive.dart';
import 'package:dust_flutter/state.dart';
import 'package:flutter/material.dart';
part 'counter_view_model.g.dart';
@Derive([Eq(), CopyWith()])
class CounterState with _$CounterState {
const CounterState({this.count = 0});
final int count;
}
@ViewModel(state: CounterState)
class CounterViewModel extends $CounterViewModel {
CounterViewModel(super.args);
void increment() => emit(state.copyWith(count: state.count + 1));
}
Generate and verify the output:
dust build
dust check
Provide the generated scope and use typed context helpers:
CounterViewModelScope(
args: (_) => const ViewModelArgs(),
create: (_, args) => CounterViewModel(args),
child: Builder(
builder: (context) {
final count = context.watchCounterViewModel().value.count;
return TextButton(
onPressed: context.readCounterViewModel().increment,
child: Text('Count: $count'),
);
},
),
)
Features #
| Feature | Status | Provides |
|---|---|---|
| Routing | Beta | Typed route data, deep links, guards, redirects, shells, and transitions on Navigator 2.0. |
| State management | Beta | Typed ViewModel bases, scopes, selectors, effects, and async state. |
| i18n | Beta | ARB loading, locale fallback, generated app setup, and translated widgets. |
Beta APIs may still receive refinements while these features are hardened.
Libraries #
| Import | Provides |
|---|---|
package:dust_flutter/route.dart |
Routing annotations and runtime types. |
package:dust_flutter/state.dart |
State annotations, runtime types, and scope composition. |
package:dust_flutter/i18n.dart |
Localization controller, asset loader, scope, and widgets. |
package:dust_flutter/dust_flutter.dart |
Convenience export for every Flutter API. |
Documentation #
Report problems through the Dust issue tracker. Contributions follow the repository's contributor guide.
Licensed under the MIT License.