Skip to content

chandabdullah/ready_widgets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ready_widgets

Pub Version
Platform

A Flutter package offering a collection of reusable, customizable widgets to streamline UI development with minimal setup and no third-party dependencies. This package includes buttons, inputs, avatars, network images, shimmer effects, and more.


πŸš€ Installation

Add ready_widgets to your pubspec.yaml dependencies:

dependencies:
  ready_widgets: ^latest_version

Then run:

flutter pub get

Import the package in your Dart file:

import 'package:ready_widgets/ready_widgets.dart';

πŸ“š Widgets and Usage

πŸ”˜ Buttons

1. ReadyTextButton

A flexible text button with solid, outlined, or transparent styles, supporting icons and customizable sizes.

Example: Basic Transparent Button
ReadyTextButton(
  text: 'Click Me',
  onPress: () => print('Pressed!'),
),
Example: Solid Button with Icon
ReadyTextButton.solid(
  text: 'Submit',
  icon: Icons.check,
  iconPosition: IconPosition.leading,
  backgroundColor: Colors.blue,
  textColor: Colors.white,
  size: ReadyButtonSize.large,
),
Example: Outlined Button
ReadyTextButton.outlined(
  text: 'Cancel',
  borderColor: Colors.red,
  onPress: () => print('Cancelled!'),
),

2. ReadyLikeButton

A toggleable like button with animation, supporting solid, outlined, or transparent styles.

Example: Default Like Button
ReadyLikeButton(
  onPress: (isLiked) async {
    await Future.delayed(Duration(milliseconds: 500));
    return !isLiked;
  },
),
Example: Solid Like Button
ReadyLikeButton.solid(
  color: Colors.red,
  iconColor: Colors.white,
  size: ReadyButtonSize.large,
  isLiked: true,
),

3. ReadyIconButton

An icon-only button with support for badges, tooltips, and rounded or rectangular shapes.

Example: Basic Icon Button
ReadyIconButton(
  iconData: Icons.favorite_border,
  onPress: () => print('Icon pressed!'),
  tooltip: 'Favorite',
),
Example: Solid Icon Button with Badge
ReadyIconButton.solid(
  iconData: Icons.notifications,
  backgroundColor: Colors.blue,
  badge: 5,
  size: ReadyButtonSize.large,
),

4. ReadyElevatedButton

A customizable elevated button with optional icons and predefined size variants.

Example: Default Elevated Button
ReadyElevatedButton(
  text: 'Submit',
  onPress: () => print('Submitted!'),
),
Example: Small Button with Icon
ReadyElevatedButton.small(
  text: 'Save',
  icon: Icons.save,
  backgroundColor: Colors.green,
  textColor: Colors.white,
),

Ready Buttons


⌨️ Inputs

5. ReadyInput

A customizable text input field with support for prefix/suffix icons, validation, and decoration styles.

Example: Basic Input
ReadyInput(
  label: 'Name',
  hint: 'Enter your name',
  controller: TextEditingController(),
),
Example: Password Input
ReadyInput(
  label: 'Password',
  hint: 'Enter your password',
  isObscure: true,
  prefixIcon: Icon(Icons.lock),
),

6. ReadyPhoneInput

A phone number input with a country code picker and localized country names.

Example: Basic Phone Input
ReadyPhoneInput(
  controller: TextEditingController(),
  onCountryChange: (country) => print('Selected: ${country.name}'),
  initialDialCode: '+1',
),
Example: Phone Input with Validation
ReadyPhoneInput(
  controller: TextEditingController(),
  onCountryChange: (country) => print('Country: ${country.dialCode}'),
  validator: (value) =>
      value!.length < 10 ? 'Phone number too short' : null,
),

Ready Inputs

Ready Inputs 1


πŸ“­ Empty Widget

7. ReadyEmptyWidget

A widget for empty states with an animated icon, title, subtitle, and optional additional widget.

Example: Basic Empty State
ReadyEmptyWidget(
  title: 'No Data Found',
  subtitle: 'Try adding some items.',
  icon: Icons.info_outline,
),
Example: Custom Empty State with Button
ReadyEmptyWidget(
  title: 'Empty List',
  subtitle: 'Start by adding a new item.',
  customIcon: Icon(Icons.error, size: 40, color: Colors.red),
  additionalWidget: ReadyElevatedButton(
    text: 'Add Item',
    onPress: () => print('Add item pressed!'),
  ),
),

Ready Empty Widget


πŸ–ΌοΈ Network Image

8. ReadyNetworkImage

A network image widget with shimmer loading and error handling.

Example: Basic Network Image
ReadyNetworkImage(
  imageUrl: 'https://example.com/image.jpg',
  width: 100,
  height: 100,
),
Example: Rounded Image with Custom Error
ReadyNetworkImage(
  imageUrl: 'https://example.com/invalid.jpg',
  width: 120,
  height: 120,
  isRounded: true,
  borderColor: Colors.blue,
  borderWidth: 2,
  errorWidget: Icon(Icons.error, size: 40),
),

Ready Images


✨ Shimmer

9. ReadyShimmer

A dependency-free shimmer effect for loading placeholders.

Example: Basic Shimmer
ReadyShimmer(
  width: 200,
  height: 100,
),
Example: Custom Shimmer Colors
ReadyShimmer(
  width: 150,
  height: 150,
  borderRadius: BorderRadius.circular(16),
  shimmerColors: [Colors.blue.shade200, Colors.blue.shade50, Colors.blue.shade200],
),

Ready Shimmer


πŸ‘€ Avatar

10. ReadyAvatar

An avatar widget displaying a network image or initials, with an optional online status indicator.

Example: Basic Avatar
ReadyAvatar(
  imageUrl: 'https://example.com/avatar.jpg',
  size: 60,
),
Example: Initials Avatar with Online Indicator
ReadyAvatar(
  name: 'John Doe',
  isOnline: true,
  size: 80,
  backgroundColor: Colors.blue,
  textColor: Colors.white,
),

πŸ“– Read More

11. ReadyReadMoreText

A widget for trimming long text with "Read more" and "Read less" toggle links.

Example: Basic Read More
ReadyReadMoreText(
  text: 'This is a very long text that needs to be truncated because it exceeds the maximum number of lines allowed.',
  maxLines: 2,
),
Example: Length-Based Trimming
ReadyReadMoreText(
  text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
  trimMode: TrimMode.length,
  trimLength: 50,
  moreLessStyle: TextStyle(color: Colors.red, fontWeight: FontWeight.bold),
),

Ready Text


πŸ› οΈ Features

  • No Third-Party Dependencies: Lightweight and built with Flutter's core libraries.
  • Customizable: Extensive styling options for colors, sizes, icons, and more.
  • Responsive: Adapts to different screen sizes and orientations.
  • Platform Support: Works on all Flutter-supported platforms (iOS, Android, web, etc.).
  • Interactive: Includes animations (e.g., shimmer, like button scale) and interactive elements (e.g., country picker, read more links).

β˜• Support the Developer

If you find ready_widgets helpful, consider supporting the developer:

Buy Me A Coffee

πŸ“ Notes

  • Documentation: Check the ready_widgets page on pub.dev for the latest version and additional details.
  • Versioning: Always use the latest version in pubspec.yaml to access new features and fixes.
  • Contributions: Contributions, issues, and feature requests are welcome on the package's GitHub repository.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages