Implementation
final files = {
// api request representable
'lib/data/repositories/authentication_repository.dart': '''
class ProfileRepository{
// late APIProvider apiClient;
// ProfileRepository() {
// apiClient = APIProvider();
// }
}
''',
// api request representable
'lib/data/provider/network/api_request_representable.dart': '''
enum HTTPMethod { get, post, delete, put, patch }
extension HTTPMethodString on HTTPMethod {
String get string {
switch (this) {
case HTTPMethod.get:
return "get";
case HTTPMethod.post:
return "post";
case HTTPMethod.delete:
return "delete";
case HTTPMethod.patch:
return "patch";
case HTTPMethod.put:
return "put";
}
}
}
abstract class APIRequestRepresentable {
String get url;
String get endpoint;
String get path;
HTTPMethod get method;
Map<String, String>? get headers;
Map<String, String>? get query;
dynamic get body;
Future request();
}
''',
// api provider
'lib/data/provider/network/api_provider.dart': '''
''',
// api endpoints
'lib/data/provider/network/api_endpoints.dart': '''
class ApiEndPoints {
static String baseUrl = ""; // your base url here
static String get login => "login/";
static String get register => "register/";
}
''',
// models file
'lib/data/models/user_model.dart': '''
// class User {
// final String id;
// final String firstName;
// final String lastName;
// final String email;
// final String phoneNumber;
// final String avatarUrl;
// final bool isActive;
// User({
// this.id = '',
// this.firstName = '',
// this.lastName = '',
// this.email = '',
// this.phoneNumber = '',
// this.avatarUrl = '',
// this.isActive = true,
// });
// // Method to convert the User object into a JSON map
// Map<String, dynamic> toJson() {
// return {
// 'id': id,
// 'firstName': firstName,
// 'lastName': lastName,
// 'email': email,
// 'phoneNumber': phoneNumber,
// 'avatarUrl': avatarUrl,
// 'isActive': isActive,
// };
// }
// // Factory constructor to create a User object from a JSON map
// factory User.fromJson(Map<String, dynamic> json) {
// return User(
// id: json['id'] ?? '',
// firstName: json['firstName'] ?? '',
// lastName: json['lastName'] ?? '',
// email: json['email'] ?? '',
// phoneNumber: json['phoneNumber'] ?? '',
// avatarUrl: json['avatarUrl'] ?? '',
// isActive: json['isActive'] ?? true,
// );
// }
// }
''',
// utils file
'lib/app/utils.dart': '''
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
class Utils {
static DateTime convertDateStingToDateTime(dateString){
DateFormat format = DateFormat('d-M-yyyy');
DateTime date = format.parse(dateString);
return date;
}
// static showToast({required String message, int time = 2}) {
// Fluttertoast.showToast(
// msg: message,
// timeInSecForIosWeb: time,
// backgroundColor: AppColors.black,
// textColor: Colors.white,
// gravity: ToastGravity.BOTTOM,
// toastLength: Toast.LENGTH_SHORT);
// }
}
''',
// extensions file
'lib/app/extensions/extensions.dart': '''
import 'package:flutter/cupertino.dart';
extension SizeBox on num
{
SizedBox get height => SizedBox(height: toDouble(),);
SizedBox get width => SizedBox(width: toDouble(),);
}
''',
// Global variables files
'lib/app/config/global_vars.dart': '''
class Globals {
static String authToken = "";
static String fcmToken = "";
static String? deviceId;
static String? deviceName;
static String? loginDevice;
// static UserModel? user;
static String? language;
static String? appVersion;
static String? buildNumber;
static String dummyImage = '';
}
''',
// text styles files
'lib/app/config/app_text_styles.dart': '''
import 'package:flutter/material.dart';
import 'package:sizer/sizer.dart';
import 'app_colors.dart';
class AppTextStyles {
static TextStyle regular = const TextStyle();
static TextStyle headingExtraLarge = TextStyle(
fontSize: 26.sp,
fontFamily: 'Poppins-800',
color: AppColors.primary,
overflow: TextOverflow.ellipsis);
static TextStyle primaryClrHeading = TextStyle(
fontSize: 15.sp,
fontFamily: 'Poppins-600',
fontWeight: FontWeight.w600,
color: AppColors.primary,
overflow: TextOverflow.ellipsis);
static TextStyle heading = TextStyle(
fontSize: 17.sp,
fontFamily: 'Poppins-600',
color: AppColors.black,
overflow: TextOverflow.ellipsis);
static TextStyle semiBold = TextStyle(
fontSize: 12.sp,
fontFamily: 'Poppins-600',
color: AppColors.black,
overflow: TextOverflow.ellipsis);
static TextStyle bodyText = TextStyle(
fontSize: 12.sp,
fontFamily: 'Poppins-400',
color: AppColors.white,
overflow: TextOverflow.ellipsis);
static const TextStyle bodyTextBold = TextStyle(
fontSize: 16,
fontFamily: 'Poppins-500',
color: AppColors.black,
overflow: TextOverflow.ellipsis);
static TextStyle mediumHeading = TextStyle(
fontSize: 16.sp,
fontFamily: 'Poppins-500',
color: AppColors.black,
overflow: TextOverflow.ellipsis);
static TextStyle twentySemiBoldText = TextStyle(
fontSize: 15.sp,
fontFamily: 'Poppins-600',
color: AppColors.black,
overflow: TextOverflow.ellipsis,
);
static TextStyle twentyNormalText = TextStyle(
fontSize: 15.sp,
fontFamily: 'Poppins-400',
color: AppColors.black,
overflow: TextOverflow.ellipsis);
static const TextStyle hintText = TextStyle(
fontSize: 14,
fontFamily: 'Poppins-400',
color: AppColors.hint,
overflow: TextOverflow.ellipsis);
static TextStyle normalText = const TextStyle(
fontSize: 14,
fontFamily: 'Poppins-400',
color: AppColors.black,
overflow: TextOverflow.ellipsis);
static TextStyle small = TextStyle(
fontSize: 9.sp,
fontFamily: 'Poppins-500',
color: AppColors.white,
overflow: TextOverflow.ellipsis);
static TextStyle dashboardHeading = TextStyle(
fontSize: 13.sp,
fontFamily: 'Poppins-700',
color: AppColors.black,
overflow: TextOverflow.ellipsis);
}
''',
// constants file
'lib/app/config/app_constants.dart': '''''',
// colors file
'lib/app/config/app_colors.dart': '''
import 'package:flutter/material.dart';
class AppColors {
static const Color white = Colors.white;
static const Color black = Colors.black;
static const Color black05 = Color(0xFF050505);
static const Color grey6B = Color(0xFF65676B);
static const Color trans = Colors.transparent;
static const Color primary = Color(0xFF0866FF);
static const Color primary5FF = Color(0xFFEBF5FF);
static const Color secondary = Color(0xFF65676B);
static const Color tertiary = Color(0xFF27C4F4);
static const Color inputfield = Color(0xFFF5F5FA);
static const Color inputBorder = Color(0xFFE9EAF0);
static const Color backgroundShadow = Color(0xFFF7F7FB);
static const Color hint = Color(0xFF6C6C6C);
static const LinearGradient primaryGradient = LinearGradient(
colors: [
Color(0xffFFED8F), // Start color
Color(0xff1E61FF), // End color
],
begin: Alignment.centerRight, // Gradient direction
end: Alignment.centerLeft,
);
}
''',
// HomeController file
'lib/presentation/home/controllers/home_controller.dart': '''
import 'package:flutter_riverpod/flutter_riverpod.dart';
class HomeController extends StateNotifier<int> {
HomeController() : super(0){
onInit();
}
void onInit() {
// Perform initialization logic here
print('Controller initialized');
}
void increment() => state++;
void decrement() {
if (state > 0) state--;
}
}
''',
// Updated HomeView file
'lib/presentation/home/views/home_view.dart': '''
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../bindings/home_binding.dart';
class HomeView extends StatelessWidget {
const HomeView({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Home View')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// Counter display
Consumer(
builder: (context, ref, _) {
final counter = ref.watch(homeControllerProvider);
return Text(
'Counter: \$counter',
style: Theme.of(context).textTheme.headlineMedium,
);
},
),
const SizedBox(height: 16),
// Buttons to update the counter
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Consumer(
builder: (context, ref, _) {
final controller = ref.read(homeControllerProvider.notifier);
return ElevatedButton(
onPressed: controller.decrement,
child: const Text('-'),
);
},
),
const SizedBox(width: 16),
Consumer(
builder: (context, ref, _) {
final controller = ref.read(homeControllerProvider.notifier);
return ElevatedButton(
onPressed: controller.increment,
child: const Text('+'),
);
},
),
],
),
],
),
),
);
}
}
''',
// HomeBinding file
'lib/presentation/home/bindings/home_binding.dart': '''
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../controllers/home_controller.dart';
final homeControllerProvider = StateNotifierProvider<HomeController, int>((ref) {
return HomeController();
});
''',
// AppRoutes file
'lib/app/routes/app_routes.dart': '''
class AppRoutes {
static const String home = '/home';
}
''',
// RoutePage file
'lib/app/routes/route_page.dart': '''
import 'package:go_router/go_router.dart';
import 'app_routes.dart';
import '../../presentation/home/views/home_view.dart';
final GoRouter router = GoRouter(
initialLocation: AppRoutes.home,
routes: [
GoRoute(
name: AppRoutes.home,
path: AppRoutes.home,
builder: (context, state) => const HomeView(),
),
],
);
''',
// Main file
'lib/main.dart': '''
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'app/routes/route_page.dart';
void main() {
runApp(const ProviderScope(child: MyApp()));
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp.router(
title: 'Flutter Demo',
theme: ThemeData(primarySwatch: Colors.blue),
routerConfig: router,
);
}
}
''',
};