D1APP-87 interactive viewer on image contents
This commit is contained in:
parent
efd512e9b6
commit
db45aa3a36
|
|
@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
|
||||||
class DidvanIconButton extends StatelessWidget {
|
class DidvanIconButton extends StatelessWidget {
|
||||||
final IconData icon;
|
final IconData icon;
|
||||||
final Color? color;
|
final Color? color;
|
||||||
|
final Color? backgroundColor;
|
||||||
final double? size;
|
final double? size;
|
||||||
final double? gestureSize;
|
final double? gestureSize;
|
||||||
final VoidCallback onPressed;
|
final VoidCallback onPressed;
|
||||||
|
|
@ -14,6 +15,7 @@ class DidvanIconButton extends StatelessWidget {
|
||||||
this.color,
|
this.color,
|
||||||
this.size,
|
this.size,
|
||||||
this.gestureSize,
|
this.gestureSize,
|
||||||
|
this.backgroundColor,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -21,7 +23,11 @@ class DidvanIconButton extends StatelessWidget {
|
||||||
return InkWrapper(
|
return InkWrapper(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
borderRadius: BorderRadius.circular(200),
|
borderRadius: BorderRadius.circular(200),
|
||||||
child: SizedBox(
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: backgroundColor,
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
),
|
||||||
height: gestureSize ?? 48,
|
height: gestureSize ?? 48,
|
||||||
width: gestureSize ?? 48,
|
width: gestureSize ?? 48,
|
||||||
child: Icon(
|
child: Icon(
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import 'package:didvan/utils/date_time.dart';
|
||||||
import 'package:didvan/widgets/animated_visibility.dart';
|
import 'package:didvan/widgets/animated_visibility.dart';
|
||||||
import 'package:didvan/widgets/didvan/card.dart';
|
import 'package:didvan/widgets/didvan/card.dart';
|
||||||
import 'package:didvan/widgets/didvan/divider.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/didvan/text.dart';
|
||||||
import 'package:didvan/widgets/ink_wrapper.dart';
|
import 'package:didvan/widgets/ink_wrapper.dart';
|
||||||
import 'package:didvan/widgets/item_title.dart';
|
import 'package:didvan/widgets/item_title.dart';
|
||||||
|
|
@ -201,9 +202,39 @@ class _DidvanPageViewState extends State<DidvanPageView> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (content.image != null) {
|
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!,
|
imageUrl: content.image!,
|
||||||
aspectRatio: 16 / 9,
|
aspectRatio: 16 / 9,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return const SizedBox();
|
return const SizedBox();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue