A flexible multi select package for Flutter. Make multi select widgets the way you want.

Overview

Multi Select Flutter

Pub Version

Multi Select Flutter is a package for creating multi-select widgets in a variety of ways.


Dialog

BottomSheet

ChoiceChip

Features

  • Supports FormField features like validator.
  • Neutral default design that can be altered to your heart's content.
  • Choose between Dialog, BottomSheet, or ChoiceChip style widgets.
  • Make your multi select searchable for larger lists.

Install

Add this to your pubspec.yaml file:

dependencies:
  multi_select_flutter: ^3.1.8

Usage

MultiSelectDialogField / MultiSelectBottomSheetField

These widgets provide an InkWell button which open the dialog or bottom sheet and are equipped with FormField features. You can customize it to your liking using the provided parameters.

To store the selected values, you can use the onConfirm parameter. You could also use onSelectionChanged for this.

By default these widgets render a MultiSelectChipDisplay below the field. This can be overridden with the chipDisplay parameter or removed completely by using chipDisplay: MultiSelectChipDisplay.none().

MultiSelectDialogField(
  items: _animals.map((e) => MultiSelectItem(e, e.name)).toList(),
  listType: MultiSelectListType.CHIP,
  onConfirm: (values) {
    _selectedAnimals = values;
  },
),

MultiSelectDialog / MultiSelectBottomSheet

           

If you prefer to create your own button for opening the dialog or bottom sheet, you may do so and then make a call to a function like this:

MultiSelectDialog can be used in the builder of showDialog().

void _showMultiSelect(BuildContext context) async {
  await showDialog(
    context: context,
    builder: (ctx) {
      return  MultiSelectDialog(
        items: _items,
        initialValue: _selectedAnimals,
        onConfirm: (values) {...},
      );
    },
  );
}

MultiSelectBottomSheet can be used in the builder of showModalBottomSheet().

void _showMultiSelect(BuildContext context) async {
  await showModalBottomSheet(
    isScrollControlled: true, // required for min/max child size
    context: context,
    builder: (ctx) {
      return  MultiSelectBottomSheet(
        items: _items,
        initialValue: _selectedAnimals,
        onConfirm: (values) {...},
        maxChildSize: 0.8,
      );
    },
  );
}

MultiSelectChipDisplay

To display the selected items, this widget can be used alongside your own button or it can be specified as a chipDisplay parameter of widgets like MultiSelectDialogField.

You can also remove items from the source list in the onTap function.

MultiSelectChipDisplay(
  items: _selectedAnimals.map((e) => MultiSelectItem(e, e)).toList(),
  onTap: (value) {
    setState(() {
      _selectedAnimals.remove(value);
    });
  },
),

A MultiSelectChipDisplay that is part of a MultiSelectDialogField still renders outside the BoxDecoration of the MultiSelectDialogField as seen here:

chipDisplay

If you want to encapsulate the MultiSelectChipDisplay, wrap the MultiSelectDialogField in a Container and apply the decoration to that instead:

Container(
  decoration: BoxDecoration(...),
  child: MultiSelectDialogField(
    items: _items,
    chipDisplay: MultiSelectChipDisplay(...),
  ),
),

chipDisplay

MultiSelectChipField

chipField

This widget is similar to MultiSelectChipDisplay, except these chips are the primary interface for selecting items.

MultiSelectChipField<Animal>(
  items: _items,
  icon: Icon(Icons.check),
  onTap: (values) {
    _selectedAnimals = values;
  },
),

Using itemBuilder to create custom items:

MultiSelectChipField<Animal>(
  items: _items,
  key: _multiSelectKey,
  validator: (values) {...}
  itemBuilder: (item, state) {
    // return your custom widget here
    return InkWell(
      onTap: () {
        _selectedAnimals.contains(item.value)
			      ? _selectedAnimals.remove(item.value)
			      : _selectedAnimals.add(item.value);
	      state.didChange(_selectedAnimals);
	      _multiSelectKey.currentState.validate();
	    },
	    child: Text(item.value.name),
    );
  },
),

