| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 | 
							- import 'package:app_flowy/workspace/application/home/home_bloc.dart';
 
- import 'package:app_flowy/workspace/application/home/home_watcher_bloc.dart';
 
- import 'package:app_flowy/workspace/domain/page_stack/page_stack.dart';
 
- import 'package:app_flowy/workspace/presentation/widgets/prelude.dart';
 
- import 'package:app_flowy/startup/startup.dart';
 
- import 'package:flowy_infra/flowy_logger.dart';
 
- import 'package:flowy_infra_ui/style_widget/container.dart';
 
- import 'package:flowy_sdk/protobuf/flowy-user/protobuf.dart';
 
- import 'package:flutter/material.dart';
 
- import 'package:flutter_bloc/flutter_bloc.dart';
 
- import 'package:styled_widget/styled_widget.dart';
 
- import 'home_layout.dart';
 
- class HomeScreen extends StatelessWidget {
 
-   static GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();
 
-   final UserDetail user;
 
-   const HomeScreen(this.user, {Key? key}) : super(key: key);
 
-   @override
 
-   Widget build(BuildContext context) {
 
-     return MultiBlocProvider(
 
-       providers: [
 
-         BlocProvider<HomeWatcherBloc>(
 
-             create: (context) => getIt<HomeWatcherBloc>()),
 
-         BlocProvider<HomeBloc>(create: (context) => getIt<HomeBloc>()),
 
-       ],
 
-       child: Scaffold(
 
-         key: HomeScreen.scaffoldKey,
 
-         body: BlocBuilder<HomeBloc, HomeState>(
 
-           buildWhen: (previous, current) => previous != current,
 
-           builder: (context, state) {
 
-             return FlowyContainer(
 
-               Theme.of(context).colorScheme.surface,
 
-               // Colors.white,
 
-               child: _buildBody(
 
-                   state, context.read<HomeBloc>().state.forceCollapse),
 
-             );
 
-           },
 
-         ),
 
-       ),
 
-     );
 
-   }
 
-   Widget _buildBody(HomeState state, bool forceCollapse) {
 
-     return LayoutBuilder(
 
-       builder: (BuildContext context, BoxConstraints constraints) {
 
-         final layout = HomeLayout(context, constraints, forceCollapse);
 
-         const homePage = HomePage();
 
-         final menu = _buildHomeMenu(
 
-           layout: layout,
 
-           context: context,
 
-         );
 
-         final editPannel = _buildEditPannel(
 
-           homeState: state,
 
-           layout: layout,
 
-           context: context,
 
-         );
 
-         return _layoutWidgets(
 
-             layout: layout,
 
-             homePage: homePage,
 
-             homeMenu: menu,
 
-             editPannel: editPannel);
 
-       },
 
-     );
 
-   }
 
-   Widget _buildHomeMenu(
 
-       {required HomeLayout layout, required BuildContext context}) {
 
-     final homeBloc = context.read<HomeBloc>();
 
-     Widget homeMenu = HomeMenu(
 
-       pageContextChanged: (pageContext) {
 
-         getIt<HomePageStack>().setStackView(pageContext);
 
-       },
 
-       isCollapseChanged: (isCollapse) {
 
-         homeBloc.add(HomeEvent.forceCollapse(isCollapse));
 
-       },
 
-       user: user,
 
-     );
 
-     homeMenu = RepaintBoundary(child: homeMenu);
 
-     homeMenu = FocusTraversalGroup(child: homeMenu);
 
-     return homeMenu;
 
-   }
 
-   Widget _buildEditPannel(
 
-       {required HomeState homeState,
 
-       required BuildContext context,
 
-       required HomeLayout layout}) {
 
-     final homeBloc = context.read<HomeBloc>();
 
-     Widget editPannel = EditPannel(
 
-       context: homeState.editContext,
 
-       onEndEdit: () => homeBloc.add(const HomeEvent.dismissEditPannel()),
 
-     );
 
-     // editPannel = RepaintBoundary(child: editPannel);
 
-     // editPannel = FocusTraversalGroup(child: editPannel);
 
-     return editPannel;
 
-   }
 
-   Widget _layoutWidgets(
 
-       {required HomeLayout layout,
 
-       required Widget homeMenu,
 
-       required Widget homePage,
 
-       required Widget editPannel}) {
 
-     return Stack(
 
-       children: [
 
-         homeMenu
 
-             .animatedPanelX(
 
-               closeX: -layout.menuWidth,
 
-               isClosed: !layout.showMenu,
 
-             )
 
-             .positioned(
 
-                 left: 0,
 
-                 top: 0,
 
-                 width: layout.menuWidth,
 
-                 bottom: 0,
 
-                 animate: true)
 
-             .animate(layout.animDuration, Curves.easeOut),
 
-         homePage
 
-             .constrained(minWidth: 500)
 
-             .positioned(
 
-                 left: layout.homePageLOffset,
 
-                 right: layout.homePageROffset,
 
-                 bottom: 0,
 
-                 top: 0,
 
-                 animate: true)
 
-             .animate(layout.animDuration, Curves.easeOut),
 
-         editPannel
 
-             .animatedPanelX(
 
-               duration: layout.animDuration.inMilliseconds * 0.001,
 
-               closeX: layout.editPannelWidth,
 
-               isClosed: !layout.showEditPannel,
 
-             )
 
-             .positioned(
 
-                 right: 0, top: 0, bottom: 0, width: layout.editPannelWidth),
 
-       ],
 
-     );
 
-   }
 
- }
 
- class HomePage extends StatelessWidget {
 
-   static GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();
 
-   // final Size size;
 
-   const HomePage({Key? key}) : super(key: key);
 
-   @override
 
-   Widget build(BuildContext context) {
 
-     Log.info('HomePage build');
 
-     return Column(
 
-       mainAxisAlignment: MainAxisAlignment.start,
 
-       children: [
 
-         getIt<HomePageStack>().stackTopBar(),
 
-         Expanded(
 
-           child: Container(
 
-             color: Colors.white,
 
-             child: FocusTraversalGroup(
 
-               child: getIt<HomePageStack>().stackWidget(),
 
-             ),
 
-           ),
 
-         ),
 
-       ],
 
-     );
 
-   }
 
- }
 
- // class HomeIndexStack extends StatelessWidget {
 
- //   const HomeIndexStack({Key? key}) : super(key: key);
 
- //   @override
 
- //   Widget build(BuildContext context) {
 
- //     return BlocBuilder<HomeBloc, HomeState>(
 
- //       buildWhen: (p, c) {
 
- //         if (p.pageContext != c.pageContext) {
 
- //           Log.info(
 
- //               'PageContext switch from ${p.pageContext.pageType} to ${c.pageContext.pageType}');
 
- //         }
 
- //         return p.pageContext != c.pageContext;
 
- //       },
 
- //       builder: (context, state) {
 
- //         final pageContext = context.read<HomeBloc>().state.pageContext;
 
- //         return Expanded(
 
- //           child: Container(
 
- //             color: Colors.white,
 
- //             child: FocusTraversalGroup(
 
- //               child: getIt<FlowyHomeIndexStack>().indexStack(pageContext),
 
- //             ),
 
- //           ),
 
- //         );
 
- //       },
 
- //     );
 
- //   }
 
- // }
 
 
  |