category_picker 1.0.1 category_picker: ^1.0.1 copied to clipboard
An input widget to handle selection of category like choices. Inspired by the YouTube recommendations bar on the home page.
category_picker #
An input widget to handle selection of category like choices.
Usage #
To use this widget simply add category_picker as a dependency to your project in the pubspec.yaml file and import it if needed.
Example #
(Barebone)
import 'package:category_picker/category_picker.dart';
import 'package:category_picker/category_picker_item.dart';
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: CategoryPicker(
items: [
CategoryPickerItem(
value: "Test",
),
CategoryPickerItem(
value: "Test2",
),
CategoryPickerItem(
value: "Test3",
),
],
onValueChanged: (value) {
print(value.label);
},
),
),
);
}
A more detailed example is available in the example folder
CategoryPickerItem() parameters #
PropName | Description | Default value |
---|---|---|
isSelected | Determines if the item is currently selected | false (not in constructor) |
value | The value of the item | required |
label | String to be displayed on the item itself | String value of value if null |
CategoryPicker() parameters #
PropName | Description | Default value |
---|---|---|
items | List of children to be displayed | required |
defaultSelected | Default selected item in range of 0 - items.length |
0 |
onValueChanged | Callback with entire item when user switches selection. | () => {} |
backgroundColor | Background color of entire category picker | Colors.transparent |
selectedItemColor | Background color of selected item | Theme.of(context).accentColor |
unselectedItemColor | Background color of all items that are not selected | Colors.transparent |
selectedItemBorderColor | Border color of the selected item | Colors.transparent |
unselectedItemBorderColor | Border color of all unselected items | Colors.grey[800] |
selectedItemTextDarkThemeColor | Text color of the text for light theme inside an item while selected | Colors.white |
selectedItemTextLightThemeColor | Text color of the text for light theme inside an item while not selected | Colors.black |
unselectedItemTextDarkThemeColor | Text color of the text for dark theme inside an item while selected | Colors.white |
unselectedItemTextLightThemeColor | Text color of the text for dark theme inside an item while not selected | Colors.white |
itemBorderRadius | Border radius for all items | BorderRadius.circular(30) |
itemHeight | Height of all items | 32.0 |
itemLabelFontSize | Font size of the text inside of all items | 16.0 |
categoryPickerMargin | Margin of the entire category picker | EdgeInsets.symmetric(vertical: 11) |
categoryPickerPadding | Padding of the entire category picker | EdgeInsets.symmetric(horizontal: 16, vertical: 8) |
itemMargin | Margin applied to each individual item | EdgeInsets.symmetric(horizontal: 4) |
itemPadding | Padding applied to each individual item | EdgeInsets.symmetric(horizontal: 12) |