@@ -6,20 +6,15 @@ final api = ApiClient();
66
77// #region basic
88class DataManager {
9- // When saveCommand completes, automatically refresh
10- late final saveCommand = Command .createAsyncNoResult <Data >(
11- (data) => api.save (data),
12- );
13-
149 late final refreshCommand = Command .createAsyncNoParam <List <Data >>(
1510 () => api.fetchData (),
1611 initialValue: [],
1712 );
1813
19- DataManager () {
20- // Pipe save results to trigger refresh
21- saveCommand. pipeToCommand (refreshCommand);
22- }
14+ // When saveCommand completes, automatically refresh
15+ late final saveCommand = Command . createAsyncNoResult < Data >(
16+ (data) => api. save (data),
17+ ).. pipeToCommand (refreshCommand);
2318
2419 void dispose () {
2520 saveCommand.dispose ();
@@ -30,37 +25,25 @@ class DataManager {
3025
3126// #region from_isrunning
3227class SpinnerManager {
33- late final longRunningCommand = Command .createAsyncNoParam <Data >(
34- () async {
35- await Future .delayed (Duration (seconds: 5 ));
36- return Data ();
37- },
38- initialValue: Data .empty (),
39- );
40-
4128 // Command that controls a global spinner
4229 late final showSpinnerCommand = Command .createSync <bool , bool >(
4330 (show) => show,
4431 initialValue: false ,
4532 );
4633
47- SpinnerManager () {
48- // When long command starts/stops, update spinner
49- longRunningCommand.isRunning.pipeToCommand (showSpinnerCommand);
50- }
34+ // When long command starts/stops, update spinner
35+ late final longRunningCommand = Command .createAsyncNoParam <Data >(
36+ () async {
37+ await Future .delayed (Duration (seconds: 5 ));
38+ return Data ();
39+ },
40+ initialValue: Data .empty (),
41+ )..isRunning.pipeToCommand (showSpinnerCommand);
5142}
5243// #endregion from_isrunning
5344
5445// #region from_results
5546class LoggingManager {
56- late final saveCommand = Command .createAsync <Data , Data >(
57- (data) async {
58- await api.save (data);
59- return data;
60- },
61- initialValue: Data .empty (),
62- );
63-
6447 late final logCommand = Command .createSync <CommandResult <Data , Data >, void >(
6548 (result) {
6649 if (result.hasError) {
@@ -72,26 +55,27 @@ class LoggingManager {
7255 initialValue: null ,
7356 );
7457
75- LoggingManager () {
76- // Pipe all results (success/error) to logging
77- saveCommand.results.pipeToCommand (logCommand);
78- }
58+ // Pipe all results (success/error) to logging
59+ late final saveCommand = Command .createAsync <Data , Data >(
60+ (data) async {
61+ await api.save (data);
62+ return data;
63+ },
64+ initialValue: Data .empty (),
65+ )..results.pipeToCommand (logCommand);
7966}
8067// #endregion from_results
8168
8269// #region from_valuenotifier
8370class FormManager {
84- final selectedUserId = ValueNotifier <String >('' );
85-
8671 late final loadUserCommand = Command .createAsync <String , User >(
8772 (userId) => api.login (userId, '' ),
8873 initialValue: User .empty (),
8974 );
9075
91- FormManager () {
92- // When user ID changes, load user details
93- selectedUserId.pipeToCommand (loadUserCommand);
94- }
76+ // When user ID changes, load user details
77+ late final selectedUserId = ValueNotifier <String >('' )
78+ ..pipeToCommand (loadUserCommand);
9579
9680 void dispose () {
9781 selectedUserId.dispose ();
0 commit comments