A flutter carousel widget, support infinite scroll, and custom child widget.

Overview

carousel_slider

A carousel slider widget.

Features

  • Infinite scroll
  • Custom child widgets
  • Auto play

Supported platforms

  • Flutter Android
  • Flutter iOS
  • Flutter web
  • Flutter desktop

Live preview

https://serenader2014.github.io/flutter_carousel_slider/#/

Note: this page is built with flutter-web. For a better user experience, please use a mobile device to open this link.

Installation

Add carousel_slider: ^3.0.0 to your pubspec.yaml dependencies. And import it:

import 'package:carousel_slider/carousel_slider.dart';

How to use

Simply create a CarouselSlider widget, and pass the required params:

CarouselSlider(
  options: CarouselOptions(height: 400.0),
  items: [1,2,3,4,5].map((i) {
    return Builder(
      builder: (BuildContext context) {
        return Container(
          width: MediaQuery.of(context).size.width,
          margin: EdgeInsets.symmetric(horizontal: 5.0),
          decoration: BoxDecoration(
            color: Colors.amber
          ),
          child: Text('text $i', style: TextStyle(fontSize: 16.0),)
        );
      },
    );
  }).toList(),
)

Params

CarouselSlider(
   items: items,
   options: CarouselOptions(
      height: 400,
      aspectRatio: 16/9,
      viewportFraction: 0.8,
      initialPage: 0,
      enableInfiniteScroll: true,
      reverse: false,
      autoPlay: true,
      autoPlayInterval: Duration(seconds: 3),
      autoPlayAnimationDuration: Duration(milliseconds: 800),
      autoPlayCurve: Curves.fastOutSlowIn,
      enlargeCenterPage: true,
      onPageChanged: callbackFunction,
      scrollDirection: Axis.horizontal,
   )
 )

Since v2.0.0, you'll need to pass the options to CarouselOptions. For each option's usage you can refer to carousel_options.dart.

If you pass the height parameter, the aspectRatio parameter will be ignored.

Build item widgets on demand

This method will save memory by building items once it becomes necessary. This way they won't be built if they're not currently meant to be visible on screen. It can be used to build different child item widgets related to content or by item index.

CarouselSlider.builder(
  itemCount: 15,
  itemBuilder: (BuildContext context, int itemIndex) =>
    Container(
      child: Text(itemIndex.toString()),
    ),
)

Carousel controller

In order to manually control the pageview's position, you can create your own CarouselController, and pass it to CarouselSlider. Then you can use the CarouselController instance to manipulate the position.

class CarouselDemo extends StatelessWidget {
  CarouselController buttonCarouselController = CarouselController();

 @override
  Widget build(BuildContext context) => Column(
    children: <Widget>[
      CarouselSlider(
        items: child,
        carouselController: buttonCarouselController,
        options: CarouselOptions(
          autoPlay: false,
          enlargeCenterPage: true,
          viewportFraction: 0.9,
          aspectRatio: 2.0,
          initialPage: 2,
        ),
      ),
      RaisedButton(
        onPressed: () => buttonCarouselController.nextPage(
            duration: Duration(milliseconds: 300), curve: Curves.linear),
        child: Text('→'),
      )
    ]
  );
}

CarouselController methods

.nextPage({Duration duration, Curve curve})

Animate to the next page

.previousPage({Duration duration, Curve curve})

Animate to the previous page

.jumpToPage(int page)

Jump to the given page.

.animateToPage(int page, {Duration duration, Curve curve})

Animate to the given page.

Screenshot

Basic text carousel demo:

simple

Basic image carousel demo:

image

A more complicated image carousel slider demo:

complicated image

Fullscreen image carousel slider demo:

fullscreen

Image carousel slider with custom indicator demo:

indicator

Custom CarouselController and manually control the pageview position demo:

manual

Vertical carousel slider demo:

vertical

Simple on-demand image carousel slider, with image auto prefetch demo:

prefetch

No infinite scroll demo:

noloop

All screenshots above can be found at the example project.

License

MIT

Issues
  • Possible to load x images in advance to cache?

    Possible to load x images in advance to cache?

    When building item widgets on demand, is it possible to load x number of widgets in advance? ie, with an image slider, have the next two images loading into cache while still offscreen.

    opened by guit4eva 18
  • Flutter web support?

    Flutter web support?

    Anytime soon?

    Until then, here is my fork with dependencies fixed. I also removed the examples since they don't work anyway.

    https://github.com/CiriousJoker/flutter_carousel_slider

    opened by CiriousJoker 18
  • Remove Center from each child

    Remove Center from each child

    The plugin is forcing a center widget in each of its elements, constraining the application of this plugin.

    E.g If i want the carousel to have the image at top of the screen it would be almost impossible because of this Center widget without using some obscure hacky stuff ;)

    There is some way to don't force this behavior in the carousel?

    opened by qaniel 15
  • Add feature to pause auto play when user input is detected

    Add feature to pause auto play when user input is detected

    Added a variable pauseOnUserImput which takes a Duration. If autoPlay is set to true and pauseOnUserInput is not null, the PageView will be wrapped in a GestureDetector listening for pan gestures.

    Also did some minor consistency changes, i.e. Hard typed a few untyped values and removed the 'new' keywords. Almost all values were already hard typed and 'new' was used in only a few places. Now each line of code follows the same code convention.

    My linting options were different from the projects, so I did my best to follow the repo manually. Feel free to auto format the code with the previously used setting!

    Premise: When using a sliding carousel you might want the user to be able to interact with a slide. For now, the user can swipe back if he/she see something they like, but the carousel will keep iterating through its children. This forces the user to constantly swipe back to the page they were interacting with. For example, imagen a commercial display rolling adds in a waiting room. If something interest a person he or she might want to pause the slide to read all the information.

    This feature lets the developer implement a way too pause the auto play feature for a set amount of time, resetting each time new input is detected. This way the user can interact with the application and after they leave, it will go back to circling the widgets.

    opened by joelbrostrom 14
  • How to pause auto play?

    How to pause auto play?

    Hi

    How can we pause autoplay so that while carousel is out of screen or to say out of visibility it will automatically pause or any method to pause it....?

    opened by LoveAndroDev 13
  • Add toggle item loop feature

    Add toggle item loop feature

    By popular demand I created a simple bool, loopItems, when set to false will reduce the item count to items.count.

    This results in a static length page viewer that still retains all the other benefits of this library (animations, buttons, autoplay etc...).

    I also added comments to this and the vertical scroll feature i rebased against. I realized now that it still have a PR open, but I added some info about it in the Readme and change-log.

    I suggest we add the features together and bump the version code to 1.2.0 (major.minor.patch) insteadof 1.2.0 and then 1.3.0 imminently after.

    opened by joelbrostrom 12
  • Non-looping setting

    Non-looping setting

    Is there a way to prevent the carousel from looping around to the start?

    In other words - if I have 3 items, I want to prevent the user from sliding past the third item. They would need to swipe the other direction to get back to the first item.

    I love the plugin but I want to use it for a set of cards that someone can swipe through and it would make more sense to have the user swipe back and forth if there are only 2 cards.

    feature 
    opened by brettpappas 11
  • onPageChanged with manual reason is called randomly while using carouselController

    onPageChanged with manual reason is called randomly while using carouselController

    The issue isn't easy to reproduce. I'm changing the page using carouselController. Also allowing user to change page manually. Sometimes when I change the carousel to an item. _carouselPageChanged called to a random index (I guess an item between current item and next item) with reason manual.

    below is my _carouselPageChanged

      _carouselPageChanged(int index, CarouselPageChangedReason reason) {
        if (reason != CarouselPageChangedReason.manual) return;
        final id = _ids[index];
        if (id != null) {
          // TODO FIX sometime called while carousel is animating to other item
          _handleItemChange(id);
        } else {
          // TODO handle unexpected error
        }
      }
    
    
    opened by MartinJLee 11
  • fix empty blink when controller.page is null on first render

    fix empty blink when controller.page is null on first render

    As reported on issue #41, it is possible to see an empty blink when the first page is rendered.

    Instead of creating an empty Container before the re-render call from delayed future, we can use a NotificationListener and change the page position value based on the user interaction to re-render the widget with the correct value.

    No hack needed :)

    opened by haroldolivieri 11
  • Different layout after v2 update

    Different layout after v2 update

    Good morning, after I've update the library to the new v2.0.1 version I noticed a different layout in the carousel using the same code. It seems that the gap/blank space between image has been increased. v1.4.1:

    CarouselSlider.builder(
                      autoPlay: true,
                      pauseAutoPlayOnTouch: const Duration(seconds: 10),
                      enlargeCenterPage: true,
                      aspectRatio: 2.0,
                      itemCount: _tourImages.length,
                      itemBuilder: (BuildContext context, int itemIndex) =>
                          ClipRRect(
                        borderRadius: BorderRadius.all(Radius.circular(12.0)),
                        child: CachedNetworkImage(
                          imgUrl: _tourImages[itemIndex],
                          canShowFullScrenn: true,
                        ),
                      ),
                    ),
    

    image

    v2.0.1:

    CarouselSlider.builder(
                      options: CarouselOptions(
                        autoPlay: true,
                        enlargeCenterPage: true,
                        aspectRatio: 2.0,
                      ),
                      itemCount: _tourImages.length,
                      itemBuilder: (BuildContext context, int itemIndex) =>
                          ClipRRect(
                        borderRadius: BorderRadius.all(Radius.circular(12.0)),
                        child: CachedNetworkImage(
                          imgUrl: _tourImages[itemIndex],
                          canShowFullScrenn: true,
                        ),
                      ),
                    ),
    

    image

    Is it possible to reduce it? Is it an expected behaviour?

    opened by enricobenedos 10
  • [Question] Complicated Image Slider with no Padding in between

    [Question] Complicated Image Slider with no Padding in between

    I want to implement this kind of style with no padding between the items but the enlargeCenterPage should be true still. I want the side items should be behind the selected Item in the slider.

    preload l

    opened by sultanzada 0
  • An option for viewportFraction to be visible for only one side.

    An option for viewportFraction to be visible for only one side.

    CarouselSlider(
      options: CarouselOptions(
        height: 124.0,
        autoPlay: true,
        aspectRatio: 16 / 9,
        viewportFraction: 0.8,
        onlyRightViewportVisible: true, // <----- Add something like this.
        scrollPhysics:
            const NeverScrollableScrollPhysics(),
        autoPlayInterval: const Duration(seconds: 5),
      ),
      items: _getItems(banners.data.home),
    )
    

    What I get image

    What I want image

    opened by nehal076 0
  • Issue and fix

    Issue and fix

    • the type of carouselController is of dynamic in CarouselSlider
    • fixed the type so that only proper controller type get pass
    opened by darkCavalier11 0
  • Why simple CarouselSlider keeps rebuilding?

    Why simple CarouselSlider keeps rebuilding?

    Whenever an item gets changed (manually or automatically), the next item (StatelessWidget) gets rebuilt - even though I initialized the list of items once in the initState()

    How can I prevent that from happening?

    opened by omrid594 1
  • Disable pausing the scroll

    Disable pausing the scroll

    Hi,

    Now, whenever the user scrolls, it scrolls by one item only either left or right. Is there any way to just let it scroll, instead of pausing the scroll? Something similar to RecyclerView in Android. This is to be for manual scroll.

    Thank you.

    opened by khaledkhj 3
  • [FIX] Can't swipe on web with Flutter 2.5

    [FIX] Can't swipe on web with Flutter 2.5

    Just a pull request of the #305 issue

    opened by William-Karkegi 1
  • exposed clipBehavior in CarouselOptions

    exposed clipBehavior in CarouselOptions

    null

    opened by camillobucciarelli 3
  • Block user swipe

    Block user swipe

    Hello there! I'm wondering if there's a way to avoid the slider change on swipe because i'd like to control it programmatically with the controller.

    thx

    opened by tattivitorino 1
  • RangeError (end): Invalid value: Not in inclusive range 0..22: 50

    RangeError (end): Invalid value: Not in inclusive range 0..22: 50

    flutter: [2021-10-06 10:06:41.702176 | Catcher | INFO] ------- STACK TRACE -------
    flutter: [2021-10-06 10:06:41.705496 | Catcher | INFO] #0      RangeError.checkValidRange (dart:core/errors.dart:338:9)
    flutter: [2021-10-06 10:06:41.706480 | Catcher | INFO] #1      _StringBase.substring (dart:core-patch/string_patch.dart:393:27)
    flutter: [2021-10-06 10:06:41.707220 | Catcher | INFO] #2      _DirectionViewState.build.<anonymous closure>.<anonymous closure> (package:thalias/app/modules/direction/views/direction_view.dart:106:68)
    flutter: [2021-10-06 10:06:41.707537 | Catcher | INFO] #3      MappedListIterable.elementAt (dart:_internal/iterable.dart:413:31)
    flutter: [2021-10-06 10:06:41.708436 | Catcher | INFO] #4      ListIterator.moveNext (dart:_internal/iterable.dart:342:26)
    flutter: [2021-10-06 10:06:41.709945 | Catcher | INFO] #5      new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:188:27)
    flutter: [2021-10-06 10:06:41.711534 | Catcher | INFO] #6      new _GrowableList.of (dart:core-patch/growable_array.dart:150:28)
    flutter: [2021-10-06 10:06:41.712460 | Catcher | INFO] #7      new List.of (dart:core-patch/array_patch.dart:50:28)
    flutter: [2021-10-06 10:06:41.712834 | Catcher | INFO] #8      ListIterable.toList (dart:_internal/iterable.dart:213:44)
    flutter: [2021-10-06 10:06:41.713385 | Catcher | INFO] #9      _DirectionViewState.build.<anonymous closure> (package:thalias/app/modules/direction/views/direction_view.dart:141:24)
    flutter: [2021-10-06 10:06:41.713823 | Catcher | INFO] #10     ConditionalBuilder.build (package:thalias/packages/conditional_builder.dart:22:16)
    flutter: [2021-10-06 10:06:41.714426 | Catcher | INFO] #11     StatelessElement.build (package:flutter/src/widgets/framework.dart:4739:28)
    flutter: [2021-10-06 10:06:41.715024 | Catcher | INFO] #12     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4665:15)
    flutter: [2021-10-06 10:06:41.715575 | Catcher | INFO] #13     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.716122 | Catcher | INFO] #14     StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
    flutter: [2021-10-06 10:06:41.716855 | Catcher | INFO] #15     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.717163 | Catcher | INFO] #16     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5700:32)
    flutter: [2021-10-06 10:06:41.717563 | Catcher | INFO] #17     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6356:17)
    flutter: [2021-10-06 10:06:41.717894 | Catcher | INFO] #18     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.718366 | Catcher | INFO] #19     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.718663 | Catcher | INFO] #20     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.719157 | Catcher | INFO] #21     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
    flutter: [2021-10-06 10:06:41.719597 | Catcher | INFO] #22     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.720181 | Catcher | INFO] #23     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
    flutter: [2021-10-06 10:06:41.720816 | Catcher | INFO] #24     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.721264 | Catcher | INFO] #25     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.721813 | Catcher | INFO] #26     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.722329 | Catcher | INFO] #27     StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
    flutter: [2021-10-06 10:06:41.722798 | Catcher | INFO] #28     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.723088 | Catcher | INFO] #29     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.723711 | Catcher | INFO] #30     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.724267 | Catcher | INFO] #31     StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
    flutter: [2021-10-06 10:06:41.724615 | Catcher | INFO] #32     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.724970 | Catcher | INFO] #33     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.725924 | Catcher | INFO] #34     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.726552 | Catcher | INFO] #35     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
    flutter: [2021-10-06 10:06:41.728238 | Catcher | INFO] #36     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.729532 | Catcher | INFO] #37     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.730307 | Catcher | INFO] #38     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.730623 | Catcher | INFO] #39     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
    flutter: [2021-10-06 10:06:41.731381 | Catcher | INFO] #40     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.731928 | Catcher | INFO] #41     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5700:32)
    flutter: [2021-10-06 10:06:41.732470 | Catcher | INFO] #42     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6356:17)
    flutter: [2021-10-06 10:06:41.733154 | Catcher | INFO] #43     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.733464 | Catcher | INFO] #44     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.734061 | Catcher | INFO] #45     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
    flutter: [2021-10-06 10:06:41.734644 | Catcher | INFO] #46     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.735154 | Catcher | INFO] #47     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
    flutter: [2021-10-06 10:06:41.735800 | Catcher | INFO] #48     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.736189 | Catcher | INFO] #49     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.737175 | Catcher | INFO] #50     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.737935 | Catcher | INFO] #51     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
    flutter: [2021-10-06 10:06:41.738667 | Catcher | INFO] #52     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.739786 | Catcher | INFO] #53     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.740430 | Catcher | INFO] #54     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
    flutter: [2021-10-06 10:06:41.740928 | Catcher | INFO] #55     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.741198 | Catcher | INFO] #56     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
    flutter: [2021-10-06 10:06:41.741713 | Catcher | INFO] #57     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.742635 | Catcher | INFO] #58     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
    flutter: [2021-10-06 10:06:41.742928 | Catcher | INFO] #59     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.743864 | Catcher | INFO] #60     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.745299 | Catcher | INFO] #61     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.745685 | Catcher | INFO] #62     StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
    flutter: [2021-10-06 10:06:41.746150 | Catcher | INFO] #63     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.747052 | Catcher | INFO] #64     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6202:14)
    flutter: [2021-10-06 10:06:41.747456 | Catcher | INFO] #65     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.747966 | Catcher | INFO] #66     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.748608 | Catcher | INFO] #67     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
    flutter: [2021-10-06 10:06:41.749169 | Catcher | INFO] #68     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.749645 | Catcher | INFO] #69     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
    flutter: [2021-10-06 10:06:41.750226 | Catcher | INFO] #70     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.750780 | Catcher | INFO] #71     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.751263 | Catcher | INFO] #72     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
    flutter: [2021-10-06 10:06:41.751580 | Catcher | INFO] #73     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.752360 | Catcher | INFO] #74     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
    flutter: [2021-10-06 10:06:41.753155 | Catcher | INFO] #75     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.753795 | Catcher | INFO] #76     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.754402 | Catcher | INFO] #77     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.754825 | Catcher | INFO] #78     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
    flutter: [2021-10-06 10:06:41.755505 | Catcher | INFO] #79     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.755808 | Catcher | INFO] #80     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.756377 | Catcher | INFO] #81     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.756991 | Catcher | INFO] #82     StatelessElement.update (package:flutter/src/widgets/framework.dart:4746:5)
    flutter: [2021-10-06 10:06:41.757619 | Catcher | INFO] #83     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.758072 | Catcher | INFO] #84     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.758553 | Catcher | INFO] #85     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
    flutter: [2021-10-06 10:06:41.759750 | Catcher | INFO] #86     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.761233 | Catcher | INFO] #87     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
    flutter: [2021-10-06 10:06:41.762126 | Catcher | INFO] #88     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.762620 | Catcher | INFO] #89     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.763270 | Catcher | INFO] #90     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.763657 | Catcher | INFO] #91     ProxyElement.update (package:flutter/src/widgets/framework.dart:5020:5)
    flutter: [2021-10-06 10:06:41.764002 | Catcher | INFO] #92     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.764882 | Catcher | INFO] #93     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.766186 | Catcher | INFO] #94     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
    flutter: [2021-10-06 10:06:41.766503 | Catcher | INFO] #95     Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.767009 | Catcher | INFO] #96     StatefulElement.update (package:flutter/src/widgets/framework.dart:4872:5)
    flutter: [2021-10-06 10:06:41.767290 | Catcher | INFO] #97     Element.updateChild (package:flutter/src/widgets/framework.dart:3412:15)
    flutter: [2021-10-06 10:06:41.767790 | Catcher | INFO] #98     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4690:16)
    flutter: [2021-10-06 10:06:41.768204 | Catcher | INFO] #99     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4840:11)
    flutter: [2021-10-06 10:06:41.768653 | Catcher | INFO] #100    Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)
    flutter: [2021-10-06 10:06:41.769033 | Catcher | INFO] #101    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2620:33)
    flutter: [2021-10-06 10:06:41.769454 | Catcher | INFO] #102    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
    flutter: [2021-10-06 10:06:41.769712 | Catcher | INFO] #103    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:319:5)
    flutter: [2021-10-06 10:06:41.770252 | Catcher | INFO] #104    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1143:15)
    flutter: [2021-10-06 10:06:41.770652 | Catcher | INFO] #105    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1080:9)
    flutter: [2021-10-06 10:06:41.771030 | Catcher | INFO] #106    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:996:5)
    flutter: [2021-10-06 10:06:41.771455 | Catcher | INFO] #107    _rootRun (dart:async/zone.dart:1428:13)
    flutter: [2021-10-06 10:06:41.771908 | Catcher | INFO] #108    _CustomZone.run (dart:async/zone.dart:1328:19)
    flutter: [2021-10-06 10:06:41.772160 | Catcher | INFO] #109    _CustomZone.runGuarded (dart:async/zone.dart:1236:7)
    flutter: [2021-10-06 10:06:41.772490 | Catcher | INFO] #110    _invoke (dart:ui/hooks.dart:166:10)
    flutter: [2021-10-06 10:06:41.773231 | Catcher | INFO] #111    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:270:5)
    flutter: [2021-10-06 10:06:41.774228 | Catcher | INFO] #112    _drawFrame (dart:ui/hooks.dart:129:31)
    
    
    opened by limsocheat 1
Releases(1.2.0)
  • 1.2.0(Mar 18, 2019)

    Introducing two new features, Vertical scroll and enable/disable infinite scroll .

    Pass an Axis as the scrollDirection argument to specify direction.
    Use enableInfiniteScroll to toggle between finite and infinite scroll mode. When enableInfiniteScroll is set to false the carousel will not scroll past the first or last item.

    Source code(tar.gz)
    Source code(zip)
Crop any widget/image in Android, iOS, Web and Desktop with fancy and customizable UI, in pure Dart code.

crop A Flutter package for cropping any widget, not only images. This package is entirely written in Dart and supports Android, iOS, Web and Desktop.

Mahdi 169 Nov 12, 2021
A Flutter widget that paints an image and moves it at a slower speed than the main scrolling content.

A Flutter widget that paints an image and moves it at a slower speed than the main scrolling content. Installation Add dependency to your pubspec.yaml

Anatoly Pulyaevskiy 238 Oct 27, 2021
SVG parsing, rendering, and widget library for Flutter

flutter_svg Draw SVG (and some Android VectorDrawable (XML)) files on a Flutter Widget. Getting Started This is a Dart-native rendering library. Issue

Dan Field 1.3k Dec 1, 2021
A flutter plugin which provides Crop Widget for cropping images.

A flutter plugin which provides Crop Widget for cropping images. crop_your_image provides only minimum UI for deciding cropping area inside images. Other UI parts, such as "Crop" button or "Change Aspect Ratio" button, need to be prepared by each app developers.

Chooyan 55 Nov 8, 2021
A Flutter plugin for Android and iOS supports cropping images

Image Cropper A Flutter plugin for Android and iOS supports cropping images. This plugin is based on two different native libraries so it comes with d

HungHD 809 Nov 21, 2021
Download, cache and show images in a flutter app

Cached network image A flutter library to show images from the internet and keep them in the cache directory. How to use The CachedNetworkImage can be

Baseflow 1.9k Nov 26, 2021
Flutter plugin that allows you to display multi image picker on iOS and Android. 👌🔝🎉

IMPORTANT: This repository has been archived and no longer mantained. As I don't have time anymore to work on the package it became very outdated. For

Radoslav Vitanov 898 Apr 29, 2021
Use lottie in flutter for both iOS and Android

flutter_lottie Use Lottie in Flutter. Supports both iOS and Android using lottie-ios and lottie-android Current Status Supports most features that bot

Cameron Smith 163 Jul 2, 2021
A simple and easy flutter demo to crop image

flutter_image_crop A simple demo to crop image on flutter easily. A Chinese version of this document can be found here Flutter_image_crop Plugin will

路小飞 3 Jul 8, 2021
Multiavatar is a free and open-source multicultural avatar maker.

Flutter Wrapper for Multiavatar Multiavatar is a multicultural avatar maker. Multiavatar represents people from multiple races, multiple cultures, multiple age groups, multiple worldviews and walks of life.

Iheb Briki 54 Oct 24, 2021
Minimal Unsplash Android App to easily search and download images

Minimal Unsplash Android App to easily search and download images

Yash Garg 11 Sep 28, 2021
A Flutter package for manipulating bitmaps

Flutter Bitmap A minimalist Flutter package to perform fast bitmaps operations. The focus here is to provide a cool bitmap manipulation interface. The

Renan 126 Nov 8, 2021
Image caching system for flutter

image_cacheing image_cacheing is an image caching package. It is currently tested for Android applications. ImageCacheing widget takes url as a param.

evolving_kid 3 May 31, 2021
scroll to index with fixed/variable row height inside Flutter scrollable widget

scroll-to-index This package provides the scroll to index mechanism for fixed/variable row height for Flutter scrollable widget. Getting Started In th

Quire 320 Nov 23, 2021
A wrapper to show a scroll to top prompt to the user on scrollable widgets.

flutter_scroll_to_top A wrapper to show a scroll to top prompt to the user on scrollable widgets. Installing Add the following dependency to your pubs

Naman Shergill 10 Nov 26, 2021
A Very Good Infinite List Widget created by Very Good Ventures. Great for activity feeds, news feeds, etc. 🦄

InfiniteList comes in handy when building features like activity feeds, news feeds, or anywhere else where you need to lazily fetch and render content for users to consume.

Very Good Open Source 44 Nov 18, 2021
Multi directional infinite list with Sticky headers for Flutter applications

Sticky Infinite List Infinite list with sticky headers. This package was made in order to make possible render infinite list in both directions with s

Denis Beketsky 234 Nov 28, 2021
Flutter Infinite ListView - ListView with items that can be scrolled infinitely in both directions. Maintainer: @slightfoot

Flutter Infinite ListView ListView with items that can be scrolled infinitely in both directions. Quick Usage Replace your existing ListView with Infi

Flutter Community 206 Nov 19, 2021
The best swiper for flutter , with multiple layouts, infinite loop. Compatible with Android & iOS.

The best swiper for flutter , with multiple layouts, infinite loop. Compatible with Android & iOS.

null 3.2k Nov 24, 2021
(Complete flutter application) Exam and training app as social media, prepared with Firebase backend services, Bloc State management, Singleton design pattern, Unit and widget tests, firebase mocking, Custom local libraries, etc.

(Complete flutter application) Exam and training app as social media, prepared with Firebase backend services, Bloc State management, Singleton design pattern, Unit and widget tests, firebase mocking, Custom local libraries, etc.

Ismael Shakverdiev 48 Nov 25, 2021
A material design slider and range slider with rtl support and lots of options and customization for flutter

flutter_xlider (Flutter Slider) A material design slider and range slider, horizontal and vertical, with rtl support and lots of options and customiza

null 330 Nov 26, 2021
:bug: Flutter debug helper widget with common and custom actions

Debug Friend Flutter debug helper widget with common and custom actions This helps you reduce the development and testing time of new features Show so

Stanislav Ilin 32 Sep 26, 2021
Widget for displaying waves with custom color, duration, floating and blur effects.

Wave Widget for displaying waves with custom color, duration, floating and blur effects. Getting Started WaveWidget( config: CustomConfig(

Protoss 732 Nov 27, 2021
Custom widget for Flutter

Flushbar Use this package if you need more customization when notifying your user. For Android developers, it is made to substitute toasts and snackba

Andre Haueisen 814 Nov 22, 2021
Flutter application to demonstrate use of mPin Animation with custom widget.

Flutter mPin Animation | Custom Widget mPin Widget to accept user input with nice animation. Tutorial ???????????? Flutter mPin Animation Tutorial ||

Afzal Ali 10 Jul 28, 2021
A simple widget for animating a set of images with full custom controls as an alternative to using a GIF file.

image_sequence_animator A simple widget for animating a set of images with full custom controls as an alternative to using a GIF file. If you have a G

AliYigitBireroglu 100 Nov 26, 2021
Flutter plugin that can support audio recording and level metering

flutter_audio_recorder English | 简体中文 Flutter Audio Record Plugin that supports Record Pause Resume Stop and provide access to audio level metering pr

RMBR ONE 93 Nov 10, 2021
Flutter package for makes it easy to integrate dialogflow and support dialogflow v2

Dialogflow v1 & v2 for Flutter apps. ❤️ Star ❤️ the repo to support the project. Thanks! A new Flutter package. Example Awesome Tutorials Flutter and

Victor Alfonso Rodas Oña 186 Nov 18, 2021
Okan YILDIRIM 34 Nov 19, 2021