flutter_utils_project
cc_avenue payment gateway non-seamless
Getting Started
This project is a starting point for a Flutter plug-in package, a specialized package that includes platform-specific implementation code for Android and/or iOS.
This library works to provide the tools and parts needed to build your project faster.
As of now this package supports only Android
In this library you can find:
SharedPreferences
.AppTheme
Dark-light.AutoSizeText
.ContextExtensions
.ErrorHandler
.IntExtensions
.TextStyle
.StringExtension
.Spacing
.WidgetExtension
.Button
(Type) => rounded - small - medium - text - block - outlined - large.Container
(Type) => none - bordered - roundBordered - rounded.TextFormField
(Type) => none - bordered - roundBordered - rounded.Text
=> There are mainly 13 types of Text widgets.Patterns
for url - phone - image - audio - text - document - excel - ppt - apk - pdf - html.
1- How to use the SharedPreferences
set String
await MySharedPreferences.setString('username', ' Enter Username');
get String
await MySharedPreferences.getString('username', ' Enter Username');
get delete
await MySharedPreferences.deleteString('username');
You can also do a lot of operations with SharedPreferences
2- Use the AppTheme
import 'package:provider/provider.dart';
import 'package:flutter/material.dart';
import 'package:flutter_utils_project/flutter_utils_project.dart';
Future<void> main() async {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider<FuAppThemeNotifier>(
create: (_) => FuAppThemeNotifier(),), ],
child: const MyApp()
) );
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Consumer<FuAppThemeNotifier>(
builder: (BuildContext context, FuAppThemeNotifier value, Widget? child) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: "Flutter Utils Project",
theme: FuAppTheme.getThemeFromThemeMode(),
home: const HomeScreen()//navigator to your HomeScreen
);
});
}
}
3- Use AutoSizeText
AutoSizeText
behaves exactly like a Text
. The only difference is that it resizes text to fit within its bounds.
AutoSizeText(
'A really long String',
style: TextStyle(fontSize: 30),
maxLines: 2,
)
maxLines
The maxLines
parameter works like you are used to with the Text
widget. If there is no maxLines
parameter specified, the AutoSizeText only fits the text according to the available width and height.
AutoSizeText(
'A really long String',
style: TextStyle(fontSize: 30),
maxLines: 2,
)
4- Use the ContextExtensions
bool get isSmallTablet => (mediaQueryShortestSide >= 600);
can you get found context Extensions `mediaQueryPadding` - `mediaQuery` - `textTheme` - `mediaQueryViewPadding` - `orientation` - `textScaleFactor` - `mediaQueryShortestSide`
and Responsive
ui `isPhone` - `isSmallTablet` - `isLargeTablet` - `isTablet`
and the a lot Extensions
Container(
color: context.textTheme.bodyText2!.color,//can yuo get found Context Extensions theme
height: context.height / 2,//can yuo get found Context Extensions height (mediaQuerySize height)
width: context.width / 1.5,
child: const Center( child: Text( 'wellCome', style: TextStyle(color: Colors.white), ),
),
),
5- ErrorHandler
can you handler error Exception
.
Handling for Error Exception Example (No Internet Connection 😑
or Bad response format 👎
or Couldn't find the post 😱 )
And if nothing happens, he'll return the default mistake.
Future<List<YOURMODEL>?> getProfile(BuildContext context) async {
try {
static const Map<String, String> HEADER = {
"Content-type": "application/json",
"Accept": "application/json" "Access-Control-Allow-Origin: *",
HttpHeaders.authorizationHeader: 'YOUR TOKEN'
};
List<YOURMODEL> profile = [];//your model class
http.Response response = await http.get(
Uri.parse('YOUR URI'),
headers: HEADER
);
if (response.statusCode == 200) {
List list = json.decode(response.body);
profile = list.map((model) => YOURMODEL.fromJson(model)).toList();
return profile;
} else {
var massages = jsonDecode(response.body);
String error = massages['Error'];
// return showSnackBar(); //can you return anything
print(error)
}
} catch (err) {
/*
Handling for Error Exception Example (No Internet Connection 😑
or Bad response format 👎
or Couldn't find the post 😱 )
And if nothing happens, he'll return the default mistake.
*/
ApiErrorHandler.parseError(err, context,);
print("$err Error");
}
return null;
}
6- IntExtensions
height
=> Leaves given height of space
Container(child:Text('Example1')),
5.height,
Container(child:Text('Example2')),
width
=> Leaves given width of space
isSuccessful
=>HTTP status code
if(response.statusCode=isSuccessful){
print(' statusCode Successful')
}
borderRadius
microseconds
Returns microseconds duration
5.microseconds
milliseconds
Returns milliseconds duration
5.milliseconds
seconds
Returns minutes duration
5.seconds
minutes
Returns hours duration
5.minutes
hours
Returns hours duration
5.hours
days
Returns days duration
5.days
7- TextStyle
FuTextStyle - gives 13 different type of styles to the text on the basis of size
FuText.h1(
'Example h1',
color: Colors.white,
),
FuText.b1(
'Example b1',
color: Colors.white,
),
FuText.button(
'Example button',
color: Colors.white,
),
8- StringExtension
isImage
ElevatedButton(
onPressed: () {
String image = 'image.png';
if (image.isImage == true) {
print('Already it image');
}else{
print('Its not in the form of a image.');
}
},
child: const Text('isImage'))
getNumericOnly
Returns only numbers from a string trim Whitespaces
ElevatedButton(
onPressed: () {
String text = 'image.png12';
print(text.getNumericOnly(text));
},
child: const Text('getNumericOnly'))
removeAllWhiteSpace
Removes white space from given String
ElevatedButton(
onPressed: () {
String text = 'image. png12';
print(text.removeAllWhiteSpace());
},
child: const Text('removeAllWhiteSpace'))
validateEmail
Check email validation
ElevatedButton(
onPressed: () {
String email = 'testemail@gmail.com';
print(email.validateEmail());
},
child: const Text('validateEmail'))
Returns true if given String is null or isEmpty
isEmptyOrNull
Check email validation
ElevatedButton(
onPressed: () {
String data = '';
if(data.isEmptyOrNull){
print(data.isEmptyOrNull);
}else{ print('false');}},
child: const Text('isEmptyOrNull'))
capitalizeFirstLetter
Capitalize given String
ElevatedButton(
onPressed: () {
String data = 'welcome';
print(data.capitalizeFirstLetter());
},
child: const Text('capitalizeFirstLetter'))
and find a lot String extension
9- Spacing
FuSpacing - provides spacing of various types.
const Text('welcome'),
FuSpacing.height(30),
const Text('FuSpacing')
10- WidgetExtension
Text('withHeight').withHeight(20),
Text('widthAndHeight').widthAndHeight(height: 12, width: 11),
Text('visible').visible(false),
Text('onTap').onTap(() { print('print'); }),
Text('withTooltip').withTooltip(msg: 'Text'),
Text('paddingAll').paddingAll(12),
Text('paddingBottom').paddingBottom(12),
Text('paddingLeft').paddingLeft(12),
Text('paddingRight').paddingRight(12),
Text('paddingOnly').paddingOnly(bottom: 30,top: 50,left: 0,right: 12),
Text('paddingOnly').paddingOnly(bottom: 30, top: 50, left: 0, right: 12),
Text('expand').expand(),
Text('center').center(),
Text('fit').fit(),
Text('flexible').flexible(),
Text('paddingSymmetric').paddingSymmetric(),
WidgetExtension.empty(),