Skip to content

Commit 3ea8832

Browse files
committed
feat: new pub version
1 parent f7b003f commit 3ea8832

File tree

9 files changed

+50
-21
lines changed

9 files changed

+50
-21
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 0.0.2
2+
3+
- Improves documentation.
4+
- Adds example weather app.
5+
- Fixes assorted errors.
6+
17
## 0.0.1
28

39
- Initial release.

example/lib/main.dart

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ class _HomeScreenState extends State<HomeScreen> {
105105
TextButton(
106106
onPressed: () {
107107
final latitude = double.tryParse(_latitudeController.text);
108-
final longitude = double.tryParse(_longitudeController.text);
108+
final longitude =
109+
double.tryParse(_longitudeController.text);
109110

110111
if (latitude != null && longitude != null) {
111112
weatherTrent.fetchWeather(latitude, longitude);
@@ -121,8 +122,10 @@ class _HomeScreenState extends State<HomeScreen> {
121122
child: Digester<WeatherTrent, WeatherTypes>(
122123
child: (mapper) {
123124
mapper
124-
..as<NoData>((state) => const Text("Please enter location to fetch weather."))
125-
..as<Loading>((state) => const CupertinoActivityIndicator())
125+
..as<NoData>((state) => const Text(
126+
"Please enter location to fetch weather."))
127+
..as<Loading>(
128+
(state) => const CupertinoActivityIndicator())
126129
..as<Data>((state) => Text(
127130
"${state.location} has temperature ${state.temperature}°C",
128131
style: const TextStyle(fontSize: 18),
@@ -191,7 +194,9 @@ class WeatherTrent extends Trent<WeatherTypes> {
191194
emit(Loading());
192195
Future.delayed(const Duration(milliseconds: 500), () {
193196
final mockData = {
194-
"temperature": double.parse((15 + (latitude % 10) + Random().nextDouble() * 5).toStringAsFixed(1)),
197+
"temperature": double.parse(
198+
(15 + (latitude % 10) + Random().nextDouble() * 5)
199+
.toStringAsFixed(1)),
195200
"location": "$latitude, $longitude",
196201
};
197202

lib/src/logic/accessors.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ T watch<T extends Trents>(BuildContext context) {
1414
}
1515

1616
/// Retrieve a map over the current state of a Trent reactively.
17-
Widget watchMap<T extends Trents<S>, S>(BuildContext context, void Function(WidgetSubtypeMapper<S>) configure) {
17+
Widget watchMap<T extends Trents<S>, S>(
18+
BuildContext context, void Function(WidgetSubtypeMapper<S>) configure) {
1819
final trent = Provider.of<T>(context, listen: true);
1920
final mapper = WidgetSubtypeMapper<S>(trent.state);
2021

lib/src/logic/mappers.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ class WidgetSubtypeMapper<Base> {
4747
/// Resolve the widget for the current state.
4848
Widget resolve() {
4949
final builder = _widgetBuilders[_state.runtimeType];
50-
return builder?.call(_state) ?? _defaultBuilder?.call(_state) ?? const SizedBox.shrink();
50+
return builder?.call(_state) ??
51+
_defaultBuilder?.call(_state) ??
52+
const SizedBox.shrink();
5153
}
5254
}

lib/src/logic/trent.dart

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,18 @@ abstract class Trents<Base> extends ChangeNotifier {
9696
/// to return to D(value: 10) instead of D(value: some_value_you_must_define).
9797
Option<T> getExStateAs<T extends Base>() {
9898
return _lastStates[T] != null
99-
? _lastStates[T]!.match(some: (v) => Option.some(v as T), none: () => Option<T>.none())
99+
? _lastStates[T]!.match(
100+
some: (v) => Option.some(v as T), none: () => Option<T>.none())
100101
: Option<T>.none();
101102
}
102103

103104
/// Retrieve the current state as a specific type.
104105
///
105106
/// Will return None if the current state is not of the specified type.
106107
Option<T> getCurrStateAs<T extends Base>() {
107-
return _state.runtimeType == T ? Option.some(_state as T) : Option<T>.none();
108+
return _state.runtimeType == T
109+
? Option.some(_state as T)
110+
: Option<T>.none();
108111
}
109112

110113
/// Dispose of the Trent.
@@ -129,6 +132,7 @@ abstract class Copyable<T> {
129132
}
130133

131134
/// A generic Trent that manages state transitions.
132-
abstract class Trent<Base extends EquatableCopyable<Base>> extends Trents<Base> {
135+
abstract class Trent<Base extends EquatableCopyable<Base>>
136+
extends Trents<Base> {
133137
Trent(super.state);
134138
}

lib/src/widgets/alerter.dart

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import 'package:trent/src/logic/mappers.dart';
33
import 'package:trent/trent.dart';
44

55
/// A generic Alerter widget that listens to alert events and state changes from a Trent.
6-
class Alerter<TrentType extends Trents<StateType>, StateType> extends StatefulWidget {
6+
class Alerter<TrentType extends Trents<StateType>, StateType>
7+
extends StatefulWidget {
78
/// Called when an alert state is emitted, using a mapper.
89
final void Function(LogicSubTypeMapper<StateType> mapper)? listenAlerts;
910

@@ -28,14 +29,17 @@ class Alerter<TrentType extends Trents<StateType>, StateType> extends StatefulWi
2829
});
2930

3031
@override
31-
AlerterState<TrentType, StateType> createState() => AlerterState<TrentType, StateType>();
32+
AlerterState<TrentType, StateType> createState() =>
33+
AlerterState<TrentType, StateType>();
3234
}
3335

34-
class AlerterState<TrentType extends Trents<StateType>, StateType> extends State<Alerter<TrentType, StateType>> {
36+
class AlerterState<TrentType extends Trents<StateType>, StateType>
37+
extends State<Alerter<TrentType, StateType>> {
3538
late final TrentType sm = get<TrentType>(context);
3639
late StateType _previousAlert; // Tracks the previous alert state
3740
late StateType _previousState; // Tracks the previous normal state
38-
bool _hasInitialStateTriggered = false; // Tracks if the initial state has been emitted
41+
bool _hasInitialStateTriggered =
42+
false; // Tracks if the initial state has been emitted
3943

4044
@override
4145
void initState() {
@@ -46,7 +50,8 @@ class AlerterState<TrentType extends Trents<StateType>, StateType> extends State
4650
// Listen to the alert stream
4751
sm.alertStream.listen((alert) {
4852
if (widget.listenAlerts != null) {
49-
final shouldTrigger = widget.listenAlertsIf?.call(_previousAlert, alert) ?? true;
53+
final shouldTrigger =
54+
widget.listenAlertsIf?.call(_previousAlert, alert) ?? true;
5055
if (shouldTrigger) {
5156
final mapper = LogicSubTypeMapper<StateType>(alert);
5257
widget.listenAlerts!(mapper);
@@ -63,7 +68,8 @@ class AlerterState<TrentType extends Trents<StateType>, StateType> extends State
6368
}
6469

6570
if (widget.listenStates != null) {
66-
final shouldTrigger = widget.listenStatesIf?.call(_previousState, state) ?? true;
71+
final shouldTrigger =
72+
widget.listenStatesIf?.call(_previousState, state) ?? true;
6773
if (shouldTrigger) {
6874
final mapper = LogicSubTypeMapper<StateType>(state);
6975
widget.listenStates!(mapper);

lib/src/widgets/digester.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import 'package:trent/src/logic/mappers.dart';
33
import 'package:trent/trent.dart';
44

55
/// A generic Digester widget that listens to state changes from a Trent.
6-
class Digester<TrentType extends Trents<StateType>, StateType> extends StatelessWidget {
6+
class Digester<TrentType extends Trents<StateType>, StateType>
7+
extends StatelessWidget {
78
/// A callback to build widgets dynamically for each state type.
89
final void Function(WidgetSubtypeMapper<StateType> mapper) child;
910

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: trent
22
description: A Flutter package for simple, scalable, and reactive state management with built-in dependency injection and efficient stream-based state handling.
3-
version: 0.0.1
3+
version: 0.0.2
44

55
homepage: https://matthewtrent.me
66
repository: https://github.com/mattrltrent/trent

test/trent_test.dart

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,10 @@ class _TestAppState extends State<TestApp> {
136136
..as<B>((state) => _counter = 3)
137137
..as<C>((state) => _counter = 4);
138138
},
139-
listenAlertsIf: (oldAlert, newAlert) => newAlert is D || newAlert is B,
140-
listenStatesIf: (oldState, newState) => newState is A || newState is B || newState is C,
139+
listenAlertsIf: (oldAlert, newAlert) =>
140+
newAlert is D || newAlert is B,
141+
listenStatesIf: (oldState, newState) =>
142+
newState is A || newState is B || newState is C,
141143
child: Center(
142144
child: Column(
143145
mainAxisAlignment: MainAxisAlignment.center,
@@ -155,7 +157,8 @@ class _TestAppState extends State<TestApp> {
155157
child: const Text("Switch to C"),
156158
),
157159
ElevatedButton(
158-
onPressed: () => get<SimpleTrent>(context).triggerDAlert(),
160+
onPressed: () =>
161+
get<SimpleTrent>(context).triggerDAlert(),
159162
child: const Text("Trigger D Alert"),
160163
),
161164
ElevatedButton(
@@ -200,7 +203,8 @@ void main() {
200203
expect(find.text("Digester State C: 99"), findsOneWidget);
201204
});
202205

203-
testWidgets('Alerter updates _counter on alert and state changes', (tester) async {
206+
testWidgets('Alerter updates _counter on alert and state changes',
207+
(tester) async {
204208
await tester.pumpWidget(
205209
TrentManager(
206210
trents: [register(SimpleTrent())],

0 commit comments

Comments
 (0)