Files
Vocasia-LMS-Mobile-apps--TA…/lib/providers/qna_provider.dart

51 lines
1.5 KiB
Dart

import 'dart:async';
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:initial_folder/models/qna_model.dart';
import 'package:initial_folder/services/qna_service.dart';
import 'package:rxdart/rxdart.dart';
enum ResultState { loading, noData, hasData, error }
enum ResultStateLike { loading, error }
class QnaProvider with ChangeNotifier {
final _service = QnaService();
StreamController<QnaModel> streamController = BehaviorSubject();
String _message = '';
String get message => _message;
ResultState? _state;
ResultState? get state => _state;
QnaModel? _qnaModel;
QnaModel? get result => _qnaModel;
set qnaModel(QnaModel? qnaModel) {
_qnaModel = qnaModel;
notifyListeners();
}
Stream<QnaModel> get qnaStream {
return streamController.stream;
}
//Get QNA
Future<void> getQna(String idCourse) async {
try {
QnaModel qnaModel = await _service.getMyQna(idCourse);
if (qnaModel.error == true && qnaModel.status == 404) {
// Jika respons adalah 404 (tidak ditemukan), tangani objek dummy di sini
// Misalnya, menampilkan pesan kepada pengguna bahwa tidak ada data yang ditemukan
// Atau menampilkan UI yang sesuai
print('masuk rerror dsiinii');
streamController.add(qnaModel);
} else {
// Jika respons adalah 200 (berhasil), tambahkan data ke dalam stream
streamController.add(qnaModel);
}
} catch (error) {
// Tangani jenis error lain jika diperlukan
rethrow;
}
}
}