The itemBuilder param takes a function that will create a widget for each of the provided items.

In order to use validator and other FormField features with custom widgets, you must call state.didChange(_updatedList) any time the list of selected items is updated.

Using scrollControl to auto scroll:

MultiSelectChipField(
  items: _items,
  scrollControl: (controller) {
    _startAnimation(controller);
  },
)

// waits 5 seconds, scrolls to end slow, then back fast
void _startAnimation(ScrollController controller) {
  // when using more than one animation, use async/await
  Future.delayed(const Duration(milliseconds: 5000), () async {
    await controller.animateTo(
      controller.position.maxScrollExtent,
      duration: Duration(milliseconds: 8000), 
      curve: Curves.linear);
      
    await controller.animateTo(
      controller.position.minScrollExtent,
      duration: Duration(milliseconds: 1250),
      curve: Curves.fastLinearToSlowEaseIn);
  });
}

Constructors

MultiSelectDialog

Parameter Type Description
backgroundColor Color Set the background color of the dialog.
cancelText Text Specifies the cancel button text.
checkColor Color Set the color of the check in the checkbox.
closeSearchIcon Icon Icon(Icons.close)
confirmText Text Specifies the confirm button text.
colorator Color Function(V) Set the selected color of individual items based on their value. Applies to both chips and checkboxes.
height double Give the dialog a fixed height.
initialValue List<V> List of selected values. Required to retain values when re-opening the dialog.
items List<MultiSelectItem<V>> The source list of options.
itemsTextStyle TextStyle Specifies the style of text on chips or list tiles.
listType MultiSelectListType Change the listType. Can be either  MultiSelectListType.LIST or MultiSelectListType.CHIP
onSelectionChanged Function(List<V>) Fires when an item is selected or unselected.
onConfirm Function(List) Fires when the confirm button is pressed.
searchable bool Enables search functionality within the dialog.
searchHintStyle TextStyle Style the text of the search hint.
searchIcon Icon The icon button that shows the search field.
searchHint String Set the placeholder text of the search field.
searchTextStyle TextStyle Style the search text.
selectedColor Color Set the color of the checkbox or chip items that are selected.
title Widget The title that is displayed at the top of the dialog.
unselectedColor Color Set the color of the chip body or checkbox border while not selected.

MultiSelectDialogField

MultiSelectDialogField has all the parameters of MultiSelectDialog plus these extra parameters:

