Modifier class
Original idea and source code by @remi_rousselet
A widget that simplify the writing of deeply Modifier widget trees.
It relies on the new kind of widget SingleChildModifier, which has two concrete implementations:
They are both respectively a SingleChildModifier variant of StatelessWidget and StatefulWidget.
The difference between a widget and its single-child variant is that they have
a custom build
method that takes an extra parameter.
As such, a StatelessWidget
would be:
class MyWidget extends StatelessWidget {
MyWidget({Key key, this.child}): super(key: key);
final Widget child;
@override
Widget build(BuildContext context) {
return SomethingWidget(child: child);
}
}
Whereas a SingleChildStatelessModifier would be:
class MyWidget extends SingleChildStatelessWidget {
MyWidget({Key key, Widget child}): super(key: key, child: child);
@override
Widget buildWithChild(BuildContext context, Widget child) {
return SomethingWidget(child: child);
}
}
This allows our new MyWidget
to be used both with:
MyWidget(
child: AnotherWidget(),
)
and to be placed inside children
of Modifier like so:
Modifier(
modifiers: [
MyWidget(),
...
],
child: AnotherWidget(),
)
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatelessWidget
- Modifier
- Implemented types
- Mixed-in types
- Available extensions
Constructors
-
Modifier({Key? key, required List<
SingleChildModifier> modifiers, Widget? child}) - Allows configuring key, children and child
Properties
Methods
-
build(
BuildContext context) → Widget -
Describes the part of the user interface represented by this widget.
override
-
createElement(
) → _ModifierElement -
Create modifier stateless element
override
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
modified(
) → Modifier -
Available on Widget, provided by the ModifierTransformer extension
Transform normal widget to Modifier -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
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
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String -
Returns a string representation of this node and its descendants.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object.
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
-
wrapWith(
SingleChildModifier modifier) → Modifier -
Wrap current
child
widget with a SingleChildModifieroverride -
wrapWithAll(
List< SingleChildModifier> modifiers) → Modifier -
Wrap current
child
widget with a SingleChildModifiers listoverride
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited