trash_header.dart 1.9 KB

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