Implement thread image view with scaling and panning

This commit is contained in:
John Wesley 2023-12-27 17:32:06 -05:00
parent fe9de86f98
commit 2dfec9ee62
1 changed files with 39 additions and 7 deletions

View File

@ -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(
item.image!.storageUrl, onTap: () => _onImageClick(context),
height: 160, child: Image.network(
width: double.infinity, item.image!.storageUrl,
fit: BoxFit.cover, height: 160,
width: double.infinity,
fit: BoxFit.cover,
),
) )
: Container( : Container(
constraints: BoxConstraints( constraints: BoxConstraints(
maxHeight: MediaQuery.of(context).size.height / 2, maxHeight: MediaQuery.of(context).size.height / 2,
), ),
child: Image.network( child: InkWell(
item.image!.storageUrl, onTap: () => _onImageClick(context),
child: Image.network(
item.image!.storageUrl,
),
)), )),
Container( Container(
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),