menu_grid.dart 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. * @Author : WuWei
  3. * @LastEditors : WuWei
  4. * @Date : 2022-02-23 14:23:37
  5. * @LastEditTime : 2023-03-29 17:56:07
  6. * @Description : Do not edit
  7. */
  8. import 'package:app_package/app_package.dart';
  9. import 'package:flutter/material.dart';
  10. import 'package:wisdom_cli/wisdom_cli.dart';
  11. class WisDynamicMenuGrid extends StatelessWidget {
  12. const WisDynamicMenuGrid({
  13. Key? key,
  14. this.title,
  15. this.list,
  16. this.type,
  17. this.toRoutes,
  18. }) : super(key: key);
  19. final String? title;
  20. final List? list;
  21. final String? type;
  22. final Function(dynamic item, dynamic type)? toRoutes;
  23. @override
  24. Widget build(BuildContext context) {
  25. final colorScheme = WTheme.of(context).colorScheme;
  26. return WisCard(
  27. isSliver: false,
  28. elevation: 0,
  29. margin: EdgeInsets.only(
  30. left: 15.pt,
  31. right: 15.pt,
  32. bottom: 10.pt,
  33. ),
  34. child: Wisdom.column(
  35. margin: EdgeInsets.only(bottom: 8.pt),
  36. crossAxisAlignment: CrossAxisAlignment.stretch,
  37. children: <Widget>[
  38. Wisdom.row(
  39. padding: EdgeInsets.only(top: 15.pt, left: 15.pt),
  40. children: <Widget>[
  41. // WisActiveness.vertical(borderRadius: BorderRadius.circular(0)),
  42. WisText(
  43. '$title',
  44. color: colorScheme.mainTitle,
  45. weight: FontWeight.w600,
  46. size: 17.pt,
  47. overflow: TextOverflow.ellipsis,
  48. ).asFlexible(flex: 1),
  49. ],
  50. ),
  51. if (list == null || list!.length == 0)
  52. Padding(
  53. padding: EdgeInsets.symmetric(vertical: 30.pt),
  54. child: Text(
  55. '暂无数据',
  56. textAlign: TextAlign.center,
  57. style: TextStyle(color: colorScheme.minor),
  58. ),
  59. )
  60. else
  61. Wrap(
  62. alignment: WrapAlignment.start,
  63. children: <Widget>[
  64. for (var item in list!)
  65. Container(
  66. width: 85.pt,
  67. margin: EdgeInsets.symmetric(vertical: 6.pt),
  68. child: Wisdom.column(
  69. onTap: () => toRoutes!(item, type),
  70. padding: EdgeInsets.all(4.pt),
  71. children: <Widget>[
  72. WImage.network(
  73. AppParseUtil.image(item?.icon),
  74. width: 44.pt,
  75. height: 44.pt,
  76. ),
  77. SizedBox(height: 5.pt),
  78. WisText(
  79. '${item?.name ?? '--'}',
  80. size: 12.pt,
  81. maxLines: 1,
  82. overflow: TextOverflow.ellipsis,
  83. ),
  84. ],
  85. ),
  86. ),
  87. ],
  88. ),
  89. ],
  90. ),
  91. );
  92. }
  93. }