kaparray/NewsDaily
BLOC 패턴을 사용한 플러터 뉴스 앱
- Stars
- 349
- Forks
- 93
- 최근 푸시(UTC)
- 2025. 6. 6.
- 프로젝트 상태
- 활성
언어DartRubyObjective-CJava
순위
원본 README
아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
README 펼치기 / 접기
NewsApp
News app in Flutter with BLOC pattern
https://github.com/kaparray/NewsApp/blob/master/assetss/NewsAppFlutterAsset_2.jpegThis example uses a CustomScrollView, JSON Rest API, BottonNavigationBar,SliverList, ClipRRect, Card, Progress Indicator, NetworkImage, Card, Column, Row, Container, InkWell, BoxDecoration.
Library
- rxdart
- http
- webview_flutter
- shared_preferences
- share
- cloud_firestore
- uuid
- dynamic_theme
- flutter_picker
- flutter_material_color_picker
Bloc pattern
I used this pattern to design this application.
https://cdn-images-1.medium.com/max/1600/1*MqYPYKdNBiID0mZ-zyE-mA.pngclass 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
https://github.com/kaparray/NewsApp/blob/master/assetss/NewsAppFlutterAsset_3.jpeg https://github.com/kaparray/NewsApp/blob/master/assetss/NewsAppFlutterAsset_4.jpeg
https://github.com/kaparray/NewsApp/blob/master/assetss/NewsAppFlutterAsset_1.gif
Built With
- Flutter - Crossplatform App Development Framework
License
Released under the MIT license
Author
Adeshchenko Kirill (Cyrill) (@kaparray)