48 lines
1.5 KiB
Dart
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();
|
|
}
|
|
}
|