aves/lib/thumbnail.dart
2019-07-13 18:12:19 +09:00

50 lines
1.3 KiB
Dart

import 'dart:typed_data';
import 'package:aves/main.dart';
import 'package:transparent_image/transparent_image.dart';
import 'package:flutter/material.dart';
class Thumbnail extends StatefulWidget {
Thumbnail({Key key, @required this.id, @required this.extent}) : super(key: key);
final int id;
final double extent;
@override
ThumbnailState createState() => ThumbnailState();
}
class ThumbnailState extends State<Thumbnail> {
Future<Uint8List> loader;
@override
void initState() {
super.initState();
loader = ImageFetcher.getThumbnail(widget.id);
}
@override
void dispose() {
ImageFetcher.cancelGetThumbnail(widget.id);
super.dispose();
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: loader,
builder: (futureContext, AsyncSnapshot<Uint8List> snapshot) {
var ready = snapshot.connectionState == ConnectionState.done && !snapshot.hasError;
Uint8List bytes = ready ? snapshot.data : kTransparentImage;
return Hero(
tag: widget.id,
child: Image.memory(
bytes,
width: widget.extent,
height: widget.extent,
fit: BoxFit.cover,
),
);
});
}
}