Search packages, repositories and app categories

dismissible_carousel_viewpager cover
Package detailsv0.0.7

dismissible_carousel_viewpager

This is a view pager provides carousel effect and dismissal animation when page was removed.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
85
Likes
31
Pub points
160

Install package

flutter pub add dismissible_carousel_viewpager

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A Flutter package that implements a carousel-style ViewPager with smooth dismissal animations when pages are removed. It enhances user interaction by providing a visually engaging, swipeable interface with a parallax-like effect. Ideal for apps requiring dynamic content presentation with intuitive gesture-based navigation and removal of items. The package supports multiple platforms including Android, iOS, Web, macOS, Windows, and Linux, ensuring broad compatibility. It is designed to be lightweight and easy to integrate into existing Flutter projects.

Use cases

  • Interactive content sliders
  • Swipe-to-dismiss galleries
  • Dynamic card-based interfaces
  • E-commerce product carousels
  • User onboarding flows
  • Media browsing experiences

Key features

  • Carousel effect with parallax
  • Smooth dismissal animations
  • Gesture-driven page removal
  • Cross-platform support
  • Easy integration with Flutter
  • Customizable transition effects

Suitable for

  • Developers building interactive UIs
  • Apps with swipeable content
  • Designers seeking visual polish
  • Mobile-first applications
  • Web and desktop Flutter apps
  • Projects requiring intuitive gestures

Considerations

  • May require performance tuning for large datasets
  • Limited customization for complex animations
  • Not optimized for very high-frequency updates
  • Best suited for moderate-sized content lists
  • Requires careful handling of state during dismissal
  • Depends on underlying ViewPager implementation stability

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

This is a view pager provides carousel effect and dismissal animation when page was removed.

Features

  • Dismissal animation
Fade out & slide out Fade out & scale Fade out & circular hide
dismissal_fade_slide_out dismissal_fade_scale dismissal_fade_circular_hide
  • Carousel effect
Horizontal Vertical
base_usage_horizontal base_usage_vertical

Web Live demo

This an example app of this plugin of web version.

https://zyzdev.github.io/dismissible_carousel_viewpager

Usage

More detail of usage see /example app.

Base usage:

More detail, please run demo Base Usage at /example app.

DismissibleCarouselViewPager(
  viewportFraction: 0.5,
  besidePageScale: 0.8,
  itemBuilder: (context, index) {
    return Container(
      alignment: Alignment.center,
      color: index.isEven
      ? Colors.blueAccent.withOpacity(0.1)
      : Colors.deepPurpleAccent.withOpacity(0.1),
      child: Text("Item:$index"),
    ); 
  },
  itemCount: 100,
);
Dismissal animation

More detail please run demo Dismissal Usage at /example app.

dismissible_carousel_viewpager provides several kinds of animation(fade out, slide out, scale and circular hide) to make dismissal animation.

You can combine them to make your own style of dismissal animation.

Note

The dismissal animation base on AnimatedSwitcher.

Remember add key to the page widget that created by DismissibleCarouselViewPager.itemBuilder.

I recommend using the data that preparing to create page widget to create Key("$data"), ValueKey(data) or ObjectKey(data) for the page widget.

####example:


late final List<int> _item = List.generate(1000, (index) => index);

DismissibleCarouselViewPager(
  itemCount: _item.length,
  itemBuilder: (context, index) {
    Object data = _item[index];
    return Container(
      // must add key
      key: Key("$data"),
      //key: ValueKey(data),
      //key: ObjectKey(data),
      alignment: Alignment.center,
      color: Colors.grey.withOpacity(0.1),
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
        Expanded(
          child: Container(
            alignment: Alignment.bottomCenter,
            child: Text("Item:$data"),
          ),
        ),
        Expanded(
          child: IconButton(
            icon: const Icon(Icons.delete),
            onPressed: () {
                setState(() {
                  _item.remove(data);
                });
              },
            ),
          ),
        ],
      ),
    );
  },
  dismissalConfig: DismissalConfig(
    dismissalTypes: [
      DismissalType.fadeOut(),
      DismissalType.slideOut(),
    ],
  ),
);

Categories

Source repository

Projects using this package

No data available yet.