• Stars
    star
    350
  • Rank 118,742 (Top 3 %)
  • Language
    Dart
  • License
    MIT License
  • Created over 5 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

News app in Flutter with BLOC pattern

NewsApp

News app in Flutter with BLOC pattern

This example uses a CustomScrollView, JSON Rest API, BottonNavigationBar,SliverList, ClipRRect, Card, Progress Indicator, NetworkImage, Card, Column, Row, Container, InkWell, BoxDecoration.

Library

Bloc pattern

I used this pattern to design this application.

class NewsBloc {
  final _repository = Repository();
  final _newsFetcher = PublishSubject<NewsModel>();
  final _newsSearchFetcher = PublishSubject<NewsModel>();
  final _newsLikeFetcher = PublishSubject<NewsModel>();

  Observable<NewsModel> get allNews => _newsFetcher.stream;
  Observable<NewsModel> get searchNews => _newsSearchFetcher.stream;
  Observable<NewsModel> get likeNews => _newsLikeFetcher.stream;

  fetchLikedNews() async {
    NewsModel newsModel = await _repository.fetchLikedNews();
    _newsLikeFetcher.sink.add(newsModel);
  }

  fetchAllNews() async {
    NewsModel newsModel = await _repository.fetchAllNews();
    _newsFetcher.sink.add(newsModel);
  }

  fetchSearchNews() async {
    NewsModel newsModel = await _repository.fetchSearchNews();
    _newsSearchFetcher.sink.add(newsModel);
  }

  // Set and delete from Firestore liked
  addFavorit(val) async => _repository.addFavorit(val);
  deliteFavorit(val) async => _repository.deliteFavorit(val);

  dispose() {
    _newsLikeFetcher.close();
    _newsFetcher.close();
    _newsSearchFetcher.close();
  }
}

final bloc = NewsBloc();

Screenshots

Built With

  • Flutter - Crossplatform App Development Framework

License

Released under the MIT license

Author

Adeshchenko Kirill (Cyrill) (@kaparray)