FolderButton class
A wrapper around IconButton and AnimatedSwitcher that animates between icon, openedIcon and closedIcon depending on the value of isOpen.
The value of isOpen is mapped as follows:
null
-> icon -> Icons.article
true
-> openedIcon -> Icons.folder_open
false
-> closedIcon -> Icons.folder
Example:
final TreeEntry entry;
final TreeController controller;
@override
Widget build(BuildContext context) {
bool? isOpen;
VoidCallback? onPressed;
if (entry.hasChildren) {
isOpen = entry.isExpanded;
onPressed = () => controller.toggleExpansion(entry.node);
}
return FolderButton(
isOpen: isOpen,
onPressed: onPressed,
);
}
In the above example, the isOpen property is composed depending on the
context of a TreeEntry. This widget will show icon when the entry is a
leaf (i.e., has no children), openedIcon when the expansion state is set
to true
and closedIcon if the expansion state is set to false
. The
onPressed callback is set to null
when the entry is a leaf disabling
the button.
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatelessWidget
- FolderButton
Constructors
- FolderButton({Key? key, bool? isOpen = true, Widget icon = const Icon(Icons.article), Widget openedIcon = const Icon(Icons.folder_open), Widget closedIcon = const Icon(Icons.folder), double? iconSize, VisualDensity? visualDensity, EdgeInsetsGeometry padding = const EdgeInsets.all(8.0), AlignmentGeometry alignment = Alignment.center, double? splashRadius, Color? focusColor, Color? hoverColor, Color? color, Color? splashColor, Color? highlightColor, Color? disabledColor, VoidCallback? onPressed, MouseCursor? mouseCursor, FocusNode? focusNode, bool autofocus = false, String? tooltip, bool enableFeedback = true, BoxConstraints? constraints, ButtonStyle? style, Duration duration = kThemeAnimationDuration, Curve curve = Curves.linear, AnimatedSwitcherTransitionBuilder transitionBuilder = defaultFolderButtonTransitionBuilder})
-
Creates a FolderButton.
const
Properties
- alignment → AlignmentGeometry
-
Defines how the icon is positioned within the IconButton.
final
- autofocus → bool
-
True if this widget will be selected as the initial focus when no other
node in its scope is currently focused.
final
- closedIcon → Widget
-
The icon to show when isOpen is set to
false
.final - color → Color?
-
The color to use for the icon inside the button, if the icon is enabled.
Defaults to leaving this up to the icon widget.
final
- constraints → BoxConstraints?
-
Optional size constraints for the button.
final
- curve → Curve
-
The animation curve to use when transitioning the icons.
final
- disabledColor → Color?
-
The color to use for the icon inside the button, if the icon is disabled.
Defaults to the ThemeData.disabledColor of the current Theme.
final
- duration → Duration
-
The duration of the transition of the icons.
final
- enableFeedback → bool
-
Whether detected gestures should provide acoustic and/or haptic feedback.
final
- focusColor → Color?
-
The color for the button when it has the input focus.
final
- focusNode → FocusNode?
-
An optional focus node to use as the focus node for this widget.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- highlightColor → Color?
-
The secondary color of the button when the button is in the down (pressed)
state. The highlight color is represented as a solid color that is overlaid over the
button color (if any). If the highlight color has transparency, the button color
will show through. The highlight fades in quickly as the button is held down.
final
- hoverColor → Color?
-
The color for the button when a pointer is hovering over it.
final
- icon → Widget
-
The icon to show when isOpen is set to
null
.final - iconSize → double?
-
The size of the icon inside the button.
final
- isOpen → bool?
-
Defines which of icon, openedIcon and closedIcon is currently shown.
final
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- mouseCursor → MouseCursor?
-
The cursor for a mouse pointer when it enters or is hovering over the
button.
final
- onPressed → VoidCallback?
-
The callback that is called when the button is tapped or otherwise activated.
final
- openedIcon → Widget
-
The icon to show when isOpen is set to
true
.final - padding → EdgeInsetsGeometry
-
The padding around the button's icon. The entire padded icon will react
to input gestures.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- splashColor → Color?
-
The primary color of the button when the button is in the down (pressed) state.
The splash is represented as a circular overlay that appears above the
highlightColor overlay. The splash overlay has a center point that matches
the hit point of the user touch event. The splash overlay will expand to
fill the button area if the touch is held for long enough time. If the splash
color has transparency then the highlight and button color will show through.
final
- splashRadius → double?
-
The splash radius.
final
- style → ButtonStyle?
-
Customizes this button's appearance.
final
- tooltip → String?
-
Text that describes the action that will occur when the button is pressed.
final
- transitionBuilder → AnimatedSwitcherTransitionBuilder
-
The transition funciton used to animate the icons swap.
final
- visualDensity → VisualDensity?
-
Defines how compact the icon button's layout will be.
final
Methods
-
build(
BuildContext context) → Widget -
Describes the part of the user interface represented by this widget.
override
-
createElement(
) → StatelessElement -
Creates a StatelessElement to manage this widget's location in the tree.
inherited
-
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
-
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}) → 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
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited