alterações em telas
Some checks failed
Main Deploy Workflow / deploy_web (push) Has been cancelled
Main Deploy Workflow / deploy_playstore_internal (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled

This commit is contained in:
2026-09-12 16:07:05 -03:00
parent 0037b0b9cf
commit 5d97feda86
22 changed files with 1069 additions and 682 deletions

View File

@@ -4,14 +4,12 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import 'package:material_ui/material_ui.dart';
import 'package:tatchat/config/app_config.dart';
import 'package:tatchat/config/setting_keys.dart';
import 'package:tatchat/config/themes.dart';
import 'package:tatchat/pages/chat_list/chat_list.dart';
import 'package:tatchat/pages/chat_list/navigation_rail.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';
@@ -25,23 +23,12 @@ class ChatListView extends StatelessWidget {
@override
Widget build(BuildContext context) {
final oneColumnSpacesMode =
!FluffyThemes.isColumnMode(context) &&
AppSettings.displayNavigationRail.value;
final isColumnMode = FluffyThemes.isColumnMode(context);
final homeTab = controller.homeTab;
final showSpacesMode = homeTab == HomeTab.chats;
final showNavigationRail =
showSpacesMode &&
(isColumnMode || AppSettings.displayNavigationRail.value);
return PopScope(
canPop: !controller.isSearchMode && controller.activeSpaceId == null,
canPop: !controller.isSearchMode,
onPopInvokedWithResult: (pop, _) {
if (pop) return;
if (controller.activeSpaceId != null) {
controller.clearActiveSpace();
return;
}
if (controller.isSearchMode) {
controller.cancelSearch();
return;
@@ -56,91 +43,46 @@ class ChatListView extends StatelessWidget {
onTabSelected: controller.setHomeTab,
),
Expanded(
child: Row(
children: [
Material(
color: Theme.of(context).colorScheme.surface,
child: AnimatedSize(
duration: FluffyThemes.animationDuration,
curve: FluffyThemes.animationCurve,
child: showNavigationRail
? SpacesNavigationRail(
activeSpaceId: controller.activeSpaceId,
onGoToChats: controller.clearActiveSpace,
onGoToSpaceId: controller.setActiveSpace,
)
: SizedBox(
width: 0,
height: MediaQuery.sizeOf(context).height,
),
),
),
if (showNavigationRail && isColumnMode)
Container(width: 1, color: Theme.of(context).dividerColor),
Expanded(
child: Scaffold(
backgroundColor: showSpacesMode && oneColumnSpacesMode
? Theme.of(context).colorScheme.surfaceContainer
: null,
body: SafeArea(
top: showSpacesMode && oneColumnSpacesMode,
bottom: false,
left: false,
right: false,
child: IndexedStack(
index: homeTab.index,
children: [
Material(
clipBehavior: showSpacesMode && oneColumnSpacesMode
? Clip.hardEdge
: Clip.none,
borderRadius:
showSpacesMode && oneColumnSpacesMode
? BorderRadius.only(
topLeft: Radius.circular(
AppConfig.borderRadius,
),
)
: null,
color: showSpacesMode && oneColumnSpacesMode
? Theme.of(context).colorScheme.surface
: null,
child: ChatListViewBody(controller),
),
ChannelsTab(controller),
SpacesTab(controller),
MuralsTab(),
],
),
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),
),
floatingActionButton:
showSpacesMode &&
!controller.isSearchMode &&
controller.activeSpaceId == null &&
!isColumnMode
? ValueListenableBuilder(
valueListenable: controller.scrolledToTop,
builder: (context, scrolledToTop, _) => StartChatFab(
extended:
scrolledToTop &&
!AppSettings.displayNavigationRail.value,
),
)
: const SizedBox.shrink(),
bottomNavigationBar: isColumnMode
? null
: ChatBottomTabBar(
currentTab: homeTab,
onTabSelected: controller.setHomeTab,
),
),
ChannelsTab(controller),
SpacesTab(controller),
MuralsTab(controller),
],
),
],
),
floatingActionButton: !controller.isSearchMode && !isColumnMode
? const StartChatFab()
: const SizedBox.shrink(),
bottomNavigationBar: isColumnMode
? null
: ChatBottomTabBar(
currentTab: homeTab,
onTabSelected: controller.setHomeTab,
),
),
),
],
),
);
}
}
}