|
|
- import 'package:flutter/material.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- import '/views/main/conversation_list.dart';
- import '/views/main/friend_list.dart';
- import '/views/main/profile.dart';
- import '/utils/storage/friends.dart';
- import '/utils/storage/conversations.dart';
- import '/utils/storage/messages.dart';
-
- class Home extends StatefulWidget {
- const Home({Key? key}) : super(key: key);
-
- @override
- State<Home> createState() => _HomeState();
- }
-
- class _HomeState extends State<Home> {
- @override
- void initState() {
- super.initState();
- updateData();
- }
-
- void updateData() async {
- await checkLogin();
- await updateFriends();
- await updateConversations();
- await updateMessageThreads();
- }
-
- // TODO: Do server GET check here
- Future checkLogin() async {
- SharedPreferences preferences = await SharedPreferences.getInstance();
- if (preferences.getBool('islogin') != true) {
- Navigator.pushNamedAndRemoveUntil(context, '/landing', ModalRoute.withName('/landing'));
- }
- }
-
- int _selectedIndex = 0;
- static const List<Widget> _widgetOptions = <Widget>[
- ConversationList(),
- FriendList(),
- Profile(),
- ];
-
- void _onItemTapped(int index) {
- setState(() {
- _selectedIndex = index;
- });
- }
-
- @override
- Widget build(BuildContext context) {
- return WillPopScope(
- onWillPop: () async => false,
- child: Scaffold(
- body: _widgetOptions.elementAt(_selectedIndex),
- bottomNavigationBar: BottomNavigationBar(
- currentIndex: _selectedIndex,
- onTap: _onItemTapped,
- selectedItemColor: Colors.red,
- unselectedItemColor: Colors.grey.shade600,
- selectedLabelStyle: const TextStyle(fontWeight: FontWeight.w600),
- unselectedLabelStyle: const TextStyle(fontWeight: FontWeight.w600),
- type: BottomNavigationBarType.fixed,
- items: const [
- BottomNavigationBarItem(
- icon: Icon(Icons.message),
- label: "Chats",
- ),
- BottomNavigationBarItem(
- icon: Icon(Icons.group_work),
- label: "Friends",
- ),
- BottomNavigationBarItem(
- icon: Icon(Icons.account_box),
- label: "Profile",
- ),
- ],
- ),
- ),
- );
- }
- }
|