Added liked tenders desigm and data from api

This commit is contained in:
llsajjad
2025-09-02 16:56:42 +03:30
parent e1b4c1dae7
commit 79874c40b1
32 changed files with 2028 additions and 23 deletions
+16
View File
@@ -3,12 +3,15 @@ import 'package:provider/single_child_widget.dart';
import 'package:tm_app/core/network/network_manager.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/liked_tenders_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/liked_tenders_service.dart';
import 'package:tm_app/data/services/tender_detail_service.dart';
import 'package:tm_app/data/services/your_tenders_service.dart';
import 'package:tm_app/view_models/liked_tenders_view_model.dart';
import 'package:tm_app/view_models/tender_detail_view_model.dart';
import 'package:tm_app/view_models/tenders_view_model.dart';
import 'package:tm_app/view_models/your_tenders_view_model.dart';
@@ -44,6 +47,9 @@ List<SingleChildWidget> get apiClients {
Provider(
create: (context) => YourTendersService(networkManager: context.read()),
),
Provider(
create: (context) => LikedTendersService(networkManager: context.read()),
),
Provider(
create: (context) => TendersService(networkManager: context.read()),
),
@@ -67,6 +73,11 @@ List<SingleChildWidget> get repositories {
(context) =>
YourTendersRepository(yourTendersService: context.read()),
),
Provider(
create:
(context) =>
LikedTendersRepository(likedTendersService: context.read()),
),
Provider(
create: (context) => TendersRepository(tendersService: context.read()),
),
@@ -106,6 +117,11 @@ List<SingleChildWidget> get viewModels {
(context) =>
YourTendersViewModel(yourTendersRepository: context.read()),
),
ChangeNotifierProvider(
create:
(context) =>
LikedTendersViewModel(likedTendersRepository: context.read()),
),
ChangeNotifierProvider(
create:
(context) => ProfileViewModel(
+4
View File
@@ -59,4 +59,8 @@ class AssetsManager {
//profile page
static const sun = 'assets/icons/sun.svg';
static const moon = 'assets/icons/moon.svg';
//Liked tenders
static const trash = 'assets/icons/trash.svg';
}
+12 -1
View File
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:tm_app/views/detail/pages/detail_screen.dart';
import 'package:tm_app/views/home/pages/home_screen.dart';
import 'package:tm_app/views/liked_tenders/pages/liked_tenders_screen.dart';
import 'package:tm_app/views/login/pages/login_screen.dart';
import '../../views/forgot_password/pages/forgot_password_screen.dart';
@@ -26,7 +27,7 @@ final GlobalKey<NavigatorState> notificationNavigatorKey =
// Main app router
final GoRouter appRouter = GoRouter(
routes: $appRoutes,
initialLocation: '/notification',
initialLocation: '/login',
navigatorKey: rootNavigatorKey,
);
@@ -171,6 +172,16 @@ class YourTendersRouteData extends GoRouteData with _$YourTendersRouteData {
}
}
@TypedGoRoute<LikedTendersRouteData>(path: '/like-tenders')
class LikedTendersRouteData extends GoRouteData with _$LikedTendersRouteData {
const LikedTendersRouteData();
@override
Widget build(BuildContext context, GoRouterState state) {
return LikedTendersScreen();
}
}
@TypedGoRoute<TenderDetailRouteData>(path: '/tender-detail')
class TenderDetailRouteData extends GoRouteData with _$TenderDetailRouteData {
final String tenderId;
+28
View File
@@ -10,6 +10,7 @@ List<RouteBase> get $appRoutes => [
$loginScreenRoute,
$appShellRouteData,
$yourTendersRouteData,
$likedTendersRouteData,
$tenderDetailRouteData,
$forgotPasswordRouteData,
];
@@ -200,6 +201,33 @@ mixin _$YourTendersRouteData on GoRouteData {
void replace(BuildContext context) => context.replace(location);
}
RouteBase get $likedTendersRouteData => GoRouteData.$route(
path: '/like-tenders',
factory: _$LikedTendersRouteData._fromState,
);
mixin _$LikedTendersRouteData on GoRouteData {
static LikedTendersRouteData _fromState(GoRouterState state) =>
const LikedTendersRouteData();
@override
String get location => GoRouteData.$location('/like-tenders');
@override
void go(BuildContext context) => context.go(location);
@override
Future<T?> push<T>(BuildContext context) => context.push<T>(location);
@override
void pushReplacement(BuildContext context) =>
context.pushReplacement(location);
@override
void replace(BuildContext context) => context.replace(location);
}
RouteBase get $tenderDetailRouteData => GoRouteData.$route(
path: '/tender-detail',