A framework for building convergent cross-platform Nextcloud clients using Flutter.
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.

77 lines
1.8 KiB

part of '../neon_news.dart';
2 years ago
class NewsMainPage extends StatefulWidget {
const NewsMainPage({
required this.bloc,
super.key,
});
final NewsBloc bloc;
@override
State<NewsMainPage> createState() => _NewsMainPageState();
}
class _NewsMainPageState extends State<NewsMainPage> {
late int _index = widget.bloc.options.defaultCategoryOption.value.index;
@override
void initState() {
super.initState();
widget.bloc.errors.listen((final error) {
NeonException.showSnackbar(context, error);
2 years ago
});
}
@override
Widget build(final BuildContext context) {
final views = [
NewsArticlesView(
bloc: widget.bloc.mainArticlesBloc,
newsBloc: widget.bloc,
),
NewsFoldersView(
bloc: widget.bloc,
),
NewsFeedsView(
bloc: widget.bloc,
),
];
final floatingActionButtons = [
null,
NewsFolderFloatingActionButton(bloc: widget.bloc),
NewsFeedFloatingActionButton(bloc: widget.bloc),
];
return Scaffold(
resizeToAvoidBottomInset: false,
bottomNavigationBar: BottomNavigationBar(
currentIndex: _index,
onTap: (final index) {
setState(() {
_index = index;
});
},
items: [
BottomNavigationBarItem(
icon: const Icon(Icons.newspaper),
label: AppLocalizations.of(context).articles,
),
BottomNavigationBarItem(
icon: const Icon(Icons.folder),
label: AppLocalizations.of(context).folders,
),
BottomNavigationBarItem(
icon: const Icon(Icons.rss_feed),
label: AppLocalizations.of(context).feeds,
),
],
),
body: views[_index],
floatingActionButton: floatingActionButtons[_index],
);
}
2 years ago
}