Files
tatuchat/lib/pages/chat_list/chat_list_view.dart
Welton Moura 94632e0611
Some checks failed
Main Deploy Workflow / deploy_web (push) Has been cancelled
Main Deploy Workflow / deploy_playstore_internal (push) Has been cancelled
botao nova sala
2026-09-18 08:27:19 -03:00

94 lines
3.3 KiB
Dart

// SPDX-FileCopyrightText: 2019-Present Christian Kußowski
// SPDX-FileCopyrightText: 2019-Present Contributors to FluffyChat
//
// SPDX-License-Identifier: AGPL-3.0-or-later
import 'package:material_ui/material_ui.dart';
import 'package:tatchat/config/themes.dart';
import 'package:tatchat/pages/chat_list/chat_list.dart';
import 'package:tatchat/pages/chat_list/start_chat_fab.dart';
import 'package:tatchat/pages/chat_list/tabs/channels_tab.dart';
import 'package:tatchat/pages/chat_list/tabs/chat_tab_bar.dart';
import 'package:tatchat/pages/chat_list/tabs/chat_tab_header.dart';
import 'package:tatchat/pages/chat_list/tabs/home_tab.dart';
import 'package:tatchat/pages/chat_list/tabs/murals_tab.dart';
import 'package:tatchat/pages/chat_list/tabs/spaces_tab.dart';
import 'chat_list_body.dart';
class ChatListView extends StatelessWidget {
final ChatListController controller;
const ChatListView(this.controller, {super.key});
@override
Widget build(BuildContext context) {
final isColumnMode = FluffyThemes.isColumnMode(context);
final homeTab = controller.homeTab;
return PopScope(
canPop: !controller.isSearchMode,
onPopInvokedWithResult: (pop, _) {
if (pop) return;
if (controller.isSearchMode) {
controller.cancelSearch();
return;
}
},
child: SafeArea(
bottom: false,
left: false,
right: false,
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
if (isColumnMode)
ChatTopTabBar(
currentTab: homeTab,
onTabSelected: controller.setHomeTab,
),
Expanded(
child: Scaffold(
body: SafeArea(
top: false,
bottom: false,
left: false,
right: false,
child: IndexedStack(
index: homeTab.index,
children: [
ChatTabScaffold(
tab: HomeTab.chats,
isSearchMode: controller.isSearchMode,
onSearchPressed: controller.startSearch,
onSearchCancelled: () => controller.cancelSearch(),
searchController: controller.searchController,
searchFocusNode: controller.searchFocusNode,
onSearchChanged: (text) =>
controller.onSearchEnter(text, globalSearch: true),
controller: controller,
child: ChatListViewBody(controller),
),
ChannelsTab(controller),
SpacesTab(controller),
MuralsTab(controller),
],
),
),
floatingActionButton: !controller.isSearchMode
? const StartChatFab()
: const SizedBox.shrink(),
bottomNavigationBar: isColumnMode
? null
: ChatBottomTabBar(
currentTab: homeTab,
onTabSelected: controller.setHomeTab,
),
),
),
],
),
),
);
}
}