diff --git a/lib/widgets/common/fx/highlight_decoration.dart b/lib/widgets/common/fx/highlight_decoration.dart new file mode 100644 index 000000000..123e186a4 --- /dev/null +++ b/lib/widgets/common/fx/highlight_decoration.dart @@ -0,0 +1,28 @@ +import 'package:flutter/material.dart'; + +class HighlightDecoration extends Decoration { + final Color color; + + const HighlightDecoration({@required this.color}); + + @override + HighlightDecorationPainter createBoxPainter([VoidCallback onChanged]) { + return HighlightDecorationPainter(this, onChanged); + } +} + +class HighlightDecorationPainter extends BoxPainter { + final HighlightDecoration decoration; + + const HighlightDecorationPainter(this.decoration, VoidCallback onChanged) : super(onChanged); + + @override + void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) { + final size = configuration.size; + final confHeight = size.height; + final paintHeight = confHeight * .4; + final rect = Rect.fromLTWH(offset.dx, offset.dy + confHeight - paintHeight, size.width, paintHeight); + final paint = Paint()..color = decoration.color; + canvas.drawRect(rect, paint); + } +} diff --git a/lib/widgets/fullscreen/info/metadata_section.dart b/lib/widgets/fullscreen/info/metadata_section.dart index 21b93206f..bbb554195 100644 --- a/lib/widgets/fullscreen/info/metadata_section.dart +++ b/lib/widgets/fullscreen/info/metadata_section.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:aves/model/image_entry.dart'; import 'package:aves/model/metadata_service.dart'; import 'package:aves/utils/color_utils.dart'; +import 'package:aves/widgets/common/fx/highlight_decoration.dart'; import 'package:aves/widgets/fullscreen/info/info_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; @@ -112,7 +113,7 @@ class _Directory extends StatelessWidget { children: [ if (directoryName.isNotEmpty) Container( - decoration: _DirectoryTitleDecoration( + decoration: HighlightDecoration( color: stringToColor(directoryName), ), margin: const EdgeInsets.symmetric(vertical: 4.0), @@ -141,15 +142,3 @@ class _Directory extends StatelessWidget { ); } } - -class _DirectoryTitleDecoration extends BoxDecoration { - _DirectoryTitleDecoration({@required Color color}) - : super( - gradient: LinearGradient( - begin: Alignment.bottomCenter, - end: Alignment.topCenter, - stops: [0, .4, .4], - colors: [color, color, Colors.transparent], - ), - ); -}