Add board service and repository, update routes and assets
- Introduced BoardService and BoardRepository for managing board-related data. - Updated app routes to reflect the new board screen structure. - Added new board-related assets to the asset manager. - Refactored BoardScreen navigation to utilize the new provider structure.
This commit is contained in:
@@ -19,8 +19,10 @@ import 'package:tm_app/data/services/your_tenders_service.dart';
|
||||
import 'package:tm_app/view_models/final_completion_of_documents_view_model.dart';
|
||||
|
||||
import '../../data/repositories/auth_repository.dart';
|
||||
import '../../data/repositories/board_repositories.dart';
|
||||
import '../../data/repositories/profile_repository.dart';
|
||||
import '../../data/services/auth_service.dart';
|
||||
import '../../data/services/board_service.dart';
|
||||
import '../../data/services/profile_service.dart';
|
||||
import '../../data/services/tenders_service.dart';
|
||||
import '../../view_models/auth_view_model.dart';
|
||||
@@ -86,6 +88,10 @@ List<SingleChildWidget> get apiClients {
|
||||
create: (context) => NotificationsService(networkManager: context.read()),
|
||||
lazy: true,
|
||||
),
|
||||
Provider(
|
||||
create: (context) => BoardService(networkManager: context.read()),
|
||||
lazy: true,
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -137,6 +143,10 @@ List<SingleChildWidget> get repositories {
|
||||
NotificationsRepository(notificationsService: context.read()),
|
||||
lazy: true,
|
||||
),
|
||||
Provider(
|
||||
create: (context) => BoardRepository(boardService: context.read()),
|
||||
lazy: true,
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
enum TaskStatus { toDo, inProgress, done }
|
||||
|
||||
extension TaskStatusExtension on TaskStatus {
|
||||
// تبدیل enum به string
|
||||
String get value => name;
|
||||
|
||||
// تبدیل string به enum
|
||||
static TaskStatus fromString(String? status) {
|
||||
if (status == null) {
|
||||
return TaskStatus.toDo;
|
||||
}
|
||||
|
||||
return TaskStatus.values.firstWhere(
|
||||
(e) => e.name == status,
|
||||
orElse: () => TaskStatus.toDo,
|
||||
);
|
||||
}
|
||||
|
||||
String get displayNameEn {
|
||||
switch (this) {
|
||||
case TaskStatus.toDo:
|
||||
return 'To Do';
|
||||
case TaskStatus.inProgress:
|
||||
return 'In Progress';
|
||||
case TaskStatus.done:
|
||||
return 'Done';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import '../../data/services/model/board_response/board_response.dart';
|
||||
import '../enums/task_status.dart';
|
||||
|
||||
extension BoardDataExtension on BoardData {
|
||||
// تبدیل status string به TaskStatus enum
|
||||
TaskStatus get statusEnum => TaskStatusExtension.fromString(status);
|
||||
|
||||
// کپی BoardData با status جدید
|
||||
BoardData copyWithStatus(TaskStatus newStatus) {
|
||||
return copyWith(status: newStatus.value);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../data/repositories/board_repositories.dart';
|
||||
import '../../view_models/board_view_model.dart';
|
||||
|
||||
/// Lazy BoardViewModel provider
|
||||
/// Wraps screens that need BoardViewModel
|
||||
Widget boardProvider({required Widget child}) {
|
||||
return ChangeNotifierProvider(
|
||||
create:
|
||||
(context) =>
|
||||
BoardViewModel(boardRepository: context.read<BoardRepository>()),
|
||||
child: child,
|
||||
);
|
||||
}
|
||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:tm_app/views/board/board_screen.dart';
|
||||
import 'package:tm_app/views/board/pages/board_screen.dart';
|
||||
import 'package:tm_app/views/completion_of_documents/pages/complectopn_of_documents_screen.dart';
|
||||
import 'package:tm_app/views/detail/pages/detail_screen.dart';
|
||||
import 'package:tm_app/views/forget_password_create/pages/forgot_password_create_screen.dart';
|
||||
@@ -18,6 +18,7 @@ import '../../views/profile/pages/profile_screen.dart';
|
||||
import '../../views/splash/pages/splash_screen.dart';
|
||||
import '../../views/tenders/pages/tenders_screen.dart';
|
||||
import '../../views/your_tenders/pages/your_tenders_screen.dart';
|
||||
import '../providers/board_provider.dart';
|
||||
import '../providers/final_completion_provider.dart';
|
||||
import '../providers/forgot_password_provider.dart';
|
||||
import '../providers/home_provider.dart';
|
||||
@@ -272,7 +273,7 @@ class BoardRouteData extends GoRouteData with _$BoardRouteData {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, GoRouterState state) {
|
||||
return const BoardScreen();
|
||||
return boardProvider(child: const BoardScreen());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user