mirror of
https://github.com/AOSSIE-Org/OpenPeerChat-flutter.git
synced 2025-08-16 03:43:08 +08:00
102 lines
2.5 KiB
Dart
102 lines
2.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_nearby_connections_example/pages/profile.dart';
|
|
import 'chat_list_screen.dart';
|
|
import '../classes/global.dart';
|
|
import '../p2p/adhoc_housekeeping.dart';
|
|
import 'device_list_screen.dart';
|
|
|
|
import '../database/database_helper.dart';
|
|
|
|
/// This the home screen. This can also be considered as the
|
|
/// main screen of the application.
|
|
/// As the app launches and navigates to the HomeScreen from the Profile screen,
|
|
/// all the processes of message hopping are being initiated from this page.
|
|
|
|
class HomeScreen extends StatefulWidget {
|
|
const HomeScreen({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
State<HomeScreen> createState() => _HomeScreenState();
|
|
}
|
|
|
|
class _HomeScreenState extends State<HomeScreen> {
|
|
bool isLoading = false;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
// init(context);
|
|
refreshMessages();
|
|
}
|
|
|
|
/// After reading all the cache, the home screen becomes visible.
|
|
Future refreshMessages() async {
|
|
setState(() => isLoading = true);
|
|
|
|
readAllUpdateCache();
|
|
setState(() => isLoading = false);
|
|
}
|
|
|
|
@override
|
|
void didChangeDependencies() {
|
|
super.didChangeDependencies();
|
|
readAllUpdateConversation(context);
|
|
init(context);
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
Global.deviceSubscription!.cancel();
|
|
Global.receivedDataSubscription!.cancel();
|
|
Global.nearbyService!.stopBrowsingForPeers();
|
|
Global.nearbyService!.stopAdvertisingPeer();
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return DefaultTabController(
|
|
length: 2,
|
|
child: Scaffold(
|
|
key: Global.scaffoldKey,
|
|
appBar: AppBar(
|
|
title: const Text("AOSSIE"),
|
|
actions: [
|
|
IconButton(
|
|
icon: const Icon(Icons.person),
|
|
onPressed: () {
|
|
Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => const Profile(
|
|
onLogin: false,
|
|
),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
],
|
|
bottom: const TabBar(
|
|
tabs: [
|
|
Tab(
|
|
text: "Devices",
|
|
),
|
|
Tab(
|
|
text: "All Chats",
|
|
),
|
|
],
|
|
),
|
|
),
|
|
body: const TabBarView(
|
|
children: [
|
|
DevicesListScreen(
|
|
deviceType: DeviceType.browser,
|
|
),
|
|
ChatListScreen(),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|