Skip to content

bosskmk/pluto_filtered_list

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 

PlutoFilteredList - v0.2.0

codecov


A List where filters can be applied to the List and elements can be accessed or modified in that state.


Pub.Dev

Check out how to install from the official distribution site.


Issue

Report any questions or errors.


Todo

  • Not implemented yet.
    • removeRange, fillRange, replaceRange.

Done

var list = FilteredList(initialList: [1, 2, 3, 4, 5]);
  • insert : If the filter is applied, the index at which the element is added is adjusted.
    list.setFilter((e) => e > 3); // [4, 5]
    list.insert(0, 35); // [35, 4, 5]
    
    list.setFilter(null); // [1, 2, 3, 35, 4, 5]
    list.insert(0, -1); // [-1, 1, 2, 3, 35, 4, 5]
  • removeAt : If the filter is applied, the index at which the element is removed is adjusted.
    list.setFilter((e) => e > 3); // [4, 5]
    list.removeAt(0); // [5]
    
    list.setFilter(null); // [1, 2, 3, 5]
    list.removeAt(0); // [2, 3, 5]
  • insertAll : If the filter is applied, the index at which the element is added is adjusted.
    list.setFilter((e) => e > 3); // [4, 5]
    list.insertAll(0, [35, 36, 37]); // [35, 36, 37, 4, 5]
    
    list.setFilter(null); // [1, 2, 3, 35, 36, 37, 4, 5]
    list.insertAll(0, [-1, -2, -3]); // [-1, -2, -3, 1, 2, 3, 35, 36, 37, 4, 5]
  • remove : If the filter has been applied, the element is removed from the range where the filter is applied.
    list.setFilter((e) => e > 3); // [4, 5]
    var removedThree = list.remove(3); // false
    var removedFour = list.remove(4); // true
    
    list.setFilter(null); // [1, 2, 3, 5]
    var removedThreeAgain = list.remove(3); // true
  • removeFromOriginal : Removes elements across the entire scope regardless of filter application.
    list.setFilter((e) => e > 3); // [4, 5]
    var removedThree = list.removeFromOriginal(3); // true
    var removedFour = list.removeFromOriginal(4); // true
    
    list.setFilter(null); // [1, 2, 5]
    var removedThreeAgain = list.removeFromOriginal(3); // false
  • removeWhere : If the filter has been applied, the element is removed from the range where the filter is applied.
  • removeWhereFromOriginal : Removes elements across the entire scope regardless of filter application.
  • retainWhere : If the filter has been applied, the element is retained from the range where the filter is applied.
  • retainWhereFromOriginal : Retains elements across the entire scope regardless of filter application.
  • clear : If the filter has been applied, the element is cleared from the range where the filter is applied.
  • clearFromOriginal : Clears elements across the entire scope.
  • removeLast : The last element is deleted while the filter is applied.
  • removeLastFromOriginal : Delete the last element from the entire list.
  • shuffle : Shuffles elements across the entire scope.

Example

/// Create an empty list.
var filteredList = FilteredList<String>();

/// Contains the methods of List.
/// add, remove, clear, where, ...
filteredList.add('one');

print(filteredList); // ['one']

filteredList.addAll(['two', 'three', 'four', 'five']);

print(filteredList); // ['one', 'two', 'three', 'four', 'five']

/// Set the filter.
/// Implement a callback function that returns a bool type.
/// The example filters a string of length 4, as shown below.
filteredList.setFilter((element) => element.length == 4); // ['four', 'five']

/// Only elements of length 4 in the list were filtered out,
/// resulting in the length of the list being 2.
print(filteredList.length); // 2

print(filteredList[0]); // 'four'

print(filteredList[1]); // 'five'

/// You can turn off the filter by passing null to setFilter.
filteredList.setFilter(null); // ['one', 'two', 'three', 'four', 'five']

/// The filter is cleared, so the length of the original list is 5.
print(filteredList.length); // 5

print(filteredList[0]); // 'one'

print(filteredList[1]); // 'two'

Pluto series

develop packages that make it easy to develop admin pages or CMS with Flutter.

About

A List where filters can be applied to the List and elements can be accessed or modified in that state.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages