D1APP-87 interactive viewer on image contents

This commit is contained in:
MohammadTaha Basiri 2022-02-23 19:46:20 +03:30
parent efd512e9b6
commit db45aa3a36
2 changed files with 41 additions and 4 deletions

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
class DidvanIconButton extends StatelessWidget {
final IconData icon;
final Color? color;
final Color? backgroundColor;
final double? size;
final double? gestureSize;
final VoidCallback onPressed;
@ -14,6 +15,7 @@ class DidvanIconButton extends StatelessWidget {
this.color,
this.size,
this.gestureSize,
this.backgroundColor,
}) : super(key: key);
@override
@ -21,7 +23,11 @@ class DidvanIconButton extends StatelessWidget {
return InkWrapper(
onPressed: onPressed,
borderRadius: BorderRadius.circular(200),
child: SizedBox(
child: Container(
decoration: BoxDecoration(
color: backgroundColor,
shape: BoxShape.circle,
),
height: gestureSize ?? 48,
width: gestureSize ?? 48,
child: Icon(

View File

@ -9,6 +9,7 @@ import 'package:didvan/utils/date_time.dart';
import 'package:didvan/widgets/animated_visibility.dart';
import 'package:didvan/widgets/didvan/card.dart';
import 'package:didvan/widgets/didvan/divider.dart';
import 'package:didvan/widgets/didvan/icon_button.dart';
import 'package:didvan/widgets/didvan/text.dart';
import 'package:didvan/widgets/ink_wrapper.dart';
import 'package:didvan/widgets/item_title.dart';
@ -201,9 +202,39 @@ class _DidvanPageViewState extends State<DidvanPageView> {
);
}
if (content.image != null) {
return SkeletonImage(
return GestureDetector(
onTap: () {
showDialog(
context: context,
builder: (context) => Stack(
children: [
Positioned.fill(
child: InteractiveViewer(
child: Center(
child: SkeletonImage(
width: MediaQuery.of(context).size.width,
height: 200,
imageUrl: content.image,
),
),
),
),
Positioned(
right: 16,
child: DidvanIconButton(
backgroundColor: Theme.of(context).colorScheme.primary,
icon: DidvanIcons.back_regular,
onPressed: Navigator.of(context).pop,
),
),
],
),
);
},
child: SkeletonImage(
imageUrl: content.image!,
aspectRatio: 16 / 9,
),
);
}
return const SizedBox();