DrawerTile class

A DrawerTile provides access to the drawer selections, using the DrawerManagerProvider.

The Drawer Tile class is a child of ListTile, but has a required on onTap attribute, to maintain the selection order. The first DrawerTile will align with the first drawer selection. You can have more selections than tiles, but not more Drawer Tiles than selections.

This happens in the DrawerManagerProvider.selectDrawer method, and it returns from a list of onTap functions the position that was tapped. Then it uses that position to set the current drawer selection, and notifies the Drawer Manager's body property and any other Consumers to make the update for this drawer selection. Lastly, it calls to the onTap that was passed from the Drawer Tile.


 void selectDrawer(GestureTapCallback onTap) async {
   final position = await Future<int>.value(onTapFunctions.indexOf(onTap));
   _currentDrawerSelection = position;
   notifyListeners();
   onTap();
 }

Similar to Flutter's TextEditingController, the Drawer Manager uses Provider's ChangeNotifier as a parent class to manage user selection by displaying the Widget selection.

Here is an example of a DrawerManager with drawerElements and more drawerSelections added than Drawer Tiles.


   const drawerSelections = [
     HelloPage(),
     CounterPage(),
     TheMACPage()
   ];


    drawer: DrawerManager(
        context: context,
        drawerElements: [
            const DrawerHeader(
                child: Padding(
                    padding: EdgeInsets.only(bottom: 20),
                    child: Icon(Icons.account_circle),
                ),
            ),
            DrawerTile(
                context: context,
                leading: const Icon(Icons.hail_rounded),
                title: Text('Hello'),
                onTap: () async {
                    // RUN A BACKEND Hello, Flutter OPERATION
                },
            ),
            // ...
        ],
        tileSelections: drawerSelections
    )

Inheritance

Constructors

DrawerTile({required BuildContext context, required dynamic onTap, Key? key, dynamic leading, dynamic title, dynamic subtitle, dynamic trailing, dynamic isThreeLine = false, dynamic dense, dynamic visualDensity, dynamic shape, dynamic style, dynamic selectedColor, dynamic iconColor, dynamic textColor, dynamic contentPadding, dynamic enabled = true, dynamic onLongPress, dynamic mouseCursor, dynamic selected = false, dynamic focusColor, dynamic hoverColor, dynamic focusNode, dynamic autofocus = false, dynamic tileColor, dynamic selectedTileColor, dynamic enableFeedback, dynamic horizontalTitleGap, dynamic minVerticalPadding, dynamic minLeadingWidth})

Properties

autofocus bool
True if this widget will be selected as the initial focus when no other node in its scope is currently focused.
finalinherited
contentPadding EdgeInsetsGeometry?
The tile's internal padding.
finalinherited
dense bool?
Whether this list tile is part of a vertically dense list.
finalinherited
enabled bool
Whether this list tile is interactive.
finalinherited
enableFeedback bool?
Whether detected gestures should provide acoustic and/or haptic feedback.
finalinherited
focusColor Color?
The color for the tile's Material when it has the input focus.
finalinherited
focusNode FocusNode?
An optional focus node to use as the focus node for this widget.
finalinherited
hashCode int
The hash code for this object.
no setterinherited
horizontalTitleGap double?
The horizontal gap between the titles and the leading/trailing widgets.
finalinherited
hoverColor Color?
The color for the tile's Material when a pointer is hovering over it.
finalinherited
iconColor Color?
Defines the default color for leading and trailing icons.
finalinherited
isThreeLine bool
Whether this list tile is intended to display three lines of text.
finalinherited
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
leading Widget?
A widget to display before the title.
finalinherited
leadingAndTrailingTextStyle TextStyle?
The text style for ListTile's leading and trailing.
finalinherited
minLeadingWidth double?
The minimum width allocated for the ListTile.leading widget.
finalinherited
minVerticalPadding double?
The minimum padding on the top and bottom of the title and subtitle widgets.
finalinherited
mouseCursor MouseCursor?
The cursor for a mouse pointer when it enters or is hovering over the widget.
finalinherited
onFocusChange ValueChanged<bool>?
Handler called when the focus changes.
finalinherited
onLongPress GestureLongPressCallback?
Called when the user long-presses on this list tile.
finalinherited
onTap GestureTapCallback?
Called when the user taps this list tile.
finalinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
selected bool
If this tile is also enabled then icons and text are rendered with the same color.
finalinherited
selectedColor Color?
Defines the color used for icons and text when the list tile is selected.
finalinherited
selectedTileColor Color?
Defines the background color of ListTile when selected is true.
finalinherited
shape ShapeBorder?
Defines the tile's InkWell.customBorder and Ink.decoration shape.
finalinherited
splashColor Color?
The color of splash for the tile's Material.
finalinherited
style ListTileStyle?
Defines the font used for the title.
finalinherited
subtitle Widget?
Additional content displayed below the title.
finalinherited
subtitleTextStyle TextStyle?
The text style for ListTile's subtitle.
finalinherited
textColor Color?
Defines the text color for the title, subtitle, leading, and trailing.
finalinherited
tileColor Color?
Defines the background color of ListTile when selected is false.
finalinherited
title Widget?
The primary content of the list tile.
finalinherited
titleAlignment ListTileTitleAlignment?
Defines how ListTile.leading and ListTile.trailing are vertically aligned relative to the ListTile's titles (ListTile.title and ListTile.subtitle).
finalinherited
titleTextStyle TextStyle?
The text style for ListTile's title.
finalinherited
trailing Widget?
A widget to display after the title.
finalinherited
visualDensity VisualDensity?
Defines how compact the list tile's layout will be.
finalinherited

Methods

build(BuildContext context) Widget
Describes the part of the user interface represented by this widget.
inherited
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

Static Methods

getDefaultCallback() GestureTapCallback