menu_list.dart 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /*
  2. * @Author : WuWei
  3. * @LastEditors : WuWei
  4. * @Date : 2022-02-09 15:21:58
  5. * @LastEditTime : 2023-03-29 18:03:07
  6. * @Description : Do not edit
  7. */
  8. import 'package:app_package/app_package.dart';
  9. import 'package:app_package/src/assets.gen.dart';
  10. import 'package:flutter/material.dart';
  11. import 'package:wisdom_cli/wisdom_cli.dart';
  12. class WisDynamicMenuList extends StatelessWidget {
  13. const WisDynamicMenuList({
  14. Key? key,
  15. this.title,
  16. this.list,
  17. this.type,
  18. this.toRoutes,
  19. }) : super(key: key);
  20. final String? title;
  21. final List? list;
  22. final String? type;
  23. final Function(dynamic item, dynamic type)? toRoutes;
  24. @override
  25. Widget build(BuildContext context) {
  26. final colorScheme = WTheme.of(context).colorScheme;
  27. return WisCard(
  28. margin: EdgeInsets.only(
  29. bottom: 10.pt,
  30. left: 15.pt,
  31. right: 15.pt,
  32. ),
  33. child: Wisdom.column(color: Colors.white, children: <Widget>[
  34. Wisdom.row(
  35. border: Border(
  36. bottom: BorderSide(
  37. color: Color(0xffE6E6E6),
  38. ),
  39. ),
  40. padding: EdgeInsets.only(top: 15.pt, left: 15.pt, bottom: 15.pt),
  41. children: [
  42. WisText(
  43. '$title',
  44. color: colorScheme.mainTitle,
  45. weight: FontWeight.w600,
  46. size: 15.pt,
  47. ),
  48. ]),
  49. if (list != null && list!.length > 0) ...[
  50. for (int i = 0; i < list!.length; i++)
  51. _BuildMenuItem(
  52. item: list![i],
  53. type: type,
  54. toRoutes: toRoutes,
  55. isLast: i == list!.length - 1 ? true : false,
  56. ),
  57. ]
  58. ]),
  59. );
  60. }
  61. }
  62. class _BuildMenuItem extends StatelessWidget {
  63. const _BuildMenuItem({
  64. Key? key,
  65. this.item,
  66. this.type,
  67. this.toRoutes,
  68. this.isLast,
  69. }) : super(key: key);
  70. final item;
  71. final String? type;
  72. final Function(dynamic item, dynamic type)? toRoutes;
  73. final bool? isLast;
  74. @override
  75. Widget build(BuildContext context) {
  76. final colorScheme = WTheme.of(context).colorScheme;
  77. return Wisdom.row(
  78. onTap: () => toRoutes!(item, type),
  79. padding: EdgeInsets.only(
  80. left: 15.pt,
  81. ),
  82. crossAxisAlignment: CrossAxisAlignment.center,
  83. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  84. children: [
  85. Row(
  86. children: [
  87. WImage.network(
  88. AppParseUtil.image(item.icon),
  89. height: 39.pt,
  90. width: 39.pt,
  91. ),
  92. Wisdom(width: 12.5.pt),
  93. ],
  94. ),
  95. Wisdom.row(
  96. padding: EdgeInsets.only(
  97. top: 22.pt,
  98. bottom: 22.pt,
  99. ),
  100. border: Border(
  101. bottom: BorderSide(
  102. color: isLast == true ? Colors.transparent : colorScheme.divider,
  103. ),
  104. ),
  105. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  106. children: [
  107. WisText(
  108. item?.name ?? '--',
  109. color: colorScheme.mainTitle,
  110. size: 16.pt,
  111. overflow: TextOverflow.ellipsis,
  112. ).asFlexible(flex: 1),
  113. Row(
  114. children: [
  115. Image(
  116. image: AssetList.$tz_png_image,
  117. width: 6.pt,
  118. height: 12.pt,
  119. ),
  120. SizedBox(width: 15.pt),
  121. ],
  122. )
  123. ],
  124. ).asFlexible(flex: 1),
  125. ],
  126. );
  127. }
  128. }