Files
FlutterTravel/lib/screens/main_screen.dart
2020-07-26 21:07:55 +01:00

73 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_travel_concept/screens/home.dart';
import 'package:flutter_travel_concept/widgets/icon_badge.dart';
class MainScreen extends StatefulWidget {
@override
_MainScreenState createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> {
PageController _pageController;
int _page = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView(
physics: NeverScrollableScrollPhysics(),
controller: _pageController,
onPageChanged: onPageChanged,
children: List.generate(4, (index) => Home()),
),
bottomNavigationBar: BottomAppBar(
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
SizedBox(width: 7.0),
barIcon(icon: Icons.home, page: 0),
barIcon(icon: Icons.favorite, page: 1),
barIcon(icon: Icons.mode_comment, page: 2, badge: true),
barIcon(icon: Icons.person, page: 3),
SizedBox(width: 7.0),
],
),
color: Theme.of(context).primaryColor,
),
);
}
void navigationTapped(int page) {
_pageController.jumpToPage(page);
}
@override
void initState() {
super.initState();
_pageController = PageController();
}
@override
void dispose() {
super.dispose();
_pageController.dispose();
}
void onPageChanged(int page) {
setState(() {
this._page = page;
});
}
Widget barIcon(
{IconData icon = Icons.home, int page = 0, bool badge = false}) {
return IconButton(
icon: badge ? IconBadge(icon: icon, size: 24.0) : Icon(icon, size: 24.0),
color:
_page == page ? Theme.of(context).accentColor : Colors.blueGrey[300],
onPressed: () => _pageController.jumpToPage(page),
);
}
}