|
|
- 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';
- import '/models/conversations.dart';
- import '/models/friends.dart';
-
- class Home extends StatefulWidget {
- const Home({Key? key}) : super(key: key);
-
- @override
- State<Home> createState() => _HomeState();
- }
-
- class _HomeState extends State<Home> {
- List<Conversation> conversations = [];
- List<Friend> friends = [];
-
- bool isLoading = true;
- int _selectedIndex = 0;
- List<Widget> _widgetOptions = <Widget>[
- const ConversationList(conversations: []),
- const FriendList(friends: []),
- const Profile(),
- ];
-
- @override
- void initState() {
- super.initState();
- updateData();
- }
-
- void updateData() async {
- await checkLogin();
- await updateFriends();
- await updateConversations();
- await updateMessageThreads();
-
- conversations = await getConversations();
- friends = await getFriends();
-
- setState(() {
- _widgetOptions = <Widget>[
- ConversationList(conversations: conversations),
- FriendList(friends: friends),
- const Profile(),
- ];
- isLoading = false;
- });
- }
-
- // 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'));
- }
- }
-
- void _onItemTapped(int index) {
- setState(() {
- _selectedIndex = index;
- });
- }
-
- Widget loading() {
- return Stack(
- children: <Widget>[
- const Opacity(
- opacity: 0.1,
- child: ModalBarrier(dismissible: false, color: Colors.black),
- ),
- Center(
- child: Column(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment: MainAxisAlignment.center,
- children: const <Widget> [
- CircularProgressIndicator(),
- SizedBox(height: 25),
- Text("Loading..."),
- ],
- )
- ),
- ]
- );
- }
-
- @override
- Widget build(BuildContext context) {
- return WillPopScope(
- onWillPop: () async => false,
- child: Scaffold(
- body: isLoading ? loading() : _widgetOptions.elementAt(_selectedIndex),
- bottomNavigationBar: isLoading ? const SizedBox.shrink() : 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",
- ),
- ],
- ),
- ),
- );
- }
- }
|