Clara
Clara is a Dart & Flutter package providing a collection of helpful extension methods for common tasks.
It includes extensions for String, int, double, DateTime, Widget, and BuildContext to simplify coding and UI work.
Features
- String extensions: localization, null/empty checks, numeric checks, conversions, formatting, UI helpers, URL launching.
- Int & Double extensions: numeric conversions, currency/percent formatting, math operations, UI helpers.
- DateTime extensions: formatting, manipulation, date checks.
- Widget extensions: padding, margin, decoration, visibility, alignment, interaction, animations, debug helpers.
- BuildContext extensions: screen sizes, device type checks, theme shortcuts, border radius values.
Getting Started
Add clara to your pubspec.yaml:
dependencies:
clara: <latest-version>
Import the package:
import 'package:Clara/my_package.dart';
Usage Examples
String Extensions
import 'package:flutter/material.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
String? name = "john doe";
print(name?.capitalize()); // "John doe"
print(name?.titleCase()); // "John Doe"
print("123".isNumeric); // true
print("test@example.com".isEmail); // true
name?.launchWebsite(); // Opens website in browser
name?.launchPhone(); // Starts phone call
name?.launchSms(body: "Hello"); // Opens SMS screen
name?.launchEmail(subject: "Hi"); // Opens email client
}
Widget Extensions
Text("Hello World")
.paddingNormal()
.marginLow()
.cornerRadius(12)
.backgroundColor(Colors.blue)
.onTap(() => print("Tapped"))
.fadeVisible(true, duration: Duration(milliseconds: 300));
Other examples:
Container().shadow(blurRadius: 8, spreadRadius: 2);
Container().withBorder(color: Colors.red, width: 2);
Text("Label").toLabel(fontSize: 18, color: Colors.green);
Text("Rich").toRichText(style: TextStyle(color: Colors.black), children: []);
Int & Double Extensions
int? number = 42;
print(number.toStr()); // "42"
print(number.toCurrencyString(symbol: "\$")); // "$42"
print(number.toPercentString()); // "4200%"
double? price = 1234.567;
print(price.toCurrencyString(locale: "en_US")); // "$1,234.57"
print(price.toPercentString()); // "123456.70%"
DateTime Extensions
DateTime now = DateTime.now();
print(now.toFormattedString()); // "2025-11-12 14:00"
print(now.toDateOnlyString()); // "2025-11-12"
print(now.toTimeOnlyString()); // "14:00"
print(now.isToday); // true
print(now.isWeekend); // false
print(now.addDays(5)); // DateTime 5 days later
print(now.startOfDay()); // DateTime at 00:00
print(now.endOfDay()); // DateTime at 23:59:59
BuildContext Extensions
BuildContext context;
print(context.screenWidth); // Screen width
print(context.screenHeight); // Screen height
print(context.isPhone); // true/false
print(context.isTablet); // true/false
print(context.lowRadiusValue); // 8.0
print(context.normalBorderRadius); // BorderRadius.circular(16)
print(context.theme.primaryColor); // Theme primary color
Libraries
- extensions/async_stream_extensions
- extensions/context_extension
- extensions/date_extension
- extensions/double_extension
- extensions/duration
- extensions/enum_extensions
- extensions/file_extensions
- extensions/format_currency
- extensions/int_extension
- extensions/list_extension
- extensions/map_extension
- extensions/scroll_controller_extensions
- extensions/string_extension
- extensions/time_of_day_extensions
- extensions/widget_extension
- my_package