searchBannerHeader.dart 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import 'package:carousel_slider/carousel_slider.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_easyloading/flutter_easyloading.dart';
  4. import 'package:flutter_screenutil/flutter_screenutil.dart';
  5. import 'package:get/get.dart';
  6. import '../../../../../models/entities/Banners.dart';
  7. import '../../../../../services/homeAPI.dart';
  8. import 'headers.dart';
  9. class searchBannerHeader extends StatefulWidget {
  10. const searchBannerHeader({Key? key}) : super(key: key);
  11. @override
  12. State<searchBannerHeader> createState() => _searchBannerHeaderState();
  13. }
  14. class _searchBannerHeaderState extends State<searchBannerHeader> {
  15. List<Banners> bannerList = [];
  16. @override
  17. void initState() {
  18. super.initState();
  19. // final long= location.value!['longitude'].toString() + "," + location.value!['latitude'].toString();
  20. // print('location+$location,lolongglongng+$long');
  21. getHomeBanner('banner').then((value) {
  22. EasyLoading.show(status: '数据加载中...');
  23. setState(() {
  24. value.forEach((item) {
  25. bannerList.add(Banners.fromJson(item));
  26. });
  27. });
  28. EasyLoading.dismiss();
  29. });
  30. }
  31. @override
  32. Widget build(BuildContext context) {
  33. return Column(
  34. children: [
  35. SizedBox(
  36. child: TypeHeader(
  37. type: true,
  38. ),
  39. ),
  40. Container(
  41. margin: EdgeInsets.fromLTRB(0, 15, 0, 0),
  42. child: CarouselSlider(
  43. items: bannerList
  44. .map(
  45. (item) => GestureDetector(
  46. child: Center(
  47. child: Image.network(item.thumb.toString(),
  48. fit: BoxFit.cover, width: 350.w)),
  49. onTap: () {
  50. Get.toNamed("/ArticleInfo", arguments: {'newsId': 'c78e33988fbabee63154ca91e78dfc28'});
  51. })
  52. )
  53. .toList(),
  54. options: CarouselOptions(
  55. autoPlay: true,
  56. enlargeCenterPage: false,
  57. //图片中心放大
  58. viewportFraction: 1,
  59. //每个页面应占据的视口部分。默认为 0.8,这意味着每个页面填充 80% 的轮播。
  60. // aspectRatio: 1.6,//纵横比
  61. height: 214.w,
  62. initialPage: 1, //初始页
  63. ),
  64. ),
  65. ),
  66. ],
  67. );
  68. }
  69. }