- Utilities and Extensions for num, BuildContext, EdgeInsets, File, String. Constants for horizontal and vertical spacing.
- Social Buttons - Facebook, Google, Apple
- Gradient Button
- ImagePickerHelper for picking images and files
import 'package:flutter/material.dart';
class SpacingTest extends StatelessWidget {
const SpacingTest({super.key});
@override
Widget build(BuildContext context) {
return Column(
children: const [
/// 4px vertical space
Sizes.gap4,
/// 8px vertical space
Sizes.gap8,
/// 12px vertical space
Sizes.gap12,
/// 16px vertical space
Sizes.gap16,
/// 24px vertical space
Sizes.gap24,
/// 32px vertical space
Sizes.gap32,
/// 48px vertical space
Sizes.gap48,
/// 54px vertical space
Sizes.gap54,
/// 64px vertical space
Sizes.gap64,
],
);
}
}
import 'package:flutter/material.dart';
class SpacingTest extends StatelessWidget {
const SpacingTest({super.key});
@override
Widget build(BuildContext context) {
return Row(
children: const [
/// 4px horizontal space
Sizes.gap4,
/// 8px horizontal space
Sizes.gap8,
/// 12px horizontal space
Sizes.gap12,
/// 16px horizontal space
Sizes.gap16,
/// 24px horizontal space
Sizes.gap24,
/// 32px horizontal space
Sizes.gap32,
/// 48px horizontal space
Sizes.gap48,
/// 54px horizontal space
Sizes.gap54,
/// 64px horizontal space
Sizes.gap64,
],
);
}
}
String text = 'hello world';
/// capitalize first letter of string
final capitalize = text.capitalize;
/// checks given string is null or empty
bool isNullOrEmpty = text.isNullOrEmpty;
/// checks given text is not null and not empty
bool isNotNullNotEmpty = text.isNotNullNotEmpty;
/// checks given string is blank
bool isBlank = text.isBlank;
/// checks given string os not blank
bool isNotBlank = text.isNotBlank;
/// checks string is email
bool isEmail = text.isEmail;
/// recase extensions
/// snakeCase
String snakeCase = text.snakeCase;
/// capitalize
String capitalize = text.capitalize;
/// camelCase
String camelCase = text.camelCase;
/// constantCase
String constantCase = text.constantCase;
/// sentenceCase
String sentenceCase = text.sentenceCase;
/// snakeCase
String snakeCase = text.snakeCase;
/// dotCase
String dotCase = text.dotCase;
/// paramCase
String paramCase = text.paramCase;
/// pathCase
String pathCase = text.pathCase;
/// pascalCase
String pascalCase = text.pascalCase;
/// headerCase
String headerCase = text.headerCase;
/// titleCase
String titleCase = text.titleCase;
/// lowercase
String lowercase = text.lowercase;
/// uppercase
String uppercase = text.uppercase;
/// returns default value is given string is blank
String withDefault = text.getOrDefault('default value');
/// return null if given string is nullOrEmpty
String? withNull = text.getOrNull();
/// checks string is valid phone number
bool isPhoneNumber = text.isValidPhoneNumber;
/// checks string is number
bool isNumeric = text.isNumeric;
/// removes whitespace from string
String removeWhiteSpace = text.removeWhiteSpace;
/// removes \n from string
String removeNextLine = text.removeNextLine;
/// converts to bool
bool? isBool = text.toBool;
/// converts to int
int? isInt = text.isInt;
/// converts to double
double? isDouble = text.toDouble;
/// check string is valid url
bool isUrl = text.isUrl;
/// check string is image path
bool isImage = text.isImage;
/// checks string is video path
bool isVideo = text.isVideo;
/// checks string is audio path
bool isAudio = text.isAudio;
/// checks string is pdf path
bool isPdf = text.isPdf;
/// checks string is text path
bool isText = text.isTxt;
/// checks string is office word file
bool isDocx = text.isDocx;
/// checks string is office excel
bool isXls = text.isXls;
/// checks string is office presentation file
bool isPpt = text.isPpt;
/// checks string is svg path
bool isSvg = text.isSvg;
/// checks string is xml file path
bool isXml = text.isXml;
/// checks string is file path
bool isFile = text.isFile;
Creates Gap with height or width according to its parent
###### Usage:
```dart
import 'package:flutter/material.dart';
class SpacingYTest extends StatelessWidget {
const SpacingYTest({super.key});
@override
Widget build(BuildContext context) {
return Column(
children: [
const Text('Text 1'),
10.gap(/*true if you want to use responsiveness*/),
const Text('Text 2'),
],
);
}
}
class SpacingXTest extends StatelessWidget {
const SpacingXTest({super.key});
@override
Widget build(BuildContext context) {
return Row(
children: [
const Text('Text 1'),
10.gap(/*true if you want to use responsiveness*/),
const Text('Text 2'),
],
);
}
}
-
- microseconds
- milliseconds
- seconds
- minutes
- hours
- days
/// Creates Duration on microseconds
final duration = 10.microseconds;
/// Creates Duration on milliseconds
final duration = 10.milliseconds;
/// Creates Duration on seconds
final duration = 10.seconds;
/// Creates Duration on minutes
final duration = 10.minutes;
/// Creates Duration on hours
final duration = 10.hours;
/// Creates Duration on days
final duration = 10.days;
-
- delayedMicroSeconds()
- delayedMilliSeconds()
- delayedSeconds()
- delayedMinutes()
- delayedHours()
/// Creates Future of Duration on microseconds
final duration = 10.delayedMicroSeconds(()async{
// optional callback
});
/// Creates Future of Duration on milliseconds
final duration = 10.delayedMilliseconds(()async{
// optional callback
});
/// Creates Future of Duration on seconds
final duration = 10.delayedSeconds(()async{
// optional callback
});
/// Creates Future of Duration on minutes
final duration = 10.delayedMinutes(()async{
// optional callback
});
/// Creates Future of Duration on hours
final duration = 10.delayedHours(()async{
// optional callback
});
Created Circular Border Radius
import 'package:flutter/material.dart';
class RadiusTest extends StatelessWidget {
const RadiusTest({super.key});
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
/// creates 10px rounded corner
borderRadius: 10.circularBorderRadius(/*true if you want to use responsiveness*/),
),
);
}
}
Created Circular Radius
import 'package:flutter/material.dart';
class RadiusTest extends StatelessWidget {
const RadiusTest({super.key});
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
/// creates 10px rounded corner for topLeft and topRight
borderRadius: BorderRadius.only(topLeft: 10.circularRadius(/*true if you want to use responsiveness*/),
topRight: 10.circularRadius(/*true if you want to use responsiveness*/),),),
);
}
}
-
- all()
- padLeft()
- padRight()
- padTop()
- padBottom()
- padX()
- padY()
import 'package:flutter/material.dart';
class EdgeInsetsTest extends StatelessWidget {
const EdgeInsetsTest({super.key});
@override
Widget build(BuildContext context) {
return Column(
children: [
/// creates padding with 10px all
Padding(padding: 10.all(/*true if you want to use responsiveness*/)),
/// creates padding with 10px top only
Padding(padding: 10.padTop(/*true if you want to use responsiveness*/)),
/// creates padding with 10px right only
Padding(padding: 10.padRight(/*true if you want to use responsiveness*/)),
/// creates padding with 10px bottom only
Padding(padding: 10.padBottom(/*true if you want to use responsiveness*/)),
/// creates padding with 10px left only
Padding(padding: 10.padLeft(/*true if you want to use responsiveness*/)),
/// creates padding with 10px horizontal
Padding(padding: 10.padX(/*true if you want to use responsiveness*/)),
/// creates padding with 10px vertical
Padding(padding: 10.padY(/*true if you want to use responsiveness*/)),
],
);
}
}
Creates SizedBox with height converted to sliver
import 'package:flutter/material.dart';
class SliverSpaceY extends StatelessWidget {
const SliverSpaceY({super.key});
@override
Widget build(BuildContext context) {
return CustomScrollView(
slivers: [
SliverList(/*children*/),
10.sliverVerticalSpace(/*true if you want to use responsiveness*/),
SliverList(/*children*/)
],
);
}
}
Creates SizedBox with width converted to sliver
import 'package:flutter/material.dart';
class SliverSpaceX extends StatelessWidget {
const SliverSpaceX({super.key});
@override
Widget build(BuildContext context) {
return CustomScrollView(
scrollDirection: Axis.horizontal,
slivers: [
SliverPadding(padding: 10.all),
10.sliverHorizontalSpace(/*true if you want to use responsiveness*/),
SliverPadding(padding: 10.all),
],
);
}
}
Make widgets scrollable
import 'package:flutter/material.dart';
class ScrollableTest extends StatelessWidget {
const ScrollableTest({super.key});
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Text 1'),
Text('Text 2'),
Text('Text 3'),
],
).scrollable();
}
}
Make widgets clickable
import 'package:flutter/material.dart';
class ClickableTest extends StatelessWidget {
const ClickableTest({super.key});
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Text 1'),
Text('Text 2'),
Text('Text 3'),
],
).clickable(onTap: () {
/*
* onTap Callback
* */
},);
}
}
Align widgets to center
import 'package:flutter/material.dart';
class CenterTest extends StatelessWidget {
const CenterTest({super.key});
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Text 1').center(),
Text('Text 2').center(),
Text('Text 3').center(),
],
);
}
}
-
- alignTopLeft()
- alignTopCenter()
- alignTopRight()
- alignCenterLeft()
- alignCenterRight()
- alignBottomLeft()
- alignBottomCenter()
- alignBottomRight()
Create Align widgets
import 'package:flutter/material.dart';
class AlignTest extends StatelessWidget {
const AlignTest({super.key});
@override
Widget build(BuildContext context) {
return Column(
children: [
/// align top left
const Text('Text 1').alignTopLeft(),
/// align top center
const Text('Text 1').alignTopCenter(),
/// align top right
const Text('Text 1').alignTopRight(),
/// align center left
const Text('Text 1').alignCenterLeft(),
/// align center
const Text('Text 1').center(),
/// align center right
const Text('Text 1').alignCenterRight(),
/// align bottom left
const Text('Text 1').alignBottomLeft(),
/// align bottom center
const Text('Text 1').alignBottomCenter(),
/// align bottom right
const Text('Text 1').alignBottomRight(),
],
);
}
}
-
- pad()
- padX()
- padY()
- padLeft()
- padTop()
- padRight()
- padBottom()
- padLTRB()
Wraps with padding widget
import 'package:flutter/material.dart';
class PaddingTest extends StatelessWidget {
const PaddingTest({super.key});
@override
Widget build(BuildContext context) {
return Column(
children: [
/// wraps with all padding
const Text('Text 1').pad(10,responsive:true /* if you want to use responsiveness */),
/// wraps with left only padding
const Text('Text 1').padLeft(10,responsive:true /* if you want to use responsiveness */),
/// wraps with right only padding
const Text('Text 1').padRight(10,responsive:true /* if you want to use responsiveness */),
/// wraps with bottom only padding
const Text('Text 1').padBottom(10,responsive:true /* if you want to use responsiveness */),
/// wraps with top only padding
const Text('Text 1').padTop(10,responsive:true /* if you want to use responsiveness */),
/// wraps with horizontal padding
const Text('Text 1').padX(10,responsive:true /* if you want to use responsiveness */),
/// wraps width vertical padding
const Text('Text 1').padY(10,responsive:true /* if you want to use responsiveness */),
/// wraps widget with padding of left top right bottom
const Text('Text 1').padLTRB(left: 10,
top: 5, right: 10, bottom: 10,
responsive:true /* if you want to use responsiveness */
),
],
);
}
}
-
- primaryColor
- onPrimaryColor
- primaryContainerColor
- onPrimaryContainerColor
/// secondary colors
- secondaryColor
- onSecondaryColor
- secondaryContainerColor
- onSecondaryContainerColor
/// tertiary color
- tertiaryColor
- onTertiaryColor
- tertiaryContainerColor
- onTertiaryContainerColor
/// surface color
- surfaceColor
- onSurfaceColor
/// surface variant color
- surfaceVariantColor
- onSurfaceVariantColor
/// inverse colors
- inverseSurfaceColor
- onInverseSurfaceColor
/// background color
- backgroundColor
- onBackgroundContainerColor
/// outline color
- outlineColor
- outlineVariantColor
/// error colors
- errorColor
- onErrorColor
- errorContainerColor
- onErrorContainerColor
-
- displayLarge
- displayMedium
- displaySmall
- headlineLarge
- headlineMedium
- headlineSmall
- titleLarge
- titleMedium
- titleSmall
- labelLarge
- labelMedium
- labelSmall
- bodyLarge
- bodyMedium
- bodySmall
-
- width
- height
- percentWidth
- percentHeight
-
- removeFocus
- hasFocus
-
- padding
- viewInsets
- viewPadding
-
- mq
-
- responsiveValue
-
- platformBrightness
-
- keyboardHeight
final theme = context.theme;
final colorScheme = context.colorScheme;
/// display text styles
final displayLarge = context.displayLarge;
final displayMedium = context.displayMedium;
final displaySmall = context.displaySmall;
/// headline style
final headlineLarge = context.headlineLarge;
final headlineMedium = context.headlineMedium;
final headlineSmall = context.headlineSmall;
/// title style
final titleLarge = context.titleLarge;
final titleMedium = context.titleMedium;
final titleSmall = context.titleSmall;
/// label style
final labelLarge = context.labelLarge;
final labelMedium = context.labelMedium;
final labelSmall = context.labelSmall;
/// body style
final bodyLarge = context.bodyLarge;
final bodyMedium = context.bodyMedium;
final bodySmall = context.bodySmall;
/// colors
final Color primaryColor = context.primaryColor;
final Color onPrimaryColor = context.onPrimaryColor;
final Color primaryContainerColor = context.primaryContainerColor;
final Color onPrimaryContainerColor = context.onPrimaryContainerColor;
/// secondary colors
final Color secondaryColor = context.secondaryColor;
final Color onSecondaryColor = context.onSecondaryColor;
final Color secondaryContainerColor = context.secondaryContainerColor;
final Color onSecondaryContainerColor => colorScheme.onSecondaryContainer;
/// tertiary color
final Color tertiaryColor = context.tertiaryColor;
final Color onTertiaryColor = context.onTertiaryColor;
final Color tertiaryContainerColor = context.tertiaryContainerColor;
final Color onTertiaryContainerColor = context.onTertiaryContainerColor;
/// surface color
final Color surfaceColor = context.surfaceColor;
final Color onSurfaceColor = context.onSurfaceColor;
/// surface variant color
final Color surfaceVariantColor = context.surfaceVariantColor;
final Color onSurfaceVariantColor = context.onSurfaceVariantColor;
/// inverse colors
final Color inverseSurfaceColor = context.inverseSurfaceColor;
final Color onInverseSurfaceColor = context.onInverseSurfaceColor;
/// background color
final Color backgroundColor = context.backgroundColor;
final Color onBackgroundContainerColor = context.onBackgroundContainerColor;
/// outline color
final Color outlineColor = context.outlineColor;
final Color outlineVariantColor = context.outlineVariantColor;
/// error colors
final Color errorColor = context.errorColor;
final Color onErrorColor = context.onErrorColor;
final Color errorContainerColor = context.errorContainerColor;
final Color onErrorContainerColor = context.onErrorContainerColor;
/// sizes
final width = context.width;
final height = context.height;
/// 1% of screen width
final widthPercentage = context.pw(.1);
/// 1% of screen height
final heightPercentage = context.ph(.4);
/// remove focus / hide keyboard
context.removeFocus();
/// check is keyboard is open
context.hasFocus;
/// padding
/// The parts of the display that are partially obscured by system UI,
/// typically by the hardware display "notches" or the system status bar.
/// for more check [MediaQuery.paddingOf(context)]
context.padding;
/// view insets
/// The parts of the display that are completely obscured by system UI,
/// typically by the device's keyboard.
/// for more check [MediaQuery.viewInsetsOf(context)]
context.viewInsets;
/// view padding
/// The parts of the display that are partially obscured by system UI,
/// typically by the hardware display "notches" or the system status bar.
/// for more check [MediaQuery.viewPaddingOf(context)]
context.viewPadding;
/// media query
context.mq;
/// platform brightness
/// returns platform brightness using [MediaQuery.platformBrightnessOf(context)]
context.platformBrightness
/// keyboard height
/// returns the space occupied by keyboard i.e. [MediaQuery.viewInsetsOf(context).bottom]
context.keyboardHeight
/// responsive value according to device type
final rValue = context.responsiveValue<double>(10,desktop:30,tablet:20);
Singleton class for showing Snackbar
-
- defaultStyle
- successStyle
- errorStyle
- warningStyle
- infoStyle
- duration (defaults 3 seconds)
- floating (defaults true)
- centerText (defaults false)
- contextMaxLines (defaults 2)
you can change global properties using FPSnackbar.instance.propertyName = value
-
-
Snackbar for success messages
FPSnackbar.success( context, title: 'Title', message: 'User created successfully', );
-
Snackbar for error messages
FPSnackbar.error( context, title: 'Title', message: 'Something went wrong!', );
-
Snackbar for success messages
-
Snackbar for info messages
FPSnackbar.info( context, title: 'Title', message: 'Some informative message', );
-
Snackbar for warning messages
FPSnackbar.warning( context, title: 'Title', message: 'Warning message', );
-
Default Snackbar
FPSnackbar.show( context, title: 'Create User', message: 'message', );