@@ -3,26 +3,13 @@ export "./src/trash_cell.dart";
33export "./src/trash_header.dart" ;
44
55import 'package:app_flowy/startup/plugin/plugin.dart' ;
6- import 'package:app_flowy/startup/startup.dart' ;
7- import 'package:app_flowy/plugins/trash/application/trash_bloc.dart' ;
86import 'package:app_flowy/workspace/presentation/home/home_stack.dart' ;
97import 'package:easy_localization/easy_localization.dart' ;
10- import 'package:flowy_infra/image.dart' ;
11- import 'package:flowy_infra/theme.dart' ;
12- import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart' ;
13- import 'package:flowy_infra_ui/style_widget/scrolling/styled_scroll_bar.dart' ;
14- import 'package:flowy_infra_ui/style_widget/scrolling/styled_scrollview.dart' ;
158import 'package:flowy_infra_ui/style_widget/text.dart' ;
16- import 'package:flowy_infra_ui/style_widget/button.dart' ;
17- import 'package:flowy_infra_ui/widget/spacing.dart' ;
189import 'package:flutter/material.dart' ;
19- import 'package:flutter_bloc/flutter_bloc.dart' ;
20- import 'package:styled_widget/styled_widget.dart' ;
2110import 'package:app_flowy/generated/locale_keys.g.dart' ;
2211
23- import 'src/sizes.dart' ;
24- import 'src/trash_cell.dart' ;
25- import 'src/trash_header.dart' ;
12+ import 'trash_page.dart' ;
2613
2714class TrashPluginBuilder extends PluginBuilder {
2815 @override
@@ -71,145 +58,3 @@ class TrashPluginDisplay extends PluginDisplay {
7158 @override
7259 List <NavigationItem > get navigationItems => [this ];
7360}
74-
75- class TrashPage extends StatefulWidget {
76- const TrashPage ({Key ? key}) : super (key: key);
77-
78- @override
79- State <TrashPage > createState () => _TrashPageState ();
80- }
81-
82- class _TrashPageState extends State <TrashPage > {
83- final ScrollController _scrollController = ScrollController ();
84- @override
85- Widget build (BuildContext context) {
86- final theme = context.watch <AppTheme >();
87- const horizontalPadding = 80.0 ;
88- return BlocProvider (
89- create: (context) => getIt <TrashBloc >()..add (const TrashEvent .initial ()),
90- child: BlocBuilder <TrashBloc , TrashState >(
91- builder: (context, state) {
92- return SizedBox .expand (
93- child: Column (
94- mainAxisAlignment: MainAxisAlignment .start,
95- children: [
96- _renderTopBar (context, theme, state),
97- const VSpace (32 ),
98- _renderTrashList (context, state),
99- ],
100- ).padding (horizontal: horizontalPadding, vertical: 48 ),
101- );
102- },
103- ),
104- );
105- }
106-
107- Widget _renderTrashList (BuildContext context, TrashState state) {
108- const barSize = 6.0 ;
109- return Expanded (
110- child: ScrollbarListStack (
111- axis: Axis .vertical,
112- controller: _scrollController,
113- scrollbarPadding: EdgeInsets .only (top: TrashSizes .headerHeight),
114- barSize: barSize,
115- child: StyledSingleChildScrollView (
116- controller: ScrollController (),
117- barSize: barSize,
118- axis: Axis .horizontal,
119- child: SizedBox (
120- width: TrashSizes .totalWidth,
121- child: ScrollConfiguration (
122- behavior: const ScrollBehavior ().copyWith (scrollbars: false ),
123- child: CustomScrollView (
124- shrinkWrap: true ,
125- physics: StyledScrollPhysics (),
126- controller: _scrollController,
127- slivers: [
128- _renderListHeader (context, state),
129- _renderListBody (context, state),
130- ],
131- ),
132- ),
133- ),
134- ),
135- ),
136- );
137- }
138-
139- Widget _renderTopBar (BuildContext context, AppTheme theme, TrashState state) {
140- return SizedBox (
141- height: 36 ,
142- child: Row (
143- crossAxisAlignment: CrossAxisAlignment .stretch,
144- children: [
145- FlowyText .semibold (LocaleKeys .trash_text.tr ()),
146- const Spacer (),
147- IntrinsicWidth (
148- child: FlowyButton (
149- text: FlowyText .medium (LocaleKeys .trash_restoreAll.tr (),
150- fontSize: 12 ),
151- leftIcon: svgWidget ('editor/restore' , color: theme.iconColor),
152- hoverColor: theme.hover,
153- onTap: () => context.read <TrashBloc >().add (
154- const TrashEvent .restoreAll (),
155- ),
156- ),
157- ),
158- const HSpace (6 ),
159- IntrinsicWidth (
160- child: FlowyButton (
161- text: FlowyText .medium (LocaleKeys .trash_deleteAll.tr (),
162- fontSize: 12 ),
163- leftIcon: svgWidget ('editor/delete' , color: theme.iconColor),
164- hoverColor: theme.hover,
165- onTap: () =>
166- context.read <TrashBloc >().add (const TrashEvent .deleteAll ()),
167- ),
168- )
169- ],
170- ),
171- );
172- }
173-
174- Widget _renderListHeader (BuildContext context, TrashState state) {
175- return SliverPersistentHeader (
176- delegate: TrashHeaderDelegate (),
177- floating: true ,
178- pinned: true ,
179- );
180- }
181-
182- Widget _renderListBody (BuildContext context, TrashState state) {
183- return SliverList (
184- delegate: SliverChildBuilderDelegate (
185- (BuildContext context, int index) {
186- final object = state.objects[index];
187- return SizedBox (
188- height: 42 ,
189- child: TrashCell (
190- object: object,
191- onRestore: () {
192- context.read <TrashBloc >().add (TrashEvent .putback (object.id));
193- },
194- onDelete: () =>
195- context.read <TrashBloc >().add (TrashEvent .delete (object)),
196- ),
197- );
198- },
199- childCount: state.objects.length,
200- addAutomaticKeepAlives: false ,
201- ),
202- );
203- }
204- }
205- // class TrashScrollbar extends ScrollBehavior {
206- // @override
207- // Widget buildScrollbar(BuildContext context, Widget child, ScrollableDetails details) {
208- // return ScrollbarListStack(
209- // controller: details.controller,
210- // axis: Axis.vertical,
211- // barSize: 6,
212- // child: child,
213- // );
214- // }
215- // }
0 commit comments