filterList is a flutter package which provide utility to search/filter data from provided dynamic list.

Overview

filter_list Plugin

Codemagic build status GitHub last commit Open Source Love GitHub GitHub code size in bytes GitHub stars GitHub forks

pub package Likes Popularity Pub points

FilterList is a flutter package which provide utility to search/filter on the basis of single/multiple selection from provided dynamic list.

Download Demo App GitHub All Releases

Data flow

  • Invoke method FilterListDialog.display() to display filter dialog.
  • Make selection from list.
  • Click All button to select all text from list.
  • Click Reset button to make all text unselected.
  • Click Apply buton to return selected list of strings.
  • On close icon clicked it close dialog and return null value.
  • Without making any selection Apply button is pressed it will return empty list of items.

Getting Started

1. Add library to your pubspec.yaml

dependencies:
  filter_list: ^0.0.9

2. Import library in dart file

import package:filter_list/filter_list.dart';

3. How to use FilterList

Create a list of Strings

  List<String> countList = [
    "One",
    "Two",
    "Three",
    "Four",
    "Five",
    "Six",
    "Seven",
    "Eight",
    "Nine",
    "Ten",
    "Eleven",
    "Tweleve",
    "Thirteen",
    "Fourteen",
    "Fifteen",
    "Sixteen",
    "Seventeen",
    "Eighteen",
    "Nineteen",
    "Twenty"
  ];
  List<String>? selectedCountList = [];

Create a function and call FilterListDialog.display() on button clicked

  void _openFilterDialog() async {
    await FilterListDialog.display<String>(
      context,
      listData: countList,
      selectedListData: selectedCountList,
      height: 480,
      headlineText: "Select Count",
      searchFieldHintText: "Search Here",
      choiceChipLabel: (item) {
        return item;
      },
      validateSelectedItem: (list, val) {
          return list!.contains(val);
      },
      onItemSearch: (list, text) {
          if (list!.any((element) =>
              element.toLowerCase().contains(text.toLowerCase()))) {
            return list!
                .where((element) =>
                    element.toLowerCase().contains(text.toLowerCase()))
                .toList();
          }
          else{
            return [];
          }
        },
      onApplyButtonClick: (list) {
        if (list != null) {
          setState(() {
            selectedCountList = List.from(list);
          });
        }
        Navigator.pop(context);
      });
  }

Call _openFilterDialog function on floatingActionButton pressed to display filter dialog

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: _openFilterDialog,
          tooltip: 'Increment',
          child: Icon(Icons.add),
        ),
        body: selectedCountList == null || selectedCountList!.length == 0
            ? Center(
                child: Text('No text selected'),
              )
            : ListView.separated(
                itemBuilder: (context, index) {
                  return ListTile(
                    title: Text(selectedCountList![index]!),
                  );
                },
                separatorBuilder: (context, index) => Divider(),
                itemCount: selectedCountList!.length));
  }

How to use FilterListWidget.

class User {
  final String? name;
  final String? avatar;
  User({this.name, this.avatar});
}



class FilterPage extends StatelessWidget {
  FilterPage({Key? key}) : super(key: key);
  List<User> userList = [
    User(name: "Jon", avatar: ""),
    User(name: "Ethel ", avatar: ""),
    User(name: "Elyse ", avatar: ""),
    User(name: "Nail  ", avatar: ""),
    User(name: "Valarie ", avatar: ""),
    User(name: "Lindsey ", avatar: ""),
    User(name: "Emelyan ", avatar: ""),
    User(name: "Carolina ", avatar: ""),
    User(name: "Catherine ", avatar: ""),
    User(name: "Stepanida  ", avatar: ""),
  ];
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Filter List Widget Example "),
      ),
      body: SafeArea(
        child: FilterListWidget<User>(
          listData: userList,
          hideHeaderText: true,
          onApplyButtonClick: (list) {
            if (list != null) {
              print("Selected items count: ${list!.length}");
            }
          },
          label: (item) {
            /// Used to print text on chip
            return item!.name;
          },
          validateSelectedItem: (list, val) {
            ///  identify if item is selected or not
            return list!.contains(val);
          },
          onItemSearch: (list, text) {
            /// When text change in search text field then return list containing that text value
            ///
            ///Check if list has value which matchs to text
            if (list!.any((element) =>
                element.name.toLowerCase().contains(text.toLowerCase()))) {
              /// return list which contains matches
              return list!
                  .where((element) =>
                      element.name.toLowerCase().contains(text.toLowerCase()))
                  .toList();
            }
            else{
              return [];
            }
          },
        ),
      ),
    );
  }
}

Screenshots

No selected text from list FilterList widget Make selection Selected text from list
Hidden close Icon Hidden text field Hidden header text Hidden full header
Customised control button Customised selected text Customised unselected text Customised text field background color
Customised Choice chip Customised Choice chip FilterListWidget FilterListWidget

Parameters

Parameter Type Description
height double Set height of filter dialog.
width double Set width of filter dialog.
borderRadius double Set border radius of filter dialog.
hideCloseIcon bool Hide close Icon.
hideheader bool Hide complete header section from filter dialog.
hideHeaderAreaShadow bool Hide header area shadow if value is true.
headerCloseIcon Widget Widget to close the dialog.
hideHeaderText bool If true then it will hide the header text
hideSelectedTextCount bool Hide selected text count.
hideSearchField bool Hide search text field.
searchFieldHintText String Set hint text in search field.
headlineText String Set header text of filter dialog.
closeIconColor Color Set color of close Icon.
headerTextColor Color Set color of header text.
backgroundColor Color Set background color of filter color
searchFieldBackgroundColor Color Set background color of Search field.
unselectedTextbackGroundColor Color Set background color of unselected text field.
selectedTextBackgroundColor Color Set background color of selected text field.
applyButonTextBackgroundColor Color Set background color of apply button.
applyButtonTextStyle TextStyle TextStyle for Apply button
selectedChipTextStyle TextStyle TextStyle for chip when selected
unselectedChipTextStyle TextStyle TextStyle for chip when not selected
controlButtonTextStyle TextStyle TextStyle for All and Reset button text
headerTextStyle TextStyle TextStyle for header text
searchFieldTextStyle TextStyle TextStyle for search field tex
listData List<T>() Populate filter dialog with text list.
selectedListData List<T>() Marked selected text in filter dialog.
choiceChipLabel String Function(T item) Display text on choice chip.
validateSelectedItem bool Function(List<T>? list, T item) Identifies weather a item is selected or not
onItemSearch List<T> Function(List<T>? list, String text) Perform search operation and returns filtered list
choiceChipBuilder Widget Function(BuildContext context, T? item, bool? iselected) The choiceChipBuilder is a builder to design custom choice chip.
onApplyButtonClick Function(List<T> list) Returns list of items when apply button is clicked
ValidateRemoveItem List<T> Function(List<T>? list, T item) Function Delegate responsible for delete item from list
applyButtonText String Apply button text to customize or translate
resetButtonText String Reset button text to customize or translate
allButtonText String All button text to customize or translate
selectedItemsText String Selected items text to customize or translate
controlContainerDecoration BoxDecoration Customize the bottom area of the dialog, where the buttons are placed
buttonRadius double Button border radius
buttonSpacing double Space between bottom control buttons
insetPadding EdgeInsets The amount of padding added to [MediaQueryData.viewInsets] on the outside of the dialog.
wrapAlignment WrapAlignment Controls the choice chips alignment in main axis.
wrapCrossAxisAlignment wrapSpacing Controls the choice chip within a run should be aligned relative to each other in the cross axis.
wrapSpacing WrapAlignment controls the space to place between choice chip in a run in the main axis.

T can be a String or any user defined Model

Other Flutter packages

Name Stars Pub
Empty widget GitHub stars pub package
Add Thumbnail GitHub stars pub package
Country Provider GitHub stars pub package

Pull Requests

I welcome and encourage all pull requests. It usually will take me within 24-48 hours to respond to any issue or request.

Created & Maintained By

Sonu Sharma (Twitter) (Youtube) (Insta) Twitter Follow

If you found this project helpful or you learned something from the source code and want to thank me, consider buying me a cup of

Visitors Count

Loading

