mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-22 04:49:21 +00:00
Added bottom navigation to home route
This commit is contained in:
parent
32fa6455f4
commit
07d668eb59
@ -1,12 +1,90 @@
|
|||||||
|
import 'package:comunic/ui/tiles/CustomBottomNavigationBarItem.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/// Main route of the application
|
/// Main route of the application
|
||||||
///
|
///
|
||||||
/// @author Pierre HUBERT
|
/// @author Pierre HUBERT
|
||||||
|
|
||||||
class HomeRoute extends StatelessWidget {
|
class HomeRoute extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
State<StatefulWidget> createState() => _HomeRouteState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _HomeRouteState extends State<HomeRoute> {
|
||||||
|
int _currTab = 0;
|
||||||
|
List<int> history = List();
|
||||||
|
|
||||||
|
|
||||||
|
/// Change currently visible tab
|
||||||
|
void _changeTab(int newTabNumber) {
|
||||||
|
setState(() {
|
||||||
|
_currTab = newTabNumber;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Allows to go to previous tab
|
||||||
|
Future<bool> _willPop() async {
|
||||||
|
if (history.length == 1) return true;
|
||||||
|
|
||||||
|
history.removeLast();
|
||||||
|
_changeTab(history[history.length - 1]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Handles a new tab being tapped
|
||||||
|
void _onTap(int number, BuildContext context) {
|
||||||
|
if (_currTab != number) history.add(number);
|
||||||
|
_changeTab(number);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
history.add(_currTab);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Build the body of the application
|
||||||
|
Widget _buildBody(BuildContext context) {
|
||||||
|
switch (_currTab) {
|
||||||
|
case 0:
|
||||||
|
return Text("Conversations");
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
return Text("Menu");
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw "Invalid tab number : " + _currTab.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Build navigation bar items
|
||||||
|
List<BottomNavigationBarItem> _buildNavigationBarItems() {
|
||||||
|
return <BottomNavigationBarItem>[
|
||||||
|
CustomNavigationBarItem(
|
||||||
|
icon: Icon(Icons.chat),
|
||||||
|
title: Text("Conversations"),
|
||||||
|
),
|
||||||
|
CustomNavigationBarItem(
|
||||||
|
icon: Icon(Icons.menu),
|
||||||
|
title: Text("Menu"),
|
||||||
|
),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Text("Home route");
|
return WillPopScope(
|
||||||
|
onWillPop: _willPop,
|
||||||
|
child: Scaffold(
|
||||||
|
body: SafeArea(
|
||||||
|
child: _buildBody(context),
|
||||||
|
),
|
||||||
|
bottomNavigationBar: BottomNavigationBar(
|
||||||
|
currentIndex: _currTab,
|
||||||
|
items: _buildNavigationBarItems(),
|
||||||
|
onTap: (i) => _onTap(i, context),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
13
lib/ui/tiles/CustomBottomNavigationBarItem.dart
Normal file
13
lib/ui/tiles/CustomBottomNavigationBarItem.dart
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
/// Custom navigation bar item
|
||||||
|
///
|
||||||
|
/// @author Pierre HUBERT
|
||||||
|
|
||||||
|
class CustomNavigationBarItem extends BottomNavigationBarItem {
|
||||||
|
const CustomNavigationBarItem({
|
||||||
|
@required Widget icon,
|
||||||
|
Widget title,
|
||||||
|
bool selected,
|
||||||
|
}) : super(icon: icon, title: title, backgroundColor: Colors.blue,);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user