123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import 'package:carousel_slider/carousel_slider.dart';
  2. import 'package:farmer_client/pages/machinery/widgets/DefLayout.dart';
  3. import 'package:farmer_client/pages/machinery/widgets/RoundButton.dart';
  4. import 'package:flutter/widgets.dart';
  5. import 'package:flutter/material.dart';
  6. import 'package:flutter_screenutil/flutter_screenutil.dart';
  7. import 'package:farmer_client/widgets/ExtendContentList.dart';
  8. import '../../../../models/entities/CardInfo.dart';
  9. import '../../widgets/summary.dart';
  10. Widget page(
  11. {required BuildContext context,
  12. VoidCallback? handleClick,
  13. required String km,
  14. required CardInfo item,
  15. required List<BannerImageList> bnnerItem,
  16. required List<ContentImageList> contentItem}) {
  17. return DefLayout(
  18. head: CarouselSlider(
  19. items: bnnerItem
  20. .map((item) => Center(
  21. child: Image.network(item.url.toString(),
  22. fit: BoxFit.fitWidth, width: 370.w)))
  23. .toList(),
  24. options: CarouselOptions(
  25. autoPlay: true,
  26. enlargeCenterPage: false, //图片中心放大
  27. viewportFraction: 1, //每个页面应占据的视口部分。默认为 0.8,这意味着每个页面填充 80% 的轮播。
  28. // aspectRatio: 1.6,//纵横比
  29. height: 214.w,
  30. initialPage: 1, //初始页
  31. ),
  32. ),
  33. children: [
  34. DefLayout.card(
  35. top: DefLayout.headHeight - DefLayout.offset,
  36. padding:
  37. EdgeInsets.only(top: 45.w, left: 15.w, right: 15.w, bottom: 20.w),
  38. child: _content(context, handleClick, item, contentItem, km),
  39. )
  40. ]);
  41. }
  42. Widget _content(BuildContext context, VoidCallback? handleClick, CardInfo item,
  43. List<ContentImageList> contentItem, String km) {
  44. return ListView(
  45. children: [
  46. summary(item: item, km: km),
  47. _sectionHead('农机详情'),
  48. ExtendContentList(
  49. item: contentItem,
  50. ),
  51. SizedBox(
  52. height: 20.w,
  53. ),
  54. RoundButton(
  55. text: "预约",
  56. onPressed: handleClick,
  57. )
  58. ],
  59. );
  60. }
  61. Widget _sectionHead(String title) {
  62. Widget img = SizedBox(
  63. width: 16.w,
  64. height: 16.w,
  65. child: Image.asset('images/decorate.png'),
  66. );
  67. return Container(
  68. padding: EdgeInsets.fromLTRB(0, 20.w, 0, 20.w),
  69. child: Row(
  70. mainAxisAlignment: MainAxisAlignment.center,
  71. children: [
  72. img,
  73. SizedBox(width: 20.w),
  74. Text(
  75. title,
  76. style: TextStyle(
  77. fontSize: 16.sp,
  78. color: const Color(0xFF222222),
  79. fontWeight: FontWeight.w500),
  80. ),
  81. SizedBox(width: 20.w),
  82. img,
  83. ],
  84. ),
  85. );
  86. }