| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 | 
							- import 'package:app_flowy/generated/locale_keys.g.dart';
 
- import 'package:app_flowy/plugins/trash/src/sizes.dart';
 
- import 'package:app_flowy/plugins/trash/src/trash_header.dart';
 
- import 'package:app_flowy/startup/startup.dart';
 
- import 'package:easy_localization/easy_localization.dart';
 
- import 'package:flowy_infra/image.dart';
 
- import 'package:flowy_infra/theme.dart';
 
- import 'package:flowy_infra_ui/style_widget/button.dart';
 
- import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
 
- import 'package:flowy_infra_ui/style_widget/scrolling/styled_scroll_bar.dart';
 
- import 'package:flowy_infra_ui/style_widget/scrolling/styled_scrollview.dart';
 
- import 'package:flowy_infra_ui/style_widget/text.dart';
 
- import 'package:flowy_infra_ui/widget/spacing.dart';
 
- import 'package:flutter/material.dart';
 
- import 'package:flutter_bloc/flutter_bloc.dart';
 
- import 'package:styled_widget/styled_widget.dart';
 
- import 'application/trash_bloc.dart';
 
- import 'src/trash_cell.dart';
 
- class TrashPage extends StatefulWidget {
 
-   const TrashPage({Key? key}) : super(key: key);
 
-   @override
 
-   State<TrashPage> createState() => _TrashPageState();
 
- }
 
- class _TrashPageState extends State<TrashPage> {
 
-   final ScrollController _scrollController = ScrollController();
 
-   @override
 
-   Widget build(BuildContext context) {
 
-     final theme = context.watch<AppTheme>();
 
-     const horizontalPadding = 80.0;
 
-     return BlocProvider(
 
-       create: (context) => getIt<TrashBloc>()..add(const TrashEvent.initial()),
 
-       child: BlocBuilder<TrashBloc, TrashState>(
 
-         builder: (context, state) {
 
-           return SizedBox.expand(
 
-             child: Column(
 
-               mainAxisAlignment: MainAxisAlignment.start,
 
-               children: [
 
-                 _renderTopBar(context, theme, state),
 
-                 const VSpace(32),
 
-                 _renderTrashList(context, state),
 
-               ],
 
-             ).padding(horizontal: horizontalPadding, vertical: 48),
 
-           );
 
-         },
 
-       ),
 
-     );
 
-   }
 
-   Widget _renderTrashList(BuildContext context, TrashState state) {
 
-     const barSize = 6.0;
 
-     return Expanded(
 
-       child: ScrollbarListStack(
 
-         axis: Axis.vertical,
 
-         controller: _scrollController,
 
-         scrollbarPadding: EdgeInsets.only(top: TrashSizes.headerHeight),
 
-         barSize: barSize,
 
-         child: StyledSingleChildScrollView(
 
-           controller: ScrollController(),
 
-           barSize: barSize,
 
-           axis: Axis.horizontal,
 
-           child: SizedBox(
 
-             width: TrashSizes.totalWidth,
 
-             child: ScrollConfiguration(
 
-               behavior: const ScrollBehavior().copyWith(scrollbars: false),
 
-               child: CustomScrollView(
 
-                 shrinkWrap: true,
 
-                 physics: StyledScrollPhysics(),
 
-                 controller: _scrollController,
 
-                 slivers: [
 
-                   _renderListHeader(context, state),
 
-                   _renderListBody(context, state),
 
-                 ],
 
-               ),
 
-             ),
 
-           ),
 
-         ),
 
-       ),
 
-     );
 
-   }
 
-   Widget _renderTopBar(BuildContext context, AppTheme theme, TrashState state) {
 
-     return SizedBox(
 
-       height: 36,
 
-       child: Row(
 
-         crossAxisAlignment: CrossAxisAlignment.stretch,
 
-         children: [
 
-           FlowyText.semibold(LocaleKeys.trash_text.tr()),
 
-           const Spacer(),
 
-           IntrinsicWidth(
 
-             child: FlowyButton(
 
-               text: FlowyText.medium(LocaleKeys.trash_restoreAll.tr(),
 
-                   fontSize: 12),
 
-               leftIcon: svgWidget('editor/restore', color: theme.iconColor),
 
-               hoverColor: theme.hover,
 
-               onTap: () => context.read<TrashBloc>().add(
 
-                     const TrashEvent.restoreAll(),
 
-                   ),
 
-             ),
 
-           ),
 
-           const HSpace(6),
 
-           IntrinsicWidth(
 
-             child: FlowyButton(
 
-               text: FlowyText.medium(LocaleKeys.trash_deleteAll.tr(),
 
-                   fontSize: 12),
 
-               leftIcon: svgWidget('editor/delete', color: theme.iconColor),
 
-               hoverColor: theme.hover,
 
-               onTap: () =>
 
-                   context.read<TrashBloc>().add(const TrashEvent.deleteAll()),
 
-             ),
 
-           )
 
-         ],
 
-       ),
 
-     );
 
-   }
 
-   Widget _renderListHeader(BuildContext context, TrashState state) {
 
-     return SliverPersistentHeader(
 
-       delegate: TrashHeaderDelegate(),
 
-       floating: true,
 
-       pinned: true,
 
-     );
 
-   }
 
-   Widget _renderListBody(BuildContext context, TrashState state) {
 
-     return SliverList(
 
-       delegate: SliverChildBuilderDelegate(
 
-         (BuildContext context, int index) {
 
-           final object = state.objects[index];
 
-           return SizedBox(
 
-             height: 42,
 
-             child: TrashCell(
 
-               object: object,
 
-               onRestore: () {
 
-                 context.read<TrashBloc>().add(TrashEvent.putback(object.id));
 
-               },
 
-               onDelete: () =>
 
-                   context.read<TrashBloc>().add(TrashEvent.delete(object)),
 
-             ),
 
-           );
 
-         },
 
-         childCount: state.objects.length,
 
-         addAutomaticKeepAlives: false,
 
-       ),
 
-     );
 
-   }
 
- }
 
 
  |