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 createState() => _HomeState(); } class _HomeState extends State { @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 _widgetOptions = [ 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", ), ], ), ), ); } }