trash_header.dart 1.9 KB

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