info: highlight titles with custom decoration instead of gradient
This commit is contained in:
parent
a31fe91ec2
commit
04c8c966bd
2 changed files with 30 additions and 13 deletions
28
lib/widgets/common/fx/highlight_decoration.dart
Normal file
28
lib/widgets/common/fx/highlight_decoration.dart
Normal file
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue