Skip to content
Snippets Groups Projects
Select Git revision
  • master default
1 result

animated-stream-list

  • Clone with SSH
  • Clone with HTTPS
  • otsoaUnLoco's avatar
    otsoaUnLoco authored
    576da4e8
    History

    Animated Stream List

    Important

    Development has been taken over by Prem Adithya and is continued here:

    https://github.com/adithyaxx/animated-stream-list

    pub package

    A Flutter library to easily display a list with animated changes from a Stream<List<E>>.
    It's like StreamBuilder + ListView.Builder with animations.
    Taken inspiration from the Animated List Sample and Java-diff-utils

    // create tile view as the user is going to see it, attach any onClick callbacks etc. 
    Widget _createTile(String item, Animation<double> animation) {    
     return SizeTransition(      
        axis: Axis.vertical,      
        sizeFactor: animation,      
        child: const Text(item),    
      ); 
    }
    
    // what is going to be shown as the tile is being removed, usually same as above but without any 
    // onClick callbacks as, most likely, you don't want the user to interact with a removed view 
    Widget _createRemovedTile(String item, Animation<double> animation) {    
     return SizeTransition(      
        axis: Axis.vertical,      
        sizeFactor: animation,      
        child: const Text(item),    
      ); 
    }
    
    final Stream<List<String>> list = // get list from some source, like BLOC  
    final animatedView = AnimatedStreamList<String>(      
      streamList: list,      
      itemBuilder: (String item, int index, BuildContext context, Animation<double> animation) =>      
        _createTile(item, animation),      
      itemRemovedBuilder: (String item, int index, BuildContext context, Animation<double> animation) =>  
        _createRemovedTile(item, animation), 
      ); 
    } 

    Getting Started

    1. Add dependency to your pubspec.yaml

    dependencies:
      animated_stream_list: ^0.0.4

    2. Import it

    import 'package:animated_stream_list/animated_stream_list.dart';

    3. Use it. See the examples folder for an ... example.

    Parameters

    @required Stream<List<E>> streamList;  
    @required AnimatedStreamListItemBuilder<E> itemBuilder; 
    @required AnimatedStreamListItemBuilder<E> itemRemovedBuilder; 

    AnimatedStreamListItemBuilder<T> is just a function which builds a tile

    typedef Widget AnimatedStreamListItemBuilder<T>(
      T item,
      int index,
      BuildContext context,
      Animation<double> animation,
    ); 

    Options

    List<E> initialList;

    Initial list

    Equalizer equals; 

    Compares items for equality, by default it uses the == operator, it's critical this works properly.

    Equalizer is function, that, given two items of the same type, returns true if they are equal, false otherwise

    typedef bool Equalizer(dynamic item1, dynamic item2); 

    You can check the Animated List Documentation for the rest:

    Axis scrollDirection; 
    bool reverse; 
    ScrollController scrollController; 
    bool primary; 
    ScrollPhysics scrollPhysics; 
    bool shrinkWrap; 
    EdgeInsetsGeometry padding;