album: added thumbnail tags
This commit is contained in:
parent
4c49c8831e
commit
53917de437
4 changed files with 73 additions and 38 deletions
|
@ -1,6 +1,6 @@
|
|||
import 'package:aves/model/image_decode_service.dart';
|
||||
import 'package:aves/model/image_entry.dart';
|
||||
import 'package:aves/thumbnail_collection.dart';
|
||||
import 'package:aves/widgets/album/thumbnail_collection.dart';
|
||||
import 'package:aves/widgets/common/fake_app_bar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
|
|
@ -3,6 +3,7 @@ import 'dart:typed_data';
|
|||
|
||||
import 'package:aves/model/image_decode_service.dart';
|
||||
import 'package:aves/model/image_entry.dart';
|
||||
import 'package:aves/widgets/album/thumbnail_tags.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:transparent_image/transparent_image.dart';
|
||||
|
||||
|
@ -103,9 +104,8 @@ class ThumbnailState extends State<Thumbnail> {
|
|||
iconSize: iconSize,
|
||||
)
|
||||
else if (entry.isGif)
|
||||
Icon(
|
||||
Icons.gif,
|
||||
size: iconSize,
|
||||
GifTag(
|
||||
iconSize: iconSize,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
@ -114,36 +114,3 @@ class ThumbnailState extends State<Thumbnail> {
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
class VideoTag extends StatelessWidget {
|
||||
final ImageEntry entry;
|
||||
final double iconSize;
|
||||
|
||||
const VideoTag({Key key, this.entry, this.iconSize}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
margin: EdgeInsets.all(1),
|
||||
padding: EdgeInsets.only(right: iconSize / 4),
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xBB000000),
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(iconSize),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.play_circle_outline,
|
||||
size: iconSize,
|
||||
),
|
||||
SizedBox(width: 2),
|
||||
Text(entry.durationText)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
import 'package:aves/model/image_entry.dart';
|
||||
import 'package:aves/thumbnail.dart';
|
||||
import 'package:aves/widgets/album/thumbnail.dart';
|
||||
import 'package:aves/utils/date_utils.dart';
|
||||
import 'package:aves/widgets/common/draggable_scrollbar.dart';
|
||||
import 'package:aves/widgets/common/outlined_text.dart';
|
68
lib/widgets/album/thumbnail_tags.dart
Normal file
68
lib/widgets/album/thumbnail_tags.dart
Normal file
|
@ -0,0 +1,68 @@
|
|||
import 'package:aves/model/image_entry.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class VideoTag extends StatelessWidget {
|
||||
final ImageEntry entry;
|
||||
final double iconSize;
|
||||
|
||||
const VideoTag({Key key, this.entry, this.iconSize}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Tag(
|
||||
icon: Icons.play_circle_outline,
|
||||
iconSize: iconSize,
|
||||
text: entry.durationText,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class GifTag extends StatelessWidget {
|
||||
final double iconSize;
|
||||
|
||||
const GifTag({Key key, this.iconSize}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Tag(
|
||||
icon: Icons.gif,
|
||||
iconSize: iconSize,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class Tag extends StatelessWidget {
|
||||
final IconData icon;
|
||||
final double iconSize;
|
||||
final String text;
|
||||
|
||||
const Tag({Key key, this.icon, this.iconSize, this.text}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
margin: EdgeInsets.all(1),
|
||||
padding: text != null ? EdgeInsets.only(right: iconSize / 4) : null,
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xBB000000),
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(iconSize),
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
icon,
|
||||
size: iconSize,
|
||||
),
|
||||
if (text != null) ...[
|
||||
SizedBox(width: 2),
|
||||
Text(text),
|
||||
]
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue