anchor.diff:    }
   }
   
  -class CarouselFlowDelegate extends FlowDelegate {
  -  CarouselFlowDelegate({
  -    required this.viewportOffset,
  -    required this.filtersPerScreen,
  -  }) : super(repaint: viewportOffset);
  -
  -  final ViewportOffset viewportOffset;
  -  final int filtersPerScreen;
  -
  -  @override
  -  void paintChildren(FlowPaintingContext context) {
  -    final count = context.childCount;
  -
  -    // All available painting width
  -    final size = context.size.width;
  -
  -    // The distance that a single item "page" takes up from the perspective
  -    // of the scroll paging system. We also use this size for the width and
  -    // height of a single item.
  -    final itemExtent = size / filtersPerScreen;
  -
  -    // The current scroll position expressed as an item fraction, e.g., 0.0,
  -    // or 1.0, or 1.3, or 2.9, etc. A value of 1.3 indicates that item at
  -    // index 1 is active, and the user has scrolled 30% towards the item at
  -    // index 2.
  -    final active = viewportOffset.pixels / itemExtent;
  -
  -    // Index of the first item we need to paint at this moment.
  -    // At most, we paint 3 items to the left of the active item.
  -    final min = math.max(0, active.floor() - 3).toInt();
  -
  -    // Index of the last item we need to paint at this moment.
  -    // At most, we paint 3 items to the right of the active item.
  -    final max = math.min(count - 1, active.ceil() + 3).toInt();
  -
  -    // Generate transforms for the visible items and sort by distance.
  -    for (var index = min; index <= max; index++) {
  -      final itemXFromCenter = itemExtent * index - viewportOffset.pixels;
  -      final percentFromCenter = 1.0 - (itemXFromCenter / (size / 2)).abs();
  -      final itemScale = 0.5 + (percentFromCenter * 0.5);
  -      final opacity = 0.25 + (percentFromCenter * 0.75);
  -
  -      final itemTransform = Matrix4.identity()
  -        ..translate((size - itemExtent) / 2)
  -        ..translate(itemXFromCenter)
  -        ..translate(itemExtent / 2, itemExtent / 2)
  -        ..multiply(Matrix4.diagonal3Values(itemScale, itemScale, 1.0))
  -        ..translate(-itemExtent / 2, -itemExtent / 2);
  -
  -      context.paintChild(
  -        index,
  -        transform: itemTransform,
  -        opacity: opacity,
  -      );
  -    }
  -  }
  -
  -  @override
  -  bool shouldRepaint(covariant CarouselFlowDelegate oldDelegate) {
  -    return oldDelegate.viewportOffset != viewportOffset;
  -  }
  -}
  -
   @immutable
   class FilterItem extends StatelessWidget {
     FilterItem({
  
positive.code: 
    void _onPageChanged() {
      final page = (_controller.page ?? 0).round();
      if (page != _page) {
        _page = page;
        widget.onFilterChanged(widget.filters[page]);
      }
    }
  
    void _onFilterTapped(int index) {
  
negative.code:             left: 0.0,
              right: 0.0,
              bottom: 0.0,
              child: FilterSelector(
                onFilterChanged: _onFilterChanged,
                filters: _filters,
              ),
            ),
          ],
        ),
  