Parameter Type Description
autovalidateMode AutovalidateMode If enabled, form fields will validate and update their error text immediately after every change. Default is disabled.
barrierColor Color Set the color of the space outside the dialog.
buttonText Text Set text that is displayed on the button.
buttonIcon Icon Specify the button icon.
chipDisplay MultiSelectChipDisplay Override the default MultiSelectChipDisplay that belongs to this field.
decoration BoxDecoration Style the Container that makes up the field.
key GlobalKey<FormFieldState> Access FormFieldState methods.
onSaved List<MultiSelectItem> A callback that is called whenever we submit the field (usually by calling the save method on a form.
validator FormFieldValidator<List> Validation. See Flutter's documentation.

MultiSelectBottomSheet

Parameter Type Description
cancelText Text Specifies the cancel button text.
checkColor Color Set the color of the check in the checkbox.
confirmText Text Specifies the confirm button text.
closeSearchIcon Icon The icon button that hides the search field .
colorator Color Function(V) Set the selected color of individual items based on their value. Applies to both chips and checkboxes.
initialChildSize double The initial height of the BottomSheet. Default is 0.3
initialValue List<V> List of selected values. Required to retain values when re-opening the BottomSheet.
items List<MultiSelectItem<V>> The source list of options.
itemsTextStyle TextStyle Specifies the style of text on chips or list tiles.
listType MultiSelectListType MultiSelectListType.LIST
maxChildSize double Set the maximum height threshold of the BottomSheet. Default is 0.6
minChildSize double Set the minimum height threshold of the BottomSheet before it closes. Default is 0.3
onSelectionChanged Function(List<V>) Fires when an item is selected or unselected.
onConfirm Function(List) Fires when the confirm button is pressed.
searchable bool Toggle search functionality within the BottomSheet.
searchHint String Set the placeholder text of the search field.
searchHintStyle TextStyle Style the text of the search hint.
searchIcon Icon The icon button that shows the search field.
searchTextStyle TextStyle Style the search text.
selectedColor Color Set the color of the checkbox or chip items that are selected.
title Widget The title that is displayed at the top of the BottomSheet.
unselectedColor Color Set the color of the chip body or checkbox border while not selected.

MultiSelectBottomSheetField

MultiSelectBottomSheetField has all the parameters of MultiSelectBottomSheet plus these extra parameters:

Parameter Type Description
autovalidateMode AutovalidateMode If enabled, form fields will validate and update their error text immediately after every change. Default is disabled.
backgroundColor Color Set the background color of the BottomSheet.
barrierColor Color Set the color of the space outside the BottomSheet.
buttonIcon Icon Specify the button icon.
buttonText Text Set text that is displayed on the button.
chipDisplay MultiSelectChipDisplay Override the default MultiSelectChipDisplay that belongs to this field.
decoration BoxDecoration Style the Container that makes up the field.
key GlobalKey<FormFieldState> Can be used to call methods like _multiSelectKey.currentState.validate().
onSaved List<MultiSelectItem> A callback that is called whenever we submit the field (usually by calling the save method on a form.
shape ShapeBorder Apply a ShapeBorder to alter the edges of the BottomSheet. Default is a RoundedRectangleBorder with top circular radius of 15.
validator FormFieldValidator<List> Validation. See Flutter's documentation.

MultiSelectChipField

Parameter Type Description
autovalidateMode AutovalidateMode If enabled, form fields will validate and update their error text immediately after every change. Default is disabled.
chipColor Color Set the chip color.
chipShape ShapeBorde Define a ShapeBorder for the chips.
closeSearchIcon Icon The icon button that hides the search field .
colorator Color Function(V) Set the selected chip color of individual items based on their value.
decoration BoxDecoration Style the surrounding Container.
headerColor Color Set the header color.
height double Set the height of the selectable area.
icon Icon The icon to display prior to the chip label.
initialValue List<V> List of selected values before any interaction.
itemBuilder Function(MultiSelectItem<V>, FormFieldState<List<V>>) Build a custom widget that gets created dynamically for each item.
items List<MultiSelectItem<V>> The source list of options.
key GlobalKey<FormFieldState> Can be used to call methods like _multiSelectKey.currentState.validate().
onSaved List<MultiSelectItem> A callback that is called whenever the field is submitted (usually by calling the save method on a form.
onTap Function(V) Fires when a chip is tapped.
scroll bool Enables horizontal scrolling.
scrollBar HorizontalScrollBar Define a scroll bar.
scrollControl Function(ScrollController) Make use of the ScrollController to automatically scroll through the list.
searchable bool Toggle search functionality.
searchHint String Set the placeholder text of the search field.
searchHintStyle TextStyle Style the text of the search hint.
searchIcon Icon The icon button that shows the search field.
searchTextStyle TextStyle Style the search text.
selectedChipColor Color Set the color of the chip items that are selected.
selectedTextStyle TextStyle Set the TextStyle on selected chips.
showHeader bool Determines whether to show the header.
textStyle TextStyle Style the text on the chips.
title Widget The title that is displayed in the header.
validator FormFieldValidator<List> Validation. See Flutter's documentation.

MultiSelectChipDisplay

Parameter Type Description
alignment Alignment Change the alignment of the chips. Default is Alignment.centerLeft.
chipColor Color Set the chip color.
colorator Color Function(V) Set the chip color of individual items based on their value.
decoration BoxDecoration Style the Container that makes up the chip display.
height double Set a fixed height.
icon Icon The icon to display prior to the chip label.
items List<MultiSelectItem> The source list of selected items.
onTap Function(V) Fires when a chip is tapped.
scroll bool Enables horizontal scroll instead of wrap.
scrollBar HorizontalScrollBar Enable the scroll bar.
shape ShapeBorder Define a ShapeBorder for the chips.
textStyle TextStyle Style the text on the chips.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Comments
  • initialValue not working as expected

    initialValue not working as expected

    Hello CHB61

    Thanks for this great flutter lib.

    Seems the initialValue property is not working correctly. Based on your example I added all animals as an initial value:

    MultiSelectBottomSheetField( initialValue: _animals, ..... ),

    As a result the selected animals are not shown inside the form. But all animals are pre-selected on the bottom selection area (see screenshot).

    Screenshot_1601568203

    opened by jjoschyy 12
  • Color per chip

    Color per chip

    Hi,

    Currently it is possible to define one color for the chips. Would be great if the color can be defined for each chip (maybe based on the value of the item. The color should apply in the MultiSelectChipDisplay and the select dialog. A function could be provided that chooses the color based on the item's value. The current chipColor is a fallback when the function is not defined or does not return with a result.

    Regards, Florian

    enhancement 
    opened by fhuonder 6
  • Widget Binding warning

    Widget Binding warning

    Greetings. After upgrading to the latest package, I am having this warning /C:/flutter/.pub-cache/hosted/pub.dartlang.org/multi_select_flutter-4.1.2/lib/chip_field/multi_select_chip_field.dart:273:22: Warning: Operand of null-aware operation '!' has type 'WidgetsBinding' which excludes null.

    • 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('/C:/flutter/packages/flutter/lib/src/widgets/binding.dart'). WidgetsBinding.instance!.addPostFrameCallback((_) => _scrollToPosition());

    Regards

    opened by ag-0214 5
  • _TypeError with minimal MultiSelectDialogField

    _TypeError with minimal MultiSelectDialogField

    Hello!

    I think your library is pretty cool. However when trying it out i got following error:

    The following _TypeError was thrown building MultiSelectDialogField<String>(dirty, dependencies: [UnmanagedRestorationScope, _FormScope], state: FormFieldState<List<String>>#32167):
    type '(List<String>) => void' is not a subtype of type '((List<String?>) => void)?'
    

    With a minimal example of in a stateful widget

    List<String> _indexCardIds = [];
    ...
    MultiSelectDialogField<String>(
                      items: [MultiSelectItem<String>('hi', 'hi')],
                      onConfirm: (values) {
                        setState(() {
                          _indexCardIds = values;
                        });
                      },
                    ),
    

    Any clue whats happening here?

    opened by jksevend 5
  • Items removal upon tapping does not work.

    Items removal upon tapping does not work.

    MultiSelectDialogField, some initial values are provided. In the MultiSelectChipDisplay's onTap method, the removal is wrapped with setstate (this does slow down the UI refreshment).

    Upon clicking on initial items, they are not removed, but the validator complains 'no items selected'.

    But, if no initial values provided, it works perfectly.

    opened by nxr836 5
  • Warning: Operand of null-aware operation '!' has type 'WidgetsBinding'

    Warning: Operand of null-aware operation '!' has type 'WidgetsBinding'

    After upgrading to latest flutter version (2.11.0-0.0.pre.637) I get this warning?

    /AppData/Local/Pub/Cache/hosted/pub.dartlang.org/multi_select_flutter-4.0.0/lib/chip_field/multi_select_chip_field.dart:273:22: Warning: Operand of null-aware operation '!' has type 'WidgetsBinding' which excludes null.
     - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('/E:/mySoftware/flutter/packages/flutter/lib/src/widgets/binding.dart').
          WidgetsBinding.instance!.addPostFrameCallback((_) => _scrollToPosition());
    
    opened by meeximum 4
  • Dialog width

    Dialog width

    Hi,

    I really like the widget although there is a small thing which bothers me:

    Is there any reason why dialog height can but width cannot be managed?

    Is there any way to set dialog width? I use it in a web app and the dialog takes almost 80% of the screen width which is a little bit annoying.

    Thank you!

    opened by valm-j 4
  • MultiSelectChipField unable to select a chip

    MultiSelectChipField unable to select a chip

    Issue

    While testing MultiSelectChipField I ran across the issue where I am unable to select a value because of an inner function receiving a different value than the expected one....

    Console Log

    
    ======== Exception caught by gesture ===============================================================
    The following TypeErrorImpl was thrown while handling a gesture:
    Expected a value of type 'List<Animal>?', but got one of type 'List<Animal?>'
    
    When the exception was thrown, this was the stack: 
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49      throw_
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 84:3        castError
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 442:10  cast
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/types.dart 417:9        as
    packages/flutter/src/widgets/form.dart 474:21                                     didChange
    ...
    Handler: "onTap"
    Recognizer: TapGestureRecognizer#9a7e7
      debugOwner: GestureDetector
      state: ready
      won arena
      finalPosition: Offset(753.9, 456.0)
      finalLocalPosition: Offset(52.6, 15.0)
      button: 1
      sent tap down
    ====================================================================================================
    

    Code I was using when this happened

    class Animal {
      final int id;
      final String name;
    
      Animal({
        required this.id,
        required this.name,
      });
    }
    
    class MultiSelectField extends StatefulWidget {
      final String label;
      const MultiSelectField(this.label, {Key? key}) : super(key: key);
    
      @override
      _MultiSelectFieldState createState() => _MultiSelectFieldState();
    }
    
    class _MultiSelectFieldState extends State<MultiSelectField> {
      @override
      Widget build(BuildContext context) {
        List<Animal> _animals = [
          Animal(id: 1, name: "Lion"),
          Animal(id: 2, name: "Flamingo"),
          Animal(id: 3, name: "Hippo"),
          Animal(id: 4, name: "Horse"),
          Animal(id: 5, name: "Tiger"),
          Animal(id: 6, name: "Penguin"),
          Animal(id: 7, name: "Spider"),
          Animal(id: 8, name: "Snake"),
          Animal(id: 9, name: "Bear"),
          Animal(id: 10, name: "Beaver"),
          Animal(id: 11, name: "Cat"),
          Animal(id: 12, name: "Fish"),
          Animal(id: 13, name: "Rabbit"),
          Animal(id: 14, name: "Mouse"),
          Animal(id: 15, name: "Dog"),
          Animal(id: 16, name: "Zebra"),
          Animal(id: 17, name: "Cow"),
          Animal(id: 18, name: "Frog"),
          Animal(id: 19, name: "Blue Jay"),
          Animal(id: 20, name: "Moose"),
          Animal(id: 21, name: "Gecko"),
          Animal(id: 22, name: "Kangaroo"),
          Animal(id: 23, name: "Shark"),
          Animal(id: 24, name: "Crocodile"),
          Animal(id: 25, name: "Owl"),
          Animal(id: 26, name: "Dragonfly"),
          Animal(id: 27, name: "Dolphin"),
        ];
        final _items = _animals
            .map((animal) => MultiSelectItem<Animal>(animal, animal.name))
            .toList();
    
        var _selectedAnimals4 = [];
    
        return Padding(
          padding: const EdgeInsets.only(bottom: padding8),
          child: MultiSelectChipField(
            items: _items,
            initialValue: [_animals[4], _animals[7], _animals[9]],
            title: Text("Animals"),
            headerColor: Colors.blue.withOpacity(0.5),
            decoration: BoxDecoration(
              border: Border.all(color: Colors.blue[700]!, width: 1.8),
            ),
            selectedChipColor: Colors.blue.withOpacity(0.5),
            selectedTextStyle: TextStyle(color: Colors.blue[800]),
            onTap: (values) {
              _selectedAnimals4 = values;
            },
          ),
        );
      }
    }
    

    Additional Info

    • Mac mini M1 2020
    • Android Studio 4.2.2
      • Developing a web app
    • multi_select_flutter version 4.0.0
    • Google Chrome 92.0.4515.131
    opened by mcgaryp 4
  • setState() called after dispose():

    setState() called after dispose():

    In my code I have dropdownButtonFormField and MultiSelectDialogField

    1 If I press submit and validate , it will throw filed required error which is fine 2 select value in dropdownButtonFormField 3. While selecting value from MultiSelectDialogField it throws[setState() called after dispose():]

    Stack over flow link : https://stackoverflow.com/questions/74248509/flutter-multi-select-throws-setstate-called-after-dispose

    opened by altafShaikh1717 3
  • dynamically changing list of items for ( items: ) does not update UI accordingly using MultiSelectChipField<T>

    dynamically changing list of items for ( items: ) does not update UI accordingly using MultiSelectChipField

    So what im trying to do is filter lists of topics based on the the value of a selected subject through a map: Map<String, List<Topic?>> subjectTopics = { "": [Topic(id: 1, name: "Choose a subject")], "Chemistry": [ Topic(id: 1, name: "Moles"), ], "Maths": [ Topic(id: 1, name: "Series"), Topic(id: 2, name: "Polynomials"), ] };

    List<Topic?> topics = subjectTopics[selectedSubject];

    I update the value of the selected subject through setstate and then re-assign topics with the corresponding values from the map into a list. The widget im trying to use is MultiSelectChipField<Topic?> which upon the initialised state displays the correct values however if I update the selected subject through setState the UI does not get updated. The exception i get is "Looking up a deactivated widget's ancestor is unsafe", I have tried adding my map to didChangeDependancy as well however it did not work. Is there any way i can update the MultiSelectChipField UI via changing the items: ? Any help would me much appreciated.

    opened by AbdurrehmanSubhani 3
  • Initial value doesn't remove on tap badge

    Initial value doesn't remove on tap badge

    When using initialValue for MultiSelectBottomSheetField, tapping on initial selected badges doesn't work. For example: `
    List<Object?> _selectedAnimals = [animal[2], animal[1]];

                         initialValue = _selectedAnimals;
    
                         onTap: (value) {
                          setState(() {
                              _selectedAnimals.remove(value);
                          });
    

    `

    opened by GreedyDevOfficial 3
  • Error MultiSelectChipField

    Error MultiSelectChipField

    The following _TypeError was thrown building MultiSelectChipField-[LabeledGlobalKey<FormFieldState>#c739f](dirty, dependencies: [UnmanagedRestorationScope], state: FormFieldState<List>#2cdc6): type '(MultiSelectItem, FormFieldState<List>) => Widget' is not a subtype of type '((MultiSelectItem<FeaturesTransportUnitModel?>, FormFieldState<List<FeaturesTransportUnitModel?>>) => Widget)?'

    The relevant error-causing widget was MultiSelectChipField-[LabeledGlobalKey<FormFieldState>#c739f]

    opened by miguelflores1993 0
  • Depreciate in favour of Material Chip Class

    Depreciate in favour of Material Chip Class

    With underlying errors, this should be depreciated in favour of material chips, added as of a few weeks ago in flutter 3.3 afaik

    https://api.flutter.dev/flutter/material/Chip-class.html

    opened by AllenKaplan 0
App concept created with Flutter using Dart programming language, inspired by Multi Search By Categories.

Photography Explorer Flutter App App concept created with Flutter using Dart programming language, inspired by Multi Search By Categories. About This

Wilton Neto 103 Sep 28, 2022
An awesome Flutter 3d project by Flutter_Cube package

flutter3d A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if thi

Azamatjan 1 Oct 26, 2021
❤️Flutter ❤️ tips and tricks ❤️ Awesome Flutter ❤️ tips and tricks ❤️

❤️ Awesome Flutter ❤️ tips and tricks ❤️ Tip 1 : stless & stful We can type stless and stful and we get Autocomplete Suggestion to generate Stateless

Laxman Bhattarai 2.8k Dec 28, 2022
It says it all. Not In Flutter Docs, a sort of underground guide to flutter app development and design.

Not In Flutter Docs It says it all. Not In Flutter Docs, a sort of underground guide to flutter app development and design. Licenses Code is under BSD

Fred Grott 56 Dec 27, 2022
🎓Flutter TodoList tutorial

Todo List built with Flutter Built with Git Tutor This tutorial will walk you through the process of building of a simple todo-list with Flutter Getti

Andrei Lesnitsky 294 Dec 29, 2022
Highly Subjective Roadmap to Flutter Development

Flutter Roadmap Dev Environment https://learngitbranching.js.org Language https://dart.dev/guides/language/language-tour https://dart.dev/guides/langu

Oleksandr Leuschenko 4.3k Jan 2, 2023
Learn to Code While Building Apps - The Complete Flutter Development Bootcamp

Learn to Code While Building Apps - The Complete Flutter Development Bootcamp

London App Brewery 9.3k Dec 31, 2022
Based on Microsoft Fluent Design System and made using the help of Flutter VelocityX.

Vx Fluent UI for Flutter Based on Microsoft Fluent Design System and made using the help of Flutter VelocityX. VxFluentUI is a Flutter component libra

Pawan Kumar 14 Jan 28, 2022
Learn Flutter in 30 Days

flutter_catalog A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started

Pawan Kumar 329 Dec 29, 2022
Personal Knowledge Base (PKB). Flutter Responsive Web, Desktop, Android, iOS app. MobX as state management.

PKB - Responsive Flutter Web / Desktop / Android / iOS "Personal Knowledge Base" app written on Flutter. >> View DEMO Video About project This project

Vladimir 21 Oct 10, 2022
Flutter Portfolio App Concept - Day 33

Flutter Portfolio App Concept - Day 33

Mohammad Rahmani 29 Nov 10, 2022
Flutter Tutorial - Speech To Text & Voice Recognition

Flutter Tutorial - Speech To Text & Voice Recognition Let's build a Speech To Text Flutter app which recognizes & analyzes your words to execute comma

null 0 Nov 3, 2021
A Collection of Flutter and Dart Tips and Tricks

A Collection of Flutter and Dart Tips and Tricks

Vandad Nahavandipoor 5.7k Dec 27, 2022
A Flutter implementation of an expandable and animated floating search bar, also known as persistent search.

Material Floating Search Bar A Flutter implementation of an expandable floating search bar, also known as persistent search, similar to the ones used

null 390 Mar 3, 2022
A curated list of awesome cheats needed to quickly get started with flutter development.

dart-cheat-sheet A curated list of awesome stuff needed to get started with your flutter development journey Table of Contents String interpolation Fu

Temidayo Adefioye 137 Jan 2, 2023
Animal Sounds App written in flutter for the #100daysOfCode

animalsounds A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if

Antonio Giordano 0 Jan 9, 2022
Amazon Bookshelf Interface Design made in Flutter

amazon_ui_clone A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started

Emanoel Santana 0 Nov 25, 2021
A Flutter widget that scrolls text widget and other widget

marquee_widget A Flutter widget that scrolls Widget Text and other Widget with supported RTL. Provides many customizationsincluding custom scroll dire

Yousif Khalid 23 Nov 21, 2022
Flutter.io - How Many People Are In Space Right Now?

hmpaisrn A new Flutter application. How Many People Are In Space Right Now? Google Play Store https://play.google.com/store/apps/details?id=de.bergera

berger 13 Mar 16, 2021