WidgetEventMixin<T extends StatefulWidget> mixin

Mixin for State classes that require knowledge of changing WidgetEvent values for their child widgets.

This mixin does nothing by mere application to a State class, but is helpful when writing build methods that include child InkWell, GestureDetector, MouseRegion, or Focus widgets. Instead of manually creating handlers for each type of user interaction, such State classes can instead provide a ValueChanged<bool> function and allow WidgetEventMixin to manage the set of active WidgetEvents, and the calling of setState as necessary.

{@tool snippet} This example shows how to write a StatefulWidget that uses the WidgetEventMixin class to watch WidgetEvent values.

class MyWidget extends StatefulWidget {
  const MyWidget({
    Key? key,
    required this.color,
    required this.child,
  }) : super(key: key);

  final Color color;
  final Widget child;

  @override
  State<MyWidget> createState() => MyWidgetState();
}

class MyWidgetState extends State<MyWidget> with WidgetEventMixin<MyWidget> {

  @override
  void initState() {
    super.initState();
    initWidgetEvents();
  }

  @override
  Widget build(BuildContext context) {
    return InkWell(
      onFocusChange: widgetEvents.emit(WidgetEvent.focused),
      child: Container(
        color: DrivenProperty.evaluate<Color>(widget.color, widgetEvents.value),
        child: widget.child,
      ),
    );
  }
}

{@end-tool}

Superclass Constraints
  1. @optionalTypeArgs

Properties

context BuildContext
The location in the tree where this widget builds.
no setterinherited
hashCode int
The hash code for this object.
no setterinherited
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
widgetEvents WidgetEventController
Manages a set of WidgetEvents and notifies listeners of changes.
no setter

Methods

activate() → void
Called when this object is reinserted into the tree after having been removed via deactivate.
inherited
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.
override
didChangeDependencies() → void
Called when a dependency of this State object changes.
inherited
didChangeWidgetEvents() → void
Called when widgetEvents changes.
didUpdateWidget(covariant T oldWidget) → void
Called whenever the widget configuration changes.
inherited
dispose() → void
Called when this object is removed from the tree permanently.
override
disposeWidgetEvents() → void
initState() → void
Called when this object is inserted into the tree.
override
initWidgetEvents([WidgetEventController? controller]) → void
Init widget events with external events controller
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.
override
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
updateWidgetEvents(WidgetEventController? oldController, WidgetEventController? newController) → void
Update widget events with external events controller

Operators

operator ==(Object other) bool
The equality operator.
inherited