Implement thread image view with scaling and panning
This commit is contained in:
parent
fe9de86f98
commit
2dfec9ee62
|
@ -25,6 +25,32 @@ class EntryItem extends StatelessWidget {
|
||||||
final Future<void> Function(String)? onReply;
|
final Future<void> Function(String)? onReply;
|
||||||
final bool isPreview;
|
final bool isPreview;
|
||||||
|
|
||||||
|
_onImageClick(BuildContext context) {
|
||||||
|
Navigator.of(context).push(
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => Scaffold(
|
||||||
|
extendBodyBehindAppBar: true,
|
||||||
|
appBar: AppBar(
|
||||||
|
title: Text(item.title),
|
||||||
|
backgroundColor: const Color(0x66000000),
|
||||||
|
),
|
||||||
|
body: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: InteractiveViewer(
|
||||||
|
child: Image.network(
|
||||||
|
item.image!.storageUrl,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Column(
|
return Column(
|
||||||
|
@ -32,18 +58,24 @@ class EntryItem extends StatelessWidget {
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
if (item.image?.storageUrl != null)
|
if (item.image?.storageUrl != null)
|
||||||
isPreview
|
isPreview
|
||||||
? Image.network(
|
? InkWell(
|
||||||
|
onTap: () => _onImageClick(context),
|
||||||
|
child: Image.network(
|
||||||
item.image!.storageUrl,
|
item.image!.storageUrl,
|
||||||
height: 160,
|
height: 160,
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
|
),
|
||||||
)
|
)
|
||||||
: Container(
|
: Container(
|
||||||
constraints: BoxConstraints(
|
constraints: BoxConstraints(
|
||||||
maxHeight: MediaQuery.of(context).size.height / 2,
|
maxHeight: MediaQuery.of(context).size.height / 2,
|
||||||
),
|
),
|
||||||
|
child: InkWell(
|
||||||
|
onTap: () => _onImageClick(context),
|
||||||
child: Image.network(
|
child: Image.network(
|
||||||
item.image!.storageUrl,
|
item.image!.storageUrl,
|
||||||
|
),
|
||||||
)),
|
)),
|
||||||
Container(
|
Container(
|
||||||
padding: const EdgeInsets.all(16),
|
padding: const EdgeInsets.all(16),
|
||||||
|
|
Loading…
Reference in New Issue