merged branches
This commit is contained in:
@@ -3,6 +3,7 @@ import 'package:provider/single_child_widget.dart';
|
||||
import 'package:tm_app/core/theme/theme_provider.dart';
|
||||
import 'package:tm_app/data/repositories/home_repository.dart';
|
||||
import 'package:tm_app/data/repositories/tender_detail_repository.dart';
|
||||
import 'package:tm_app/data/repositories/tenders_repository.dart';
|
||||
import 'package:tm_app/data/repositories/your_tenders_repository.dart';
|
||||
import 'package:tm_app/data/services/home_service.dart';
|
||||
import 'package:tm_app/data/services/tender_detail_service.dart';
|
||||
@@ -14,6 +15,7 @@ import 'package:tm_app/view_models/your_tenders_view_model.dart';
|
||||
import '../../data/repositories/auth_repository.dart';
|
||||
import '../../data/services/auth_service.dart';
|
||||
import '../../data/services/network_manager.dart';
|
||||
import '../../data/services/tenders_service.dart';
|
||||
import '../../view_models/auth_view_model.dart';
|
||||
import '../../view_models/home_view_model.dart';
|
||||
|
||||
@@ -35,7 +37,11 @@ List<SingleChildWidget> get apiClients {
|
||||
Provider(
|
||||
create: (context) => TenderDetailService(networkManager: context.read()),
|
||||
),
|
||||
|
||||
Provider(create: (context) => YourTendersService()),
|
||||
Provider(
|
||||
create: (context) => TendersService(networkManager: context.read()),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -49,7 +55,12 @@ List<SingleChildWidget> get repositories {
|
||||
TenderDetailRepository(tenderDetailService: context.read()),
|
||||
),
|
||||
Provider(
|
||||
create: (context) => YourTendersRepository(yourTendersService: context.read()),
|
||||
create:
|
||||
(context) =>
|
||||
YourTendersRepository(yourTendersService: context.read()),
|
||||
),
|
||||
Provider(
|
||||
create: (context) => TendersRepository(tendersService: context.read()),
|
||||
),
|
||||
];
|
||||
}
|
||||
@@ -67,9 +78,17 @@ List<SingleChildWidget> get viewModels {
|
||||
(context) =>
|
||||
TenderDetailViewModel(tenderDetailRepository: context.read()),
|
||||
),
|
||||
ChangeNotifierProvider(create: (context) => TendersViewModel()),
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => YourTendersViewModel(yourTendersRepository: context.read()),
|
||||
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => TendersViewModel(tendersRepository: context.read()),
|
||||
),
|
||||
ChangeNotifierProvider(
|
||||
create:
|
||||
(context) =>
|
||||
YourTendersViewModel(yourTendersRepository: context.read()),
|
||||
),
|
||||
ChangeNotifierProvider(
|
||||
create: (context) => TendersViewModel(tendersRepository: context.read()),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:tm_app/core/constants/assets.dart';
|
||||
import 'package:tm_app/core/constants/strings.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
import 'package:tm_app/core/utils/size_config.dart';
|
||||
|
||||
@@ -41,29 +42,29 @@ class DesktopShellPage extends StatelessWidget {
|
||||
Spacer(),
|
||||
_bottomNavigationItem(
|
||||
context: context,
|
||||
text: 'Home',
|
||||
text: AppStrings.home,
|
||||
isActive: navigationShell.currentIndex == 0,
|
||||
onTap: () => onTap(0),
|
||||
iconPath: 'assets/icons/home.svg',
|
||||
iconPath: AssetsManager.home,
|
||||
activeIconPath: AssetsManager.homeActive,
|
||||
),
|
||||
SizedBox(width: 24),
|
||||
_bottomNavigationItem(
|
||||
context: context,
|
||||
text: 'Tenders',
|
||||
text: AppStrings.tendersTitle,
|
||||
isActive: navigationShell.currentIndex == 1,
|
||||
onTap: () => onTap(1),
|
||||
iconPath: 'assets/icons/task_square.svg',
|
||||
activeIconPath: 'assets/icons/task-square_active.svg',
|
||||
iconPath: AssetsManager.tenders,
|
||||
activeIconPath: AssetsManager.tendersActive,
|
||||
),
|
||||
SizedBox(width: 24),
|
||||
_bottomNavigationItem(
|
||||
context: context,
|
||||
text: 'Profile',
|
||||
text: AppStrings.profile,
|
||||
isActive: navigationShell.currentIndex == 2,
|
||||
onTap: () => onTap(2),
|
||||
iconPath: 'assets/icons/profile-circle.svg',
|
||||
activeIconPath: 'assets/icons/profile-circle_active.svg',
|
||||
iconPath: AssetsManager.profile,
|
||||
activeIconPath: AssetsManager.profileActive,
|
||||
),
|
||||
Spacer(),
|
||||
SizedBox(width: 59),
|
||||
@@ -96,10 +97,7 @@ class DesktopShellPage extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 12.0.sp(),
|
||||
fontWeight: FontWeight.w400,
|
||||
color:
|
||||
isActive
|
||||
? const Color(0xFF0164FF)
|
||||
: const Color(0xFF777777),
|
||||
color: isActive ? AppColors.primaryColor : AppColors.grey60,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:tm_app/core/constants/assets.dart';
|
||||
import 'package:tm_app/core/constants/strings.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
import 'package:tm_app/core/utils/size_config.dart';
|
||||
|
||||
@@ -30,27 +31,27 @@ class MobileShellPage extends StatelessWidget {
|
||||
children: [
|
||||
_bottomNavigationItem(
|
||||
context: context,
|
||||
text: 'Home',
|
||||
text: AppStrings.home,
|
||||
isActive: navigationShell.currentIndex == 0,
|
||||
onTap: () => onTap(0),
|
||||
iconPath: 'assets/icons/home.svg',
|
||||
iconPath: AssetsManager.home,
|
||||
activeIconPath: AssetsManager.homeActive,
|
||||
),
|
||||
_bottomNavigationItem(
|
||||
context: context,
|
||||
text: 'Tenders',
|
||||
text: AppStrings.tendersTitle,
|
||||
isActive: navigationShell.currentIndex == 1,
|
||||
onTap: () => onTap(1),
|
||||
iconPath: 'assets/icons/task_square.svg',
|
||||
activeIconPath: 'assets/icons/task-square_active.svg',
|
||||
iconPath: AssetsManager.tenders,
|
||||
activeIconPath: AssetsManager.tendersActive,
|
||||
),
|
||||
_bottomNavigationItem(
|
||||
context: context,
|
||||
text: 'Profile',
|
||||
text: AppStrings.profile,
|
||||
isActive: navigationShell.currentIndex == 2,
|
||||
onTap: () => onTap(2),
|
||||
iconPath: 'assets/icons/profile-circle.svg',
|
||||
activeIconPath: 'assets/icons/profile-circle_active.svg',
|
||||
iconPath: AssetsManager.profile,
|
||||
activeIconPath: AssetsManager.profileActive,
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -83,10 +84,8 @@ class MobileShellPage extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 12.0.sp(),
|
||||
fontWeight: FontWeight.w400,
|
||||
color:
|
||||
isActive
|
||||
? const Color(0xFF0164FF)
|
||||
: const Color(0xFF777777),
|
||||
|
||||
color: isActive ? AppColors.primaryColor : AppColors.grey60,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:tm_app/core/constants/assets.dart';
|
||||
import 'package:tm_app/core/constants/strings.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
import 'package:tm_app/core/utils/size_config.dart';
|
||||
|
||||
@@ -60,7 +61,7 @@ class TabletShellPage extends StatelessWidget {
|
||||
SizedBox(height: 48.0.h()),
|
||||
_drawerItem(
|
||||
context: context,
|
||||
text: 'Home',
|
||||
text: AppStrings.home,
|
||||
isActive: navigationShell.currentIndex == 0,
|
||||
onTap: () => onTap(0),
|
||||
iconPath: AssetsManager.home,
|
||||
@@ -68,7 +69,7 @@ class TabletShellPage extends StatelessWidget {
|
||||
),
|
||||
_drawerItem(
|
||||
context: context,
|
||||
text: 'Tenders',
|
||||
text: AppStrings.tendersTitle,
|
||||
isActive: navigationShell.currentIndex == 1,
|
||||
onTap: () => onTap(1),
|
||||
iconPath: AssetsManager.tenders,
|
||||
@@ -76,7 +77,7 @@ class TabletShellPage extends StatelessWidget {
|
||||
),
|
||||
_drawerItem(
|
||||
context: context,
|
||||
text: 'Profile',
|
||||
text: AppStrings.profile,
|
||||
isActive: navigationShell.currentIndex == 2,
|
||||
onTap: () => onTap(2),
|
||||
iconPath: AssetsManager.profile,
|
||||
@@ -112,10 +113,7 @@ class TabletShellPage extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 12.0.sp(),
|
||||
fontWeight: FontWeight.w400,
|
||||
color:
|
||||
isActive
|
||||
? const Color(0xFF0164FF)
|
||||
: const Color(0xFF777777),
|
||||
color: isActive ? AppColors.primaryColor : AppColors.grey60,
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
+10
-10
@@ -37,23 +37,23 @@ class AppLogger {
|
||||
Logger get logger => _logger;
|
||||
|
||||
// Convenient logging methods
|
||||
void debug(dynamic message, {dynamic error, StackTrace? stackTrace}) {
|
||||
void debug(message, {error, StackTrace? stackTrace}) {
|
||||
_logger.d(message, error: error, stackTrace: stackTrace);
|
||||
}
|
||||
|
||||
void info(dynamic message, {dynamic error, StackTrace? stackTrace}) {
|
||||
void info(message, {error, StackTrace? stackTrace}) {
|
||||
_logger.i(message, error: error, stackTrace: stackTrace);
|
||||
}
|
||||
|
||||
void warning(dynamic message, {dynamic error, StackTrace? stackTrace}) {
|
||||
void warning(message, {error, StackTrace? stackTrace}) {
|
||||
_logger.w(message, error: error, stackTrace: stackTrace);
|
||||
}
|
||||
|
||||
void error(dynamic message, {dynamic error, StackTrace? stackTrace}) {
|
||||
void error(message, {error, StackTrace? stackTrace}) {
|
||||
_logger.e(message, error: error, stackTrace: stackTrace);
|
||||
}
|
||||
|
||||
void fatal(dynamic message, {dynamic error, StackTrace? stackTrace}) {
|
||||
void fatal(message, {error, StackTrace? stackTrace}) {
|
||||
_logger.f(message, error: error, stackTrace: stackTrace);
|
||||
}
|
||||
|
||||
@@ -62,9 +62,9 @@ class AppLogger {
|
||||
required String method,
|
||||
required String url,
|
||||
int? statusCode,
|
||||
dynamic requestBody,
|
||||
dynamic responseBody,
|
||||
dynamic error,
|
||||
requestBody,
|
||||
responseBody,
|
||||
error,
|
||||
}) {
|
||||
final buffer = StringBuffer();
|
||||
buffer.writeln('🌐 Network Request:');
|
||||
@@ -114,7 +114,7 @@ class AppLogger {
|
||||
}
|
||||
|
||||
// Custom log with tag
|
||||
void logWithTag(String tag, dynamic message, {Level? level}) {
|
||||
void logWithTag(String tag, message, {Level? level}) {
|
||||
final taggedMessage = '[$tag] $message';
|
||||
|
||||
switch (level ?? Level.info) {
|
||||
@@ -195,7 +195,7 @@ extension LoggerExtension on Object {
|
||||
appLogger.warning(message ?? toString());
|
||||
}
|
||||
|
||||
void logError([String? message, dynamic error, StackTrace? stackTrace]) {
|
||||
void logError([String? message, error, StackTrace? stackTrace]) {
|
||||
appLogger.error(
|
||||
message ?? toString(),
|
||||
error: error,
|
||||
|
||||
Reference in New Issue
Block a user