trash_header.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import 'package:easy_localization/easy_localization.dart';
  2. import 'package:flowy_infra/theme.dart';
  3. import 'package:flowy_infra_ui/style_widget/text.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:provider/provider.dart';
  6. import 'package:app_flowy/generated/locale_keys.g.dart';
  7. import 'sizes.dart';
  8. class TrashHeaderDelegate extends SliverPersistentHeaderDelegate {
  9. TrashHeaderDelegate();
  10. @override
  11. Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) {
  12. return TrashHeader();
  13. }
  14. @override
  15. double get maxExtent => TrashSizes.headerHeight;
  16. @override
  17. double get minExtent => TrashSizes.headerHeight;
  18. @override
  19. bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) {
  20. return false;
  21. }
  22. }
  23. class TrashHeaderItem {
  24. double width;
  25. String title;
  26. TrashHeaderItem({required this.width, required this.title});
  27. }
  28. class TrashHeader extends StatelessWidget {
  29. final List<TrashHeaderItem> items = [
  30. TrashHeaderItem(title: LocaleKeys.trash_pageHeader_fileName.tr(), width: TrashSizes.fileNameWidth),
  31. TrashHeaderItem(title: LocaleKeys.trash_pageHeader_lastModified.tr(), width: TrashSizes.lashModifyWidth),
  32. TrashHeaderItem(title: LocaleKeys.trash_pageHeader_created.tr(), width: TrashSizes.createTimeWidth),
  33. ];
  34. TrashHeader({Key? key}) : super(key: key);
  35. @override
  36. Widget build(BuildContext context) {
  37. final theme = context.watch<AppTheme>();
  38. final headerItems = List<Widget>.empty(growable: true);
  39. items.asMap().forEach((index, item) {
  40. headerItems.add(
  41. SizedBox(
  42. width: item.width,
  43. child: FlowyText(
  44. item.title,
  45. fontSize: 12,
  46. color: theme.shader3,
  47. ),
  48. ),
  49. );
  50. });
  51. return Container(
  52. color: theme.surface,
  53. child: Row(
  54. crossAxisAlignment: CrossAxisAlignment.stretch,
  55. children: [
  56. ...headerItems,
  57. ],
  58. ),
  59. );
  60. }
  61. }