You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.2KB

  1. import 'package:farm_tpf/presentation/custom_widgets/shimmer_image.dart';
  2. import 'package:flutter/material.dart';
  3. class WrapContentHozListView<T> extends StatefulWidget {
  4. List<T> list;
  5. IndexedWidgetBuilder itemBuilder;
  6. IndexedWidgetBuilder separatorBuilder;
  7. WrapContentHozListView({
  8. @required this.list,
  9. @required this.itemBuilder,
  10. this.separatorBuilder,
  11. });
  12. @override
  13. _WrapContentHozListViewState createState() => _WrapContentHozListViewState();
  14. }
  15. class _WrapContentHozListViewState extends State<WrapContentHozListView> {
  16. List<Widget> _generateItemWidgets() {
  17. List<Widget> items = [];
  18. for (int i = 0; i < widget.list.length; i++) {
  19. items.add(widget.itemBuilder(context, i));
  20. if (widget.separatorBuilder != null) {
  21. items.add(widget.separatorBuilder(context, i));
  22. }
  23. }
  24. return items;
  25. }
  26. @override
  27. Widget build(BuildContext context) {
  28. return SingleChildScrollView(
  29. scrollDirection: Axis.horizontal,
  30. physics: BouncingScrollPhysics(),
  31. child: Row(
  32. mainAxisAlignment: MainAxisAlignment.start,
  33. crossAxisAlignment: CrossAxisAlignment.start,
  34. children: _generateItemWidgets(),
  35. ),
  36. );
  37. }
  38. }