You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.4 KiB

2 years ago
  1. import 'dart:async';
  2. import 'package:itasmob/domain/model/model.dart';
  3. import 'package:itasmob/domain/usecase/get_news_usecase.dart';
  4. import 'package:itasmob/presentation/base/base_viewmodel.dart';
  5. class HomeViewModel extends BaseViewModel with HomeViewModelInput, HomeViewModelOutputs{
  6. GetNewsUseCase _getNewsUseCase;
  7. HomeViewModel(this._getNewsUseCase);
  8. final StreamController _dataStreamController = StreamController<NewsViewObject>.broadcast();
  9. @override
  10. void dispose() {
  11. _dataStreamController.close();
  12. }
  13. @override
  14. Sink get inputState => throw UnimplementedError();
  15. @override
  16. Stream get outputState => throw UnimplementedError();
  17. @override
  18. void start() {
  19. // _getNews();
  20. }
  21. // //private functions
  22. // _getNews() async{
  23. // // ignore: void_checks
  24. // (await _getNewsUseCase.execute(Void)).fold((l) => null, (newsObject) {
  25. // inputHomeData.add(NewsViewObject(newsObject.newsData.data));
  26. // });
  27. // }
  28. @override
  29. Stream<NewsViewObject> get outputHomeData => _dataStreamController.stream.map((data) => data);
  30. @override
  31. Sink get inputHomeData => _dataStreamController.sink;
  32. }
  33. abstract class HomeViewModelInput{
  34. Sink get inputHomeData;
  35. }
  36. abstract class HomeViewModelOutputs{
  37. Stream<NewsViewObject> get outputHomeData;
  38. }
  39. class NewsViewObject{
  40. List<Data> data;
  41. NewsViewObject(this.data);
  42. }