lisTile static method

Widget lisTile({
  1. required BuildContext context,
  2. bool isLoading = false,
  3. Widget? leading,
  4. Widget? trailing,
  5. bool isSelected = false,
  6. EdgeInsetsGeometry? contentPadding,
  7. required String title,
  8. Widget titleBuilder(
    1. BuildContext context,
    2. Text child
    )?,
  9. String subtitle = "",
  10. TextOverflow? subtitleTextOverflow,
  11. int? subtitleMaxLines,
  12. void onLongPress()?,
  13. void onTap()?,
  14. TextStyle textStyleBuilder(
    1. BuildContext context,
    2. TextStyle textStyle
    )?,
})

UncompleteDocumentation

Implementation

static Widget lisTile({
  required BuildContext context,
  bool isLoading = false,
  Widget? leading,
  Widget? trailing,
  bool isSelected = false,
  EdgeInsetsGeometry? contentPadding,
  required String title,
  Widget Function(BuildContext context, Text child)? titleBuilder,
  String subtitle = "",
  TextOverflow? subtitleTextOverflow,
  int? subtitleMaxLines,
  void Function()? onLongPress,
  void Function()? onTap,
  TextStyle Function(BuildContext context, TextStyle textStyle)?
      textStyleBuilder,
}) {
  final child = MaterialButton(
    onLongPress: onLongPress,
    onPressed: onTap,
    color: (isSelected) ? context.theme.highlightColor : null,
    highlightColor: Colors.transparent,
    child: ListTile(
      contentPadding: contentPadding ?? const EdgeInsets.only(),
      leading: leading,
      title: (titleBuilder ?? titleBuilderDefault).call(
        context,
        Text(
          title,
          style: (textStyleBuilder ?? textStyleBuilderDefault).call(
              context,
              (context.theme.textTheme.bodyMedium ??
                  const TextStyle()
                      .copyWith(color: context.theme.indicatorColor))),
        ),
      ),
      subtitle: () {
        if (subtitle.trim().isNotEmpty) {
          return Text(
            subtitle.trim(),
            style: (textStyleBuilder ?? textStyleBuilderDefault).call(
                context,
                (context.theme.textTheme.bodySmall ??
                    const TextStyle()
                        .copyWith(color: context.theme.hintColor))),
            overflow: subtitleTextOverflow ?? TextOverflow.ellipsis,
            maxLines: subtitleMaxLines,
          );
        }
        return null;
      }(),
      trailing: trailing,
    ),
  );
  if (isLoading) {
    return SkeletonizerGeneralFramework(
      enabled: isLoading,
      child: child,
    );
  }
  return child;
}