Gallery/lib/image_tile.dart

65 lines
2.4 KiB
Dart
Raw Normal View History

2022-09-25 22:12:57 +00:00
import 'package:flutter/material.dart';
import 'package:gallery/data_provider/data_provider.dart';
import 'package:gallery/utils/tile_size.dart';
2022-09-25 22:12:57 +00:00
class ImageTile extends StatelessWidget {
2022-09-26 22:30:13 +00:00
const ImageTile(
{Key? key, this.onClick, this.child, this.imageUri, this.dtaProvider})
: super(key: key);
2022-09-25 22:12:57 +00:00
final Function? onClick;
final Widget? child;
final Uri? imageUri;
final DataProvider? dtaProvider;
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
onClick?.call();
},
child: Container(
padding: const EdgeInsets.all(3),
child: imageUri == null
? Container(
decoration: BoxDecoration(
2022-09-26 22:30:13 +00:00
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(calcTileMaxWidth() / 30)),
2022-09-26 22:30:13 +00:00
boxShadow: [
BoxShadow(
color: Colors.black12,
spreadRadius: calcTileMaxWidth() / 150,
blurRadius: calcTileMaxWidth() / 60),
]),
child: child)
: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(
Radius.circular(calcTileMaxWidth() / 30)),
boxShadow: [
BoxShadow(
color: Colors.black12,
spreadRadius: calcTileMaxWidth() / 150,
blurRadius: calcTileMaxWidth() / 60),
]),
child: ClipRRect(
borderRadius: BorderRadius.all(
Radius.circular(calcTileMaxWidth() / 30),
),
child: Image(
fit: BoxFit.cover,
frameBuilder:
(context, child, frame, wasSynchronouslyLoaded) {
return frame == null
? const Center(
child: CircularProgressIndicator(),
)
: child;
},
image: dtaProvider!.getImageProvider(imageUri!),
)),
),
));
2022-09-25 22:12:57 +00:00
}
}