flutter_project_kit 0.0.2
flutter_project_kit: ^0.0.2 copied to clipboard
'Package Description Overview The App Essentials Package is a comprehensive solution designed to streamline and enhance your Flutter application development process. This package handles critical aspe [...]
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_project_kit/provider/app_theme_provider.dart';
import 'package:flutter_project_kit/provider/text_field_provider.dart';
import 'package:flutter_project_kit/theme/app_theme.dart';
import 'package:flutter_project_kit/theme/app_theme_model.dart';
import 'package:flutter_project_kit/theme/project_kit.dart';
import 'package:flutter_project_kit/util/screen_util.dart';
import 'package:flutter_project_kit/widgets/pro_kit_button.dart';
import 'package:flutter_project_kit/widgets/pro_kit_text.dart';
import 'package:flutter_project_kit/widgets/pro_kit_text_field.dart';
import 'package:provider/provider.dart';
import 'package:flutter_project_kit/theme/core_theme.dart' as theme;
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
/// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => ProKitFieldProvider()),
ChangeNotifierProvider(create: (_) => AppThemeProvider()),
],
child: Consumer<AppThemeProvider>(
builder: (context, value, _) => HomePage(
provider: value,
),
),
);
}
}
class HomePage extends StatefulWidget {
final AppThemeProvider? provider;
const HomePage({super.key, this.provider});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
bool lightTheme = true;
initTheme() {
ProjectKit.initialize(
context: context,
navigatorKey: navigatorKey,
customDarkTheme: AppThemeModel(
scaffold: Colors.black,
text: Colors.white,
appBarBackground: Colors.green,
button: Colors.red,
tabBarBackground: Colors.white),
customLightTheme: AppThemeModel(
scaffold: Colors.white,
text: Colors.deepOrange,
appBarBackground: Colors.yellow,
button: Colors.yellow,
tabBarBackground: Colors.black));
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
initTheme();
}
@override
Widget build(BuildContext context) {
final appProvider = Provider.of<AppThemeProvider>(context, listen: false);
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Muhammad Rauf',
theme: theme.themeLight,
darkTheme: theme.themeDark,
navigatorKey: navigatorKey,
themeMode: widget.provider!.themeMode,
home: Scaffold(
body: Container(
color: AppTheme.cT.scaffold,
child: Column(
children: [
ProKitButton(
text: 'Primary Button',
onPressed: () {
print('Primary Button Pressed');
},
buttonColor: AppTheme.cT.button,
showIcon: true,
iconColor: Colors.white,
),
SizedBox(height: 10.h),
ProKitButton(
text: 'Secondary Button',
onPressed: () {
print('Secondary Button Pressed');
},
buttonColor: Colors.green,
showIcon: true,
iconColor: Colors.white,
),
Container(
margin: EdgeInsets.only(bottom: 20.h),
padding: EdgeInsets.all(16.w),
decoration: BoxDecoration(
color: AppTheme.cT.tabBarBackground,
borderRadius: BorderRadius.circular(12.w),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const ProKitText(
text: 'Sample Text 1',
),
SizedBox(height: 10.h),
const ProKitText(
text: 'Sample Text 2',
),
const ProKitTextField(
hintText: 'Enter your email',
keyboardType: TextInputType.emailAddress,
borderColor: Colors.blue,
focusedBorderColor: Colors.blueAccent,
),
SizedBox(height: 20.h),
const ProKitTextField(
hintText: 'Enter your password',
isPassword: true,
showHideIcon: true,
borderColor: Colors.red,
focusedBorderColor: Colors.redAccent,
),
SizedBox(height: 20.h),
const ProKitTextField(
hintText: 'Enter your name',
borderColor: Colors.green,
focusedBorderColor: Colors.greenAccent,
prefixIconPath: 'assets/icons/sample_icon.svg',
),
],
),
),
],
),
),
floatingActionButton: ElevatedButton(
onPressed: () {
lightTheme = !lightTheme;
appProvider.setTheme(lightTheme ? ThemeMode.light : ThemeMode.dark);
},
child: const Text("ChangeTheme"),
),
),
);
}
}