ExpandableListTileButton.async constructor
ExpandableListTileButton.async({
- Key? key,
- required Future<
Widget> fetchExpandedContent(), - required Widget title,
- Widget? loadingWidget,
- Widget? errorWidget,
- Widget? subtitle,
- Color? headerBackgroundColor,
- Color? expandedBodyColor,
- Color? trailingIconColor,
- double elevation = 1,
- Widget? leading,
- EdgeInsetsGeometry? margin,
- double expandedBottomMargin = 16.0,
- IconData trailingExpandedIcon = Icons.expand_less,
- IconData trailingCollapsedIcon = Icons.expand_more,
- BorderRadius borderRadius = const BorderRadius.all(Radius.circular(10)),
- ExpandableController? controller,
- Duration animationDuration = const Duration(milliseconds: 300),
- bool continuous = true,
Implementation
factory ExpandableListTileButton.async({
Key? key,
required Future<Widget> Function() fetchExpandedContent,
required Widget title,
Widget? loadingWidget,
Widget? errorWidget,
Widget? subtitle,
Color? headerBackgroundColor,
Color? expandedBodyColor,
Color? trailingIconColor,
double elevation = 1,
Widget? leading,
EdgeInsetsGeometry? margin,
double expandedBottomMargin = 16.0,
IconData trailingExpandedIcon = Icons.expand_less,
IconData trailingCollapsedIcon = Icons.expand_more,
BorderRadius borderRadius = const BorderRadius.all(Radius.circular(10)),
ExpandableController? controller,
Duration animationDuration = const Duration(milliseconds: 300),
bool continuous = true,
}) {
return ExpandableListTileButton.listTile(
key: key,
title: title,
subtitle: subtitle,
leading: leading,
headerBackgroundColor: headerBackgroundColor,
expandedBodyColor: expandedBodyColor,
trailingIconColor: trailingIconColor,
elevation: elevation,
margin: margin,
expandedBottomMargin: expandedBottomMargin,
borderRadius: borderRadius,
trailingExpandedIcon: trailingExpandedIcon,
trailingCollapsedIcon: trailingCollapsedIcon,
controller: controller,
animationDuration: animationDuration,
continuous: continuous,
expanded: FutureBuilder<Widget>(
future: fetchExpandedContent(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Container(
padding: const EdgeInsets.all(32),
alignment: Alignment.center,
child: loadingWidget ?? const CircularProgressIndicator(),
);
} else if (snapshot.hasError) {
return Container(
padding: const EdgeInsets.all(32),
alignment: Alignment.center,
child:
errorWidget ??
const Text(
"Failed to load content.",
style: TextStyle(color: Colors.red),
),
);
}
return snapshot.data ?? const SizedBox.shrink();
},
),
);
}