leo_easy_ui_kit 0.1.0 copy "leo_easy_ui_kit: ^0.1.0" to clipboard
leo_easy_ui_kit: ^0.1.0 copied to clipboard

Leo Easy UI Kit: effortless yet powerful Flutter UI components.

leo_easy_ui_kit #

Extremely easy APIs. Serious customization under the hood.

leo_easy_ui_kit is a reusable Flutter UI framework that standardizes value-driven widgets, delivers declarative integrations (ValueNotifier, Bloc, Provider, Hooks), and keeps APIs tiny without sacrificing power.

Every widget is generic-friendly (<T>), null-safe, and production ready.


✨ Features #

  • Clean base layer: shared typedefs, controllers, ChangeNotifiers, Bloc primitives.
  • Built-in multi-select (multiSelect: true/false) for every value widget that makes sense.
  • Simple + advanced widgets for every component (dropdown, checkbox, radio, switch, popup, bottom sheet, chips, table, text field, search).
  • Built-in integrations: ValueNotifier, flutter_bloc, Provider, flutter_hooks.
  • One-liner helpers via easyDropdownOf, easyCheckboxOf, easyRadioOf, easySwitchOf, easyButtonGroupOf, easyChipsOf, easyPopupSelectOf, easyBottomSheetSelectOf, easyTextFieldOf, easySearchOf.
  • Fully customizable through builder callbacks, decoration/style factories, and animation hooks.
  • Curated bottom sheets and dialogs for common flows (dropdowns, file pickers, image pickers, selectors).

🚀 Getting started #

  1. Add the dependency (pub.dev):
dependencies:
  leo_easy_ui_kit: ^0.1.0
  1. Import the library:
import 'package:leo_easy_ui_kit/leo_easy_ui_kit.dart';
  1. Use the widgets you need (or the shortcuts).

🧱 Architecture #

  • lib/src/base/: shared contracts (EasyBaseWidget, EasySelectionController, EasyBloc, EasyValueNotifier).
  • Feature folders (dropdown/, popup/, etc.) keep logic isolated and composable.
  • leo_easy_ui_kit.dart re-exports everything for a single import.

💡 Usage (EasyDropdown) #

EasyDropdown<User>(
  items: users,
  value: selected,
  itemBuilder: (context, user, isSelected) => Text(user.name),
  onChanged: (user) => setState(() => selected = user),
);

EasyDropdownAdvanced<User>(
  items: users,
  placeholder: 'Pick owner',
  multiSelect: true,
  selectedValues: selectedMany,
  onChangedMany: (values) => setState(() => selectedMany = values),
  itemBuilder: (context, user, isSelected) => Row(
    children: [
      CircleAvatar(child: Text(user.initials)),
      const SizedBox(width: 8),
      Text(user.name),
    ],
  ),
  decorationBuilder: (isOpen, hasValue) => BoxDecoration(
    borderRadius: BorderRadius.circular(16),
    border: Border.all(
      color: isOpen ? Colors.blue : Colors.grey.shade400,
    ),
  ),
);

EasyDropdownBloc<User>(
  bloc: userBloc,
  items: users,
  itemBuilder: (context, user, _) => Text(user.name),
  multiSelect: true,
);

File & image pickers #

EasyFilePicker<XFile>(
  label: 'Upload attachments',
  allowMultiple: true,
  values: attachments,
  onChangedMany: (files) => setState(() => attachments = files),
  onPick: (category, allowMultiple) async {
    // trigger preferred picker (file_picker, image_picker, etc.)
    return await pickFiles(category, allowMultiple);
  },
);

EasyImagePicker<XFile>(
  allowMultiple: false,
  value: avatar,
  onChanged: (image) => setState(() => avatar = image),
  onPick: (source, allowMultiple) async {
    final images = await pickImages(source);
    return images;
  },
);

📚 Roadmap #

  • Add example app with more real-world screens and layouts.
  • Provide Riverpod variants where helpful.
  • Extend theming utilities and presets for cohesive dashboards.

🛠 Contributing #

  1. Fork & clone.
  2. Run flutter pub get.
  3. Add tests & docs.
  4. Submit a pull request.

Issues and feature requests are welcome!

8
likes
0
points
123
downloads

Publisher

unverified uploader

Weekly Downloads

Leo Easy UI Kit: effortless yet powerful Flutter UI components.

Repository (GitHub)
View/report issues

Topics

#flutter #ui-kit #widget #form

License

unknown (license)

Dependencies

equatable, flutter, flutter_bloc, flutter_hooks, provider

More

Packages that depend on leo_easy_ui_kit