Files
tm_app/lib/view_models/tender_detail_view_model.dart
T
amirrezaghabeli 86f0f03392 some changes
2025-08-11 10:27:33 +03:30

48 lines
1.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:tm_app/core/utils/result.dart';
import 'package:tm_app/data/repositories/tender_detail_repository.dart';
import 'package:tm_app/data/services/model/tender_detail_request/tender_detail_request.dart';
import 'package:tm_app/data/services/model/tender_detail_response/tender_detail_response_model.dart';
class TenderDetailViewModel with ChangeNotifier {
final TenderDetailRepository _tenderDetailRepository;
TenderDetailViewModel({
required TenderDetailRepository tenderDetailRepository,
}) : _tenderDetailRepository = tenderDetailRepository {
WidgetsBinding.instance.addPostFrameCallback((_) {
getTenderDetail(id: 'JNDFKMDV-100JF');
});
}
bool _isLoading = false;
String? _errorMessage;
TenderDetailResponseModel? _tenderDetail;
bool get isLoading => _isLoading;
String? get errorMessage => _errorMessage;
TenderDetailResponseModel? get tenderDetail => _tenderDetail;
Future<void> getTenderDetail({required String id}) async {
_isLoading = true;
_errorMessage = null;
notifyListeners();
final request = TenderDetailRequest(id: id);
final result = await _tenderDetailRepository.getTenderDetail(
request: request,
);
switch (result) {
case Ok<TenderDetailResponseModel>():
_tenderDetail = result.value;
break;
case Error<TenderDetailResponseModel>():
_errorMessage = result.error.toString();
break;
}
_isLoading = false;
notifyListeners();
}
}