Comments
  • Merging Duplicate Items in Choice Chip into 1

    Merging Duplicate Items in Choice Chip into 1

    Is your feature request related to a problem? Please describe.

    currently, If we have duplicates in the choice chip, filter list still shows the duplicate.

    Describe the solution you'd like

    it would be great if we have option to merge duplicate items into 1.

    opened by AathifMahir 30
  • ✨ New arguments to customize button text and

    ✨ New arguments to customize button text and "Selected items" text

    Just added this arguments to improve the customization and make it translatable. Improved visual customization. Including remove custom function. ✨ allButtonText = 'All', ✨ applyButtonText = 'Apply', ✨ resetButtonText = 'Reset', ✨ selectedItemsText = 'selected item' ✨ Added button border radius argument ✨ Added action buttons box decoration argument ✨ Added button spacing argument ✨ Added custom remove function that returns the selected list items filtered by the user conditions. 📚 Updated ReadMe including the news arguments

    opened by DannyStrelok 5
  • Change the font size of

    Change the font size of "All", "Reset" and "Apply" button

    I wish the font size of "All", "Reset" and "Apply" button can be adjusted. Right now, I think it is too large and will cause overflow on small screen device.

    opened by konewltd 5
  • Disabling

    Disabling "All" and "Reset" buttons

    Is your feature request related to a problem? Please describe. It would be very nice to be able to remove the "all" and "reset" buttons.

    Describe the solution you'd like A parameter in the constructor to allow you to remove the "all" and "reset" buttons if desired. If removed, the "Accept" button should be the only one remaining and could be automatically centred to the bottom middle.

    Describe alternatives you've considered I have tried removing the text from the button (using "resetButtonText" and "allButtonText"), but it's still showing the buttons. Maybe giving an empty string ("") could disable it.

    Additional context I am using the widget as a tag selector while in the creation of elements for my app, and it makes no sense to have the "all" button, I wouldn't want the users to set all the tags to a new element, usually they should add only 2-3.

    enhancement 
    opened by guplem 4
  • Apply button overflow on the right

    Apply button overflow on the right

    Hey mate,

    Thanks for this lib, made my life super easy as I'm just mocking up something which needs a filter. I am getting some overflow reporting on the apply button. "A RenderFlex overflowed by 234 pixels on the right."

    I am on an Android Moto g6, I can fix it for my case by setting the width, but I'm hesitant to use that to resolve it for a real multi platform / device experience.

    Maybe id like to do something like setting the margin myself, or enabling the text to auto scale to the device I am on?

    image

    Thanks again!

    opened by aidenfry1 4
  • Remove bottom Bar Or just remove Apply button.

    Remove bottom Bar Or just remove Apply button.

    i just don't want the apply button but i cant get rid of it.

    The most easy way is just inculde the apply button in the "controlButtons" list.

    Or just remove the whole bar together because i dont want any buttons.

    Screenshot 2022-12-05 at 10 19 18

    opened by Tristannos 3
  • Select only one option [feature]

    Select only one option [feature]

    hey there , the package is all good , thanks for that, i was hoping if you can add one more feature that would be great help --------------The Feature---------------- the user can select the multiple options right can you add something like the user can select only one option when he tries to select other option then other option should be automatically deselected ---basically user can select only one option-------

    opened by Madanraj1 3
  • Option to Remove The Shadow in FilterList Content Area

    Option to Remove The Shadow in FilterList Content Area

    Is your feature request related to a problem? Please describe. Currently Filterlist does have default shadow in Content Area That doesn't Go with My Apps Design Language, Please have an Option to Disable That

    Describe the solution you'd like Add Boolean to Turn that Default Shadow ON and OFF, for ex HideContentAreaShadow

    Additional context

    Here's Image that represent Default Shadow on Content Area

    Inkedscreenshot_6

    bug 
    opened by AathifMahir 2
  • Error: Type 'ListTileThemeData' not found - When compiling on Macos

    Error: Type 'ListTileThemeData' not found - When compiling on Macos

    Describe the bug Failed to compile this library on macos (m1) Monterey 12.0.1 Here are the errors I get when I use this library, but when I comment out the usage its working just fine.

    Launching lib/main.dart on Chrome in debug mode...
    Waiting for connection from debug service on Chrome...
    ../../Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/filter_list-1.0.1/lib/src/theme/filter_list_delegate_theme.dart:37:5: Error: Type 'ListTileThemeData' not found.
        ListTileThemeData? listTileTheme,
        ^^^^^^^^^^^^^^^^^
    ../../Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/filter_list-1.0.1/lib/src/theme/filter_list_delegate_theme.dart:84:9: Error: Type 'ListTileThemeData' not found.
      final ListTileThemeData listTileTheme;
            ^^^^^^^^^^^^^^^^^
    ../../Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/filter_list-1.0.1/lib/src/filter_list_delegate.dart:252:27: Error: No named parameter with the name 'data'.
                              data: theme.listTileTheme,
                              ^^^^
    ../../Downloads/flutter/packages/flutter/lib/src/material/list_tile.dart:44:9: Context: Found this candidate, but the arguments don't match.
      const ListTileTheme({
            ^^^^^^^^^^^^^
    ../../Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/filter_list-1.0.1/lib/src/filter_list_delegate.dart:260:27: Error: No named parameter with the name 'data'.
                              data: theme.listTileTheme,
                              ^^^^
    ../../Downloads/flutter/packages/flutter/lib/src/material/list_tile.dart:44:9: Context: Found this candidate, but the arguments don't match.
      const ListTileTheme({
            ^^^^^^^^^^^^^
    ../../Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/filter_list-1.0.1/lib/src/theme/filter_list_delegate_theme.dart:37:5: Error: 'ListTileThemeData' isn't a type.
        ListTileThemeData? listTileTheme,
        ^^^^^^^^^^^^^^^^^
    ../../Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/filter_list-1.0.1/lib/src/theme/filter_list_delegate_theme.dart:51:23: Error: Method not found: 'ListTileThemeData'.
        listTileTheme ??= ListTileThemeData();
                          ^^^^^^^^^^^^^^^^^
    ../../Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/filter_list-1.0.1/lib/src/theme/filter_list_delegate_theme.dart:84:9: Error: 'ListTileThemeData' isn't a type.
      final ListTileThemeData listTileTheme;
            ^^^^^^^^^^^^^^^^^
    ../../Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/filter_list-1.0.1/lib/src/theme/filter_list_delegate_theme.dart:97:33: Error: 'ListTileThemeData' isn't a type.
          ..add(DiagnosticsProperty<ListTileThemeData>(
                                    ^^^^^^^^^^^^^^^^^
    ../../Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/filter_list-1.0.1/lib/src/theme/filter_list_delegate_theme.dart:102:33: Error: 'ListTileThemeData' isn't a type.
          ..add(DiagnosticsProperty<ListTileThemeData>(
                                    ^^^^^^^^^^^^^^^^^
    
    

    To Reproduce Steps to reproduce the behavior:

    1. Here is my only usage of it in my app
    await FilterListDialog.display<RequestDBModel>(
          context,
          listData: distinctRequests,
          selectedListData: selectedRequests,
          choiceChipLabel: getFilteredFieldAsString,
          validateSelectedItem: (list, val) => list!.contains(val),
          onItemSearch: (request, query) {
            return getFilteredFieldAsString(request)
                .toLowerCase()
                .contains(query.toLowerCase());
          },
          selectedItemsText:
              AppDynamicLocalizations.of(context)?.translate("selecteditems") ??
                  'selected items',
          allButtonText:
              AppDynamicLocalizations.of(context)?.translate("all") ?? 'All',
          applyButtonText:
              AppDynamicLocalizations.of(context)?.translate("apply") ?? 'Apply',
          resetButtonText:
              AppDynamicLocalizations.of(context)?.translate("reset") ?? 'Reset',
          onApplyButtonClick: (list) {
            setState(() {
              filtersByColumn[columnIndex] = [];
              if (list?.length != distinctRequests.length) {
                // If actually choose all(no need to filter it at all)
                list?.forEach((request) {
                  filtersByColumn[columnIndex]
                      .add(getFilteredFieldAsString(request));
                });
              }
            });
            Navigator.pop(context);
          },
        );
    

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: macos (m1) Monterey 12.0.1 (On windows it works great)
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: Compiled to web
    • Browser chrome
    opened by IdoBloch4 1
  • How to Add subtitle

    How to Add subtitle

    **as the library support single item in choiceChipLabel ** how to add subtitle in choiceChipLabel if data has subtitle [...]

    Describe the solution you'd like A clear and concise description of what you want to happen.

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here.

    opened by mushtaq99 1
  • Customise close button on a dialog

    Customise close button on a dialog

    Is your feature request related to a problem? Please describe. It would be good to add option to customise close button appearance in order to make it consistent with the rest of application. There is already an option to customise close icon color, however it's not currently possible to change the icon itself.

    Describe the solution you'd like A builder for delivering the button would be perfect.

    enhancement 
    opened by bparol 1
  • RenderCustomMultiChildLayoutBox object was given an infinite size during layout.

    RenderCustomMultiChildLayoutBox object was given an infinite size during layout.

    Describe the bug When i put the chips in a BarModel from the package => modal_bottom_sheet 2.1.2, and don't give it a hard coded height it will crash.

    Normally it will grow on how big the list is. Just like a container would with no height.

    Code: Screenshot 2022-12-05 at 10 39 36

    How it should be: Screenshot 2022-12-05 at 10 19 18

    How it is with the bug: Screenshot 2022-12-05 at 10 39 52

    opened by Tristannos 0
  • Selected Text Count on bottom.

    Selected Text Count on bottom.

    Is your feature request related to a problem? Please describe. For me it is too much space, i would like the chips directly under the name and in the same time display how many are selected.

    Make an option to display "selectedItemsCountOnBottom" boolean.

    Screenshot 2022-12-05 at 10 19 18

    opened by Tristannos 2
  • [Question] initial selected

    [Question] initial selected

    at initstate I've done to add selectedlistdate

    but when i clicked the filter list, the filterlistdelegate not giving the checklist.

    image

    am i wrong to write below code ? image

    btw ive logs the list that i input into the selectedlist. it show, but only at the filterlistdelegate that not giving the checklist

    opened by weebsproject 0
  • Null check operator used on a null value

    Null check operator used on a null value

    Describe the bug A clear and concise description of what the bug is.

    
        await FilterListDialog.display<T>(
          this,
          listData: data,
          choiceChipLabel: (T? data) => titleBuilder?.call(data),
          validateSelectedItem: selectedDataValidator,
          onItemSearch: (T data, String query) =>
              searchComparator?.call(data, query) ??
              titleBuilder
                  ?.call(data)
                  ?.toLowerCase()
                  .contains(query.toLowerCase()) ??
              false,
          hideSelectedTextCount: true,
          hideSearchField: true,
          allButtonText: MaterialLocalizations.of(this).selectAllButtonLabel,
          resetButtonText: 'reset'.translateAction(),
          applyButtonText: MaterialLocalizations.of(this).saveButtonLabel,
          onApplyButtonClick: (List<T>? data) => _completer.complete(data),
        );
    
    
    ======== Exception caught by gesture ===============================================================
    The following _CastError was thrown while handling a gesture:
    Null check operator used on a null value
    
    When the exception was thrown, this was the stack: 
    #0      FilterState.addSelectedItem (package:filter_list/src/state/filter_state.dart:46:18)
    #1      ChoiceList._buildChoiceList.<anonymous closure>.<anonymous closure> (package:filter_list/src/widget/choice_list.dart:52:25)
    #2      _RawChipState._handleTap (package:flutter/src/material/chip.dart:1716:24)
    #3      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:989:21)
    #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:198:24)
    #5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:608:11)
    #6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296:5)
    #7      BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:267:7)
    #8      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:157:27)
    #9      GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:443:20)
    #10     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:419:22)
    #11     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:322:11)
    #12     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:374:7)
    #13     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:338:5)
    #14     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:296:7)
    #15     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:279:7)
    #19     _invoke1 (dart:ui/hooks.dart:170:10)
    #20     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:331:7)
    #21     _dispatchPointerDataPacket (dart:ui/hooks.dart:94:31)
    (elided 3 frames from dart:async)
    Handler: "onTap"
    Recognizer: TapGestureRecognizer#f56cc
      debugOwner: GestureDetector
      state: ready
      won arena
      finalPosition: Offset(153.4, 286.0)
      finalLocalPosition: Offset(34.2, 16.0)
      button: 1
      sent tap down
    ====================================================================================================
    
    

    To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

     // Add item in to selected list
      void addSelectedItem(K item) {
        _selctedItems!.add(item); // _selctedItems wasn't initialized
    
        notifyListeners();
      }
    
      // Remove item from selected list
      void removeSelectedItem(K item) {
        _selctedItems!.remove(item);
    
        notifyListeners();
      }
    

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context Add any other context about the problem here.

    opened by lvyandev 0
  • [Question] Change title apply button & title search

    [Question] Change title apply button & title search

    is there anything to do to change the title on apply button FilterListDelegate.show...

    image based on that pict, it's only available to change applybuttonstyle, how to change applybuttontitle ?

    also

    image how to rename label search as an example I want to change from Search here.. to Maghanap dito.. image

    thanks,

    opened by weebsproject 1
Releases(v1.0.2)
  • v1.0.2(Jul 2, 2022)

    • Make compatible with Flutter v3.0.0
    • Add applyButtonText prop to change Apply button text in FilterListDelegate
    • Add copyWith method in FilterListDelegateThemeData to copy theme data
    • Add copyWith method in FilterListThemeData to copy theme data.
    • Fix typos.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Jan 18, 2022)

    • 🚨 Breaking change

      • Removed selectedChipTextStyle parameter
      • Removed unselectedChipTextStyle parameter
      • Removed selectedTextBackgroundColor parameter
      • Removed unselectedTextbackGroundColor parameter
      • Removed hideHeaderText parameter
      • Removed closeIconColor parameter
      • Removed hideHeaderAreaShadow parameter
      • Removed headerTextColor parameter
      • Removed searchFieldBackgroundColor parameter
      • Removed searchFieldTextStyle parameter
      • Removed headerTextStyle parameter
      • Removed searchFieldHintText parameter
      • Removed applyButonTextBackgroundColor parameter
      • Removed buttonRadius parameter
      • Removed buttonSpacing parameter
      • Removed controlButtonTextStyle parameter
      • Removed applyButtonTextStyle parameter
      • Removed applyButtonText parameter
      • Removed wrapAlignment parameter
      • Removed wrapCrossAxisAlignment parameter
      • Removed wrapSpacing parameter
      • Removed borderRadius parameter

      Above removed parameters are moved to the newly created theme parameter

      • Replace ItemSearchDelegate<T> with SearchPredict<T> method
    • Added Theme

      • FilterListTheme for filter list widget theme
      • ChoiceChipTheme for choice chip theme.
      • HeaderTheme for Header widget theme
      • ControlButtonBarTheme for control button bar theme
      • ControlButtonTheme for control button theme
      • FilterListDelegateTheme for filter list delegate theme
      • controlButtons parameter to display/hide control buttons (All, Reset)
    • Added FilterListDelegate.show delegate to search/filter data in new screen

    Source code(tar.gz)
    Source code(zip)
    app-release.apk(16.87 MB)
  • 0.0.7(Feb 20, 2021)

  • v0.0.6(Feb 20, 2021)

    • Convert filter list package to generic list filter package
    • allTextList changed to listData
    • selectedTextList changed to selectedListData
    • FilterListWidget and FilterListDialog can filter any type if list
    • Added validateSelectedItem callback to validate which item needs to be selected
    • Added onItemSearch callback to expose search mechanism on user side to filter list.'
    Source code(tar.gz)
    Source code(zip)
  • v0.0.5(Sep 22, 2020)

  • v0.0.4(Mar 5, 2020)

    [0.0.1] - 02 Mar 2020

    • Filter list functionality added
    • Return selected list of text

    [0.0.2] - 02 Mar 2020

    • Added filter pop-up theme customization

    [0.0.3] - 02 Mar 2020

    • Added pop-up height
    • Added pop-up width
    • Added header hide option
    • Added search field hide option
    • Added cross icon hide option

    [0.0.4] - 05 Mar 2020

    • Added pop-up Corner Radius property
    • Added ripple effect on control button.
    Source code(tar.gz)
    Source code(zip)
    app-release.apk(16.35 MB)
  • v0.0.1(Mar 2, 2020)

Owner
Sonu Sharma
Just a passionate technology enthusiast whose flaw is curiosity. I like to figure out complex problems, working with teams.
Sonu Sharma
Clip your widgets with custom shapes provided.

clippy_flutter Clip your widgets with custom shapes provided. #Arc, #Arrow, #Bevel, #ButtCheek, #Chevron, #Diagonal, #Label, #Message, #Paralellogram,

Figen Güngör 238 Dec 11, 2022
Gitrat (Github-Traitors) is a CLI utility to track GitHub (un)followers.

Gitrat ?? Gitrat (Github-Traitors) is a CLI utility to track GitHub (un)followers. Prerequisite Dart Setup Cloning Repository $ git clone https://gith

Tirth 3 Feb 1, 2021
A COVID-19 case tracker app which basically fetches latest data from an API and display it beautifully according to countries.

Stay Safe Coronavirus Tracker Flutter App This app basically tracks the total cases of infected persons (real-time data), in all countries with total

Hash Studios 5 Jun 20, 2022
A flutter package that adds support for vector data based animations.

animated_vector Description and inspiration A package that adds support for vector data based animations. The data format is heavily inspired from the

Potato Open Sauce Project 6 Apr 26, 2022
A flutter package which makes it easier to display the difference between two images.

?? Before After A flutter package which makes it easier to display the differences between two images.. The source code is 100% Dart, and everything r

Sahil Kumar 741 Dec 30, 2022
A flutter package which will help you to generate pin code fields with beautiful design and animations

A flutter package which will help you to generate pin code fields with beautiful design and animations. Can be useful for OTP or pin code inputs ?? ??

Adar 550 Dec 23, 2022
A flutter package which display the library collapse according to the number of images associated with hero animation

?? Gallery Collapse A flutter package which display the library collapse accordi

null 6 Sep 12, 2022
A flutter package which contains a collection of some cool and beautiful effects; support android and ios

flutter effects A flutter package which contains a collection of some cool and beautiful effects; support android and ios . Screenshot type support ch

大海豚 462 Jan 3, 2023
This flutter package contains a widget called DecodingTextEffect which is having some cool Decode Effects for texts.

This flutter package contains a widget called DecodingTextEffect which is having some cool Decode Effects for texts. Installing 1. Depend on it Add th

Aadarsh Patel 13 Nov 25, 2020
🐱‍👤 Flutter-Animation 🔥 🔥 List Animated Staggered Animations

??‍?? Staggered Animations made with algeria ❤

Hmida 17 Nov 22, 2022
An awesome list that curates the best Flutter libraries, tools, tutorials, articles and more.

Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase. If you appr

Robert Felker 44.6k Dec 30, 2022
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 291 Dec 20, 2022
Example project for sticky infinite list

sticky_infinite_list_example Example for sticky infinite list package Example for v1.x.x can be found here Getting Started This project is a starting

Denis Beketsky 6 Nov 6, 2022
A contact list UI clone for trainees during a national mobile development training session

contactapp A contact list UI clone for trainees during a national mobile development training session This project was built during a training session

bayorwor 4 Dec 14, 2021
Generate a timeline for a list

Timeline A flutter package that allows you to create basic timelines on your flutter application. This is customizable and easy to plugin to your appl

Rejish Radhakrishnan 65 Nov 10, 2022
Flutter ListView and GridView that shows Loading Widgets before the real data is loaded.

loadinglistview This package provide an easy way to show loading indicator(Widget) in a listview or a gridview while the app is still fetching the rea

null 3 Dec 8, 2021
SwiftUI - Examples projects using SwiftUI released by WWDC2019. Include Layout, UI, Animations, Gestures, Draw and Data.

SwiftUI Examples About Examples projects using SwiftUI & Combine. Include Layout, UI, Animations, Gestures, Draw and Data. See projects files in Files

Ivan Vorobei 4.2k Jan 8, 2023
🔔 A flutter package to create cool and beautiful text animations. [Flutter Favorite Package]

Animated Text Kit A flutter package which contains a collection of some cool and awesome text animations. Recommended package for text animations in C

Ayush Agarwal 1.4k Jan 6, 2023
Dart package that converts number to words (English language)A Flutter/Dart package that converts number to words (English language)

flutter_number_to_words_english A Flutter/Dart package that converts number to words (English language) Flutter (Null Safety) Flutter (Channel stable,

Ke Nguyen 4 Dec 9, 2022