list_item.dart 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import 'package:flutter/material.dart';
  2. class ListItem extends StatelessWidget {
  3. final Widget title;
  4. final Widget? subtitle;
  5. final Widget? leading;
  6. final Widget? trailing;
  7. final CrossAxisAlignment titleAlign;
  8. const ListItem({
  9. Key? key,
  10. required this.title,
  11. this.subtitle,
  12. this.leading,
  13. this.trailing,
  14. this.titleAlign = CrossAxisAlignment.start,
  15. }) : super(key: key);
  16. @override
  17. Widget build(BuildContext context) {
  18. List<Widget> children = [];
  19. List<Widget> titles = [title];
  20. if (leading != null) {
  21. children.add(leading!);
  22. }
  23. if (subtitle != null) {
  24. titles.add(subtitle!);
  25. }
  26. children.add(
  27. Expanded(
  28. flex: 1,
  29. child: Column(
  30. crossAxisAlignment: titleAlign,
  31. children: titles,
  32. ),
  33. ),
  34. );
  35. if (trailing != null) {
  36. children.add(trailing!);
  37. }
  38. return Row(
  39. mainAxisAlignment: MainAxisAlignment.start,
  40. crossAxisAlignment: CrossAxisAlignment.center,
  41. children: children,
  42. );
  43. }
  44. }