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_decode_service.dart';
|
||||||
import 'package:aves/model/image_entry.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:aves/widgets/common/fake_app_bar.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.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_decode_service.dart';
|
||||||
import 'package:aves/model/image_entry.dart';
|
import 'package:aves/model/image_entry.dart';
|
||||||
|
import 'package:aves/widgets/album/thumbnail_tags.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:transparent_image/transparent_image.dart';
|
import 'package:transparent_image/transparent_image.dart';
|
||||||
|
|
||||||
|
@ -103,9 +104,8 @@ class ThumbnailState extends State<Thumbnail> {
|
||||||
iconSize: iconSize,
|
iconSize: iconSize,
|
||||||
)
|
)
|
||||||
else if (entry.isGif)
|
else if (entry.isGif)
|
||||||
Icon(
|
GifTag(
|
||||||
Icons.gif,
|
iconSize: iconSize,
|
||||||
size: 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/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/utils/date_utils.dart';
|
||||||
import 'package:aves/widgets/common/draggable_scrollbar.dart';
|
import 'package:aves/widgets/common/draggable_scrollbar.dart';
|
||||||
import 'package:aves/widgets/common/outlined_text.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