Skip to main content

CwToggleButtonTile Documentation

Overview​

CwToggleButtonTile is a widget that combines a toggle button with customizable content layout. It allows you to display a toggle button along with other widgets, such as titles, subtitles, and additional leading or trailing elements. The toggle's position within the layout can be customized using the TogglePosition enum, offering flexibility in how the toggle button appears in relation to the content.

Public Properties​

  • title: An optional widget for the title text that appears at the top of the tile.
  • toggleWidget: The widget representing the toggle button itself (required).
  • subTitle: An optional widget for the subtitle text that appears below the title.
  • toggleTileHeight: The height of the tile (optional).
  • toggleTileWidth: The width of the tile (optional).
  • onChanged: A callback function triggered when the toggle state changes. It takes a bool parameter indicating the new state.
  • leadingWidget: An optional widget that appears at the beginning (leading side) of the tile.
  • trailingWidget: An optional widget that appears at the end (trailing side) of the tile.
  • contentWidget: An optional widget to replace the default content layout (title and subtitle).
  • togglePosition: Determines the position of the toggle button in the layout. It can be one of the following:
    • leadingTop: Positioned at the top-left.
    • trailingTop: Positioned at the top-right.
    • leadingCenter: Positioned at the center-left.
    • trailingCenter: Positioned at the center-right.
    • leadingBottom: Positioned at the bottom-left.
    • trailingBottom: Positioned at the bottom-right.
  • toggleTilePadding: Optional padding for the tile content (default: EdgeInsets.all(PaddingConst.pad_12)).
  • toggleTileBackgroundColor: Background color of the tile when no gradient is provided.
  • toggleTileGradient: Gradient background for the tile (optional).
  • toggleTileBorder: Border for the tile (optional).
  • toggleTileBorderRadius: Border radius for the tile (optional).

Constructor​

CwToggleButtonTile({
super.key,
required this.toggleWidget,
this.toggleTileBackgroundColor,
this.toggleTileGradient,
this.toggleTileBorder,
this.toggleTileBorderRadius,
this.toggleTileHeight,
this.toggleTileWidth,
this.subTitle,
this.leadingWidget,
this.toggleTilepadding,
this.trailingWidget,
this.contentWidget,
required this.onChanged,
this.title,
this.togglePosition = TogglePosition.trailingCenter,
});

Description:​

The constructor allows customization of the tile's appearance, including its size, background color, border, gradient, padding, and the position of the toggle button. It requires the toggleWidget (the toggle button) and the onChanged callback.

Enum: TogglePosition​

TogglePosition is an enum that defines the possible positions of the toggle button within the tile layout:

  • leadingTop: Places the toggle button at the top-left.
  • trailingTop: Places the toggle button at the top-right.
  • leadingCenter: Places the toggle button at the center-left.
  • trailingCenter: Places the toggle button at the center-right.
  • leadingBottom: Places the toggle button at the bottom-left.
  • trailingBottom: Places the toggle button at the bottom-right.

Methods​

crossAxisAlignment​

CrossAxisAlignment crossAxisAlignment()

Description:​

Determines the alignment of the children widgets inside the Row based on the togglePosition. It adjusts whether the children should align to the start, center, or end of the cross axis.

Returns:​

  • A CrossAxisAlignment value based on the togglePosition.

build​

Widget build(BuildContext context)

Description:​

The build method constructs the tile layout, including the toggle button and other child widgets. The toggle button’s position is determined by togglePosition, and the content is arranged accordingly.


Widget Helpers​

_toggleWidget​

Widget _toggleWidget() => widget.toggleWidget;

Description:​

Returns the toggle widget that is passed as a property. This widget represents the toggle button itself.

_contentBox​

Widget _contentBox() => widget.contentWidget ??
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
widget.title ?? const SizedBox(),
widget.subTitle ?? const SizedBox(),
],
);

Description:​

Returns the content of the tile, which consists of the title and subTitle by default. If a custom contentWidget is provided, it will be used instead.

_leadingWidget​

Widget _leadingWidget() => widget.leadingWidget ?? const SizedBox();

Description:​

Returns the leading widget if specified, otherwise returns an empty SizedBox.

_trailingWidget​

Widget _trailingWidget() => widget.trailingWidget ?? const SizedBox();

Description:​

Returns the trailing widget if specified, otherwise returns an empty SizedBox.


Usage Example​

Basic Usage of CwToggleButtonTile​

CwToggleButtonTile(
toggleWidget: CwToggleButtonWidget(
value: true,
onChanged: (newValue) {
print("Toggle value: $newValue");
},
),
title: Text("Title of the Tile"),
subTitle: Text("Subtitle of the Tile"),
onChanged: (newValue) {
print("Tile toggle value: $newValue");
},
togglePosition: TogglePosition.leadingCenter,
)

Custom Tile with Leading Widget and Gradient Background​

CwToggleButtonTile(
toggleWidget: CwToggleButtonWidget(
value: false,
onChanged: (newValue) {
print("Toggle value: $newValue");
},
),
title: Text("Custom Tile"),
leadingWidget: Icon(Icons.star),
toggleTileBackgroundColor: Colors.blue,
toggleTileGradient: LinearGradient(
colors: [Colors.blue, Colors.green],
),
onChanged: (newValue) {
print("Toggle state: $newValue");
},
togglePosition: TogglePosition.trailingBottom,
)

Source Code Repository​

Find the full source code on GitHub:
GitHub Repository