customizable_widget 0.0.4
customizable_widget: ^0.0.4 copied to clipboard
UI template to simplify your creation of multi-shapes widgets.
customizable_widget #
⬛️ - This Flutter package allows you to use a variety of customizable widgets that are designed to be highly reusable, saving you time in your app development process.
Included Widgets #
We provide the following widgets in multiple formats and shapes to easily meet your requirements:
- AppBar
- ElevatedButton
- DropdownButton
- TextFormField
These widgets are designed to be flexible and customizable to fit different design needs. If they don't meet your expectations, you're welcome to use the standard Flutter widgets.
Getting Started #
Add dependency #
Add customizable_widget to your project by including it in your pubspec.yaml file :
dependencies:
customizable_widget: ^0.0.4
Features #
AppBar Customizations #
Customize your AppBar with various shapes and features as shown below:
- Standard Shape
- Curvy Shape
- Semi-Circular Shape
- Oval Shape
- Triangle Shape

CustomAppBar code examples #
⬛️ 1 #

// Custom AppBar with a flexible design allowing for image backgrounds, custom actions, and a search widget.
appBar: CustomAppBar(
titleText: 'Store', // Title of the AppBar.
textStyle: const TextStyle(
fontWeight: FontWeight.bold, // Bold text for the title.
fontSize: 30, // Font size for the title.
color: Colors.white, // Color of the title text.
),
height: 120, // Height of the AppBar.
bottomWidget: SearchWidget(), // Custom widget placed at the bottom of the AppBar.
showBackButton: true, // Displays a back button on AppBar.
actions: const [
Padding(
padding: EdgeInsets.all(12.0), // Padding around the menu icon.
child: Icon(Icons.menu), // Menu icon on the right side of AppBar.
),
],
backgroundWidget: Image.network(
'https://example.com/image.jpg', // Background image for the AppBar.
fit: BoxFit.cover, // Cover fit for the background image to fill the space.
),
),
⬛️ 2 #

// Custom AppBar with a triangle shape design tailored for profile screens.
appBar: CustomAppBar.triangleShape(
titleText: 'Profile', // Title of the AppBar, displayed prominently.
textStyle: const TextStyle(
fontWeight: FontWeight.bold, // Bold weight for the title text to enhance visibility.
fontSize: 30, // Large font size for clear readability.
color: Colors.white, // White color for the title text to contrast with the background.
),
height: 120, // Specifies the height of the AppBar, giving ample space for content.
showBackButton: true, // Includes a back button for navigation.
actions: const [
Padding(
padding: EdgeInsets.all(12.0), // Padding around the menu icon for better touch area.
child: Icon(Icons.menu), // Menu icon placed on the right for additional options.
),
],
backgroundWidget: Image.network(
'https://th.bing.com/th/id/OIP.TsXboIzd83FRSSPVQMD9QHaEL?w=852&h=480&rs=1&pid=ImgDetMain',
fit: BoxFit.cover, // Ensures the background image covers the entire AppBar area.
),
),
⬛️ 3 #

// Custom AppBar with a semi-circular design, simple yet effective for titles.
appBar: CustomAppBar.semiCircularShape(
titleText: 'Hello', // The title displayed in the AppBar.
),
⬛️ 4 #

// Custom AppBar with a curvy design, offering a unique aesthetic for the application.
appBar: CustomAppBar.curvyShape(
titleText: 'Hello', // Sets the title of the AppBar.
),
⬛️ 5 #

// Custom AppBar with an oval shape, providing a soft and welcoming design.
appBar: CustomAppBar.ovalShape(
titleText: 'Hello', // Sets the title of the AppBar.
),
ElevatedButton Customizations #
Customize your ElevatedButton with different shapes:

CustomElevatedButton code examples #
⬛️ 1 #

// Custom ElevatedButton designed with beveled corners, providing a modern and attractive look.
CustomElevatedButton.beveledCornersShape(
text: 'Edit', // Display text on the button, which indicates the action to be taken.
icon: Icons.edit, // Icon that visually represents the action (edit), enhancing user understanding.
borderRadius: BorderRadius.circular(50), // Large border radius to create rounded, beveled corners.
onPressed: () {}, // Callback function that defines what happens when the button is pressed.
),
⬛️ 2 #

// Custom ElevatedButton designed with curved corners to create a smooth and visually appealing interface.
CustomElevatedButton.curvedCornersShape(
text: 'Edit', // The button's label, clearly indicating its function to users.
icon: Icons.edit, // Icon accompanying the text, visually representing the editing action.
borderRadius: BorderRadius.circular(50), // Sets the border radius to achieve a fully rounded look.
onPressed: () {}, // Callback function that is triggered
),
⬛️ 3 #

// Custom ElevatedButton with a stadium shape, providing a modern look with elongated rounded ends.
CustomElevatedButton.textOnlyWithStadiumShape(
text: 'Edit', // Text displayed on the button, indicating the action that will be performed.
onPressed: () {}, // Callback function that will be executed
),
DropdownButton Customizations #
Customize your DropdownButton to match your app's theme:

// CustomDropdown component for selecting options from a dropdown menu, designed for visual appeal and flexibility.
CustomDropdown<String>(
items: const [
DropdownMenuItem(value: "Red", child: Text("Red")), // First dropdown item with 'Red' as the value.
DropdownMenuItem(value: "Blue", child: Text("Blue")), // Second dropdown item with 'Blue' as the value.
],
value: selectedColor, // Variable that holds the currently selected value from the dropdown.
icon: const Icon(Icons.color_lens), // Icon to indicate that this dropdown is for selecting a color.
elevation: 10, // Shadow depth beneath the dropdown to make it stand out visually.
padding: const EdgeInsets.all(16), // Padding inside the dropdown to space out the content.
menuBorderRadius: BorderRadius.circular(50), // Rounded corners of the dropdown menu for a smoother look.
menuItemHeight: 50, // Fixed height for each item in the dropdown menu.
menuColor: Colors.lightBlue[50], // Background color of the dropdown menu.
textStyle: const TextStyle(color: Colors.deepPurple, fontSize: 18), // Style of the text in dropdown items.
dropdownDecoration: BoxDecoration(
color: Colors.grey[200], // Background color of the dropdown itself.
borderRadius: BorderRadius.circular(50), // Rounded corners of the dropdown.
),
fittedDropdown: true, // Ensures the dropdown fits its content tightly.
expandedDropdown: true, // Allows the dropdown to expand to show all items without scrolling.
onDropdownTapped: () => print("Dropdown tapped"), // Function to call when the dropdown is tapped.
onChanged: (value) { // Function that updates the state when a new option is selected.
setState(() {
selectedColor = value!; // Update the selected color with the new value.
});
},
),
TextFormField Customizations #
Customize your TextFormField for a cohesive look:

// CustomTextField specifically designed for password entry, enhancing security and user experience.
CustomTextField(
labelText: 'Password', // Label text that appears above the TextField when it is not focused.
borderRadius: 20, // Border radius for the TextField, providing rounded corners.
focusedFieldColor: Colors.green, // Color of the TextField when it is focused, indicating active input.
prefixIcon: Icons.remove_red_eye, // Icon used to toggle password visibility.
hideText: true, // Ensures the text is hidden as it is a password field.
hintText: "Hint", // Hint text that provides a clue about the password expected.
hintStyle: const TextStyle(color: Colors.grey), // Style for the hint text, subtly suggesting input.
),
Support and Contributions #
❤️ Found this project useful? Consider giving it a ⭐ on GitHub and sharing it with your friends via social media.