mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: 1674 Auto-hide sidebar when re-sizing the window (#3659)
* feat: 1674 Auto-hide sidebar when re-sizing the window * chore: removed unnecessary print statements * chore: updated to a more approprite name for 'screenSmall' event
This commit is contained in:
parent
77e7cbe9ec
commit
98e0b832ec
@ -5,6 +5,7 @@ import 'package:appflowy_backend/protobuf/flowy-folder2/workspace.pb.dart'
|
||||
show WorkspaceSettingPB;
|
||||
import 'package:appflowy_backend/protobuf/flowy-user/user_profile.pb.dart';
|
||||
import 'package:dartz/dartz.dart';
|
||||
import 'package:flowy_infra/size.dart';
|
||||
import 'package:flowy_infra/time/duration.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
@ -43,7 +44,28 @@ class HomeSettingBloc extends Bloc<HomeSettingEvent, HomeSettingState> {
|
||||
collapseMenu: (_CollapseMenu e) {
|
||||
final isMenuCollapsed = !state.isMenuCollapsed;
|
||||
_appearanceSettingsCubit.saveIsMenuCollapsed(isMenuCollapsed);
|
||||
emit(state.copyWith(isMenuCollapsed: isMenuCollapsed));
|
||||
emit(
|
||||
state.copyWith(
|
||||
isMenuCollapsed: isMenuCollapsed,
|
||||
keepMenuCollapsed: isMenuCollapsed,
|
||||
),
|
||||
);
|
||||
},
|
||||
checkScreenSize: (_CheckScreenSize e) {
|
||||
final bool isScreenSmall =
|
||||
e.screenWidthPx < PageBreaks.tabletLandscape;
|
||||
|
||||
if (state.isScreenSmall != isScreenSmall) {
|
||||
final isMenuCollapsed = isScreenSmall || state.keepMenuCollapsed;
|
||||
emit(
|
||||
state.copyWith(
|
||||
isMenuCollapsed: isMenuCollapsed,
|
||||
isScreenSmall: isScreenSmall,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
emit(state.copyWith(isScreenSmall: isScreenSmall));
|
||||
}
|
||||
},
|
||||
editPanelResizeStart: (_EditPanelResizeStart e) {
|
||||
emit(
|
||||
@ -102,6 +124,8 @@ class HomeSettingEvent with _$HomeSettingEvent {
|
||||
WorkspaceSettingPB setting,
|
||||
) = _DidReceiveWorkspaceSetting;
|
||||
const factory HomeSettingEvent.collapseMenu() = _CollapseMenu;
|
||||
const factory HomeSettingEvent.checkScreenSize(double screenWidthPx) =
|
||||
_CheckScreenSize;
|
||||
const factory HomeSettingEvent.editPanelResized(double offset) =
|
||||
_EditPanelResized;
|
||||
const factory HomeSettingEvent.editPanelResizeStart() = _EditPanelResizeStart;
|
||||
@ -115,6 +139,8 @@ class HomeSettingState with _$HomeSettingState {
|
||||
required WorkspaceSettingPB workspaceSetting,
|
||||
required bool unauthorized,
|
||||
required bool isMenuCollapsed,
|
||||
required bool keepMenuCollapsed,
|
||||
required bool isScreenSmall,
|
||||
required double resizeOffset,
|
||||
required double resizeStart,
|
||||
required MenuResizeType resizeType,
|
||||
@ -129,6 +155,8 @@ class HomeSettingState with _$HomeSettingState {
|
||||
workspaceSetting: workspaceSetting,
|
||||
unauthorized: false,
|
||||
isMenuCollapsed: appearanceSettingsState.isMenuCollapsed,
|
||||
isScreenSmall: appearanceSettingsState.isMenuCollapsed,
|
||||
keepMenuCollapsed: false,
|
||||
resizeOffset: appearanceSettingsState.menuOffset,
|
||||
resizeStart: 0,
|
||||
resizeType: MenuResizeType.slide,
|
||||
|
@ -29,6 +29,11 @@ class HomeLayout {
|
||||
|
||||
menuWidth += homeSetting.resizeOffset;
|
||||
|
||||
final screenWidthPx = context.widthPx;
|
||||
context
|
||||
.read<HomeSettingBloc>()
|
||||
.add(HomeSettingEvent.checkScreenSize(screenWidthPx));
|
||||
|
||||
if (homeSetting.isMenuCollapsed) {
|
||||
showMenu = false;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user