DeferredState<T extends StatefulWidget> class
abstract
DeferredState makes it easy to do async initialisation of a StatefulWidget
Instead of StatefulWidget deriving from State you derive from DeferredState.
You can then override the 'asyncInitState' method to do some asynchrounus initialisation. You then use DeferredBuilder to wait for the state to be initialised.
Any items that are to be disposed should be called in the standard initState as in some cases the dispose can be called before asyncInitState has completed.
class _WeekScheduleState extends DeferredState<WeekSchedule> {
late final System system;
late final EventController<JobActivity> _weekController;
/// Items that are to be disposed must go in [initState]
@override
void initState() {
_weekController = EventController();
// this must be called last.
super.initState();
}
@override
Future<void> asyncInitState() async {
system = await DaoSystem().get();
}
@override
void dispose() {
_weekController.dispose();
super.dispose();
}
Widget build(BuildContext context)
{
/// Waits for [asyncInitState] to complete and then calls
/// the builder.
return DeferredBuilder(this, builder: (context) => Text(system.name));
}
Constructors
Properties
- context → BuildContext
-
The location in the tree where this widget builds.
no setterinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
-
initialised
→ Future<
void> -
no setter
- mounted → bool
-
Whether this State object is currently in a tree.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- widget → T
-
The current configuration.
no setterinherited
Methods
-
activate(
) → void -
Called when this object is reinserted into the tree after having been
removed via deactivate.
inherited
-
asyncInitState(
) → Future< void> - Do any asynchronous intialisation in this method As soon as you code returns from this method the state is considered initialised, so use await to ensure all your initialisation is complete before returning.
-
build(
BuildContext context) → Widget -
Describes the part of the user interface represented by this widget.
inherited
-
deactivate(
) → void -
Called when this object is removed from the tree.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
didChangeDependencies(
) → void -
Called when a dependency of this State object changes.
inherited
-
didUpdateWidget(
covariant T oldWidget) → void -
Called whenever the widget configuration changes.
inherited
-
dispose(
) → void -
Called when this object is removed from the tree permanently.
inherited
-
initState(
) → void -
Called when this object is inserted into the tree.
override
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
reassemble(
) → void -
Called whenever the application is reassembled during debugging, for
example during hot reload.
inherited
-
setState(
VoidCallback fn) → void -
Notify the framework that the internal state of this object has changed.
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringShort(
) → String -
A brief description of this object, usually just the runtimeType and the
hashCode.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited