StateController<T> class
abstract
A controller that manages state for asynchronous operations.
This controller provides a standard way to handle loading, error, and success states for async operations. It's particularly useful for API calls and other asynchronous operations.
Type parameters:
T: The type of data this controller will manage
Example:
class UserController extends StateController<User> {
Future<void> fetchUser() async {
change(null, status: RxStatus.loading());
try {
final user = await userRepository.getUser();
change(user, status: RxStatus.success());
} catch (e) {
change(state, status: RxStatus.error(e.toString()));
}
}
}
- Inheritance
-
- Object
- Listenable
- ListNotifier
- GetxController
- StateController
- Mixed-in types
-
- StateMixin<
T>
- StateMixin<
- Available extensions
Constructors
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- initialized → bool
-
Checks whether the controller has already been initialized.
no setterinherited
- isClosed → bool
-
Checks whether the controller has already been closed.
no setterinherited
- isDisposed → bool
-
no setterinherited
- listenersLength → int
-
Returns the number of active listeners.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- state → T
-
Alias for value for convenience.
no setterinherited
-
status
↔ GetStatus<
T> -
The current status of the state.
getter/setter pairinherited
- value ↔ T
-
The current value of the state.
getter/setter pairinherited
Methods
-
addListener(
GetStateUpdate listener) → Disposer -
Register a closure to be called when the object notifies its listeners.
inherited
-
addListenerId(
Object? key, GetStateUpdate listener) → Disposer -
Adds a listener to a specific group identified by
key.inherited -
change(
GetStatus< T> status) → void -
Changes the status if it's different from the current status.
inherited
-
containsId(
Object id) → bool -
Checks if a listener group with the given ID exists.
inherited
-
containsListener(
GetStateUpdate listener) → bool -
inherited
-
dispose(
) → void -
Disposes all listener groups.
inherited
-
disposeId(
Object id) → void -
Disposes a specific listener group.
inherited
-
futurize(
Future< T> body(), {T? initialData, String? errorMessage, bool useEmpty = true}) → void -
Executes a future and automatically handles status changes.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
notifyGroupChildrens(
Object id) → void -
Reports that a listener group was read.
inherited
-
obx(
NotifierBuilder< T> widget, {Widget onError(String? error)?, Widget? onLoading, Widget? onEmpty, WidgetBuilder? onCustom}) → Widget -
Available on StateMixin<
Builds a widget based on the current status.T> , provided by the StateExt extension -
onClose(
) → void -
Called before onDelete method. onClose might be used to
dispose resources used by the controller. Like closing events,
or streams before the controller is destroyed.
Or dispose objects that can potentially create some memory leaks,
like TextEditingControllers, AnimationControllers.
Might be useful as well to persist some data on disk.
inherited
-
onDelete(
) → void -
Called when the controller is removed from memory.
inherited
-
onInit(
) → void -
Called immediately after the widget is allocated in memory.
You might use this to initialize something for the controller.
inherited
-
onReady(
) → void -
Called 1 frame after onInit(). It is the perfect place to enter
navigation events, like snackbar, dialogs, or a new route, or
async request.
inherited
-
onStart(
) → void -
Called at the exact moment the widget is allocated in memory.
It uses an internal "callable" type, to avoid any @overrides in subclasses.
This method should be internal and is required to define the
lifetime cycle of the subclass.
inherited
-
refresh(
) → void -
Notifies all listeners to update.
inherited
-
refreshGroup(
Object id) → void -
Refreshes only the listeners in a specific group.
inherited
-
removeListener(
VoidCallback listener) → void -
Remove a previously registered closure from the list of closures that the
object notifies.
inherited
-
removeListenerId(
Object id, VoidCallback listener) → void -
Removes a listener from a specific group.
inherited
-
reportAdd(
VoidCallback disposer) → void -
Reports a disposer callback to the global notifier.
inherited
-
reportRead(
) → void -
Reports that this notifier was read.
inherited
-
setEmpty(
) → void -
Sets the status to empty.
inherited
-
setError(
Object error) → void -
Sets the status to error with the given error object.
inherited
-
setLoading(
) → void -
Sets the status to loading.
inherited
-
setSuccess(
T data) → void -
Sets the status to success with the given data.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
-
update(
[List< Object> ? ids, bool condition = true]) → void -
Notifies listeners to update the UI.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited