flutter
news app
this 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.
![[2025] Flutter News App w/BLOC Pattern](https://i0.wp.com/cdn-images-1.medium.com/max/1600/1%2Amqypykdnbiid0mz-zye-ma.png?w=770&ssl=1)
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
![[2025] Flutter News App w/BLOC Pattern flutter news app w/bloc pattern](https://i0.wp.com/raw.githubusercontent.com/kaparray/newsdaily/master/assetss/newsappflutterasset_3.jpeg?w=770&ssl=1)
![[2025] Flutter News App w/BLOC Pattern](https://i0.wp.com/raw.githubusercontent.com/kaparray/newsdaily/master/assetss/newsappflutterasset_4.jpeg?w=770&ssl=1)
![[2025] Flutter News App w/BLOC Pattern](https://i0.wp.com/raw.githubusercontent.com/kaparray/newsdaily/master/assetss/newsappflutterasset_1.gif?w=770&ssl=1)
Comments are closed.