63 lines
2.1 KiB
Dart
63 lines
2.1 KiB
Dart
|
import 'package:cached_network_image/cached_network_image.dart';
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';
|
||
|
import 'package:unit2/theme-data.dart/colors.dart';
|
||
|
import 'package:unit2/widgets/error_state.dart';
|
||
|
|
||
|
import '../../../utils/urls.dart';
|
||
|
|
||
|
class ImageAttachment extends StatefulWidget {
|
||
|
final String imgUrl;
|
||
|
const ImageAttachment({super.key, required this.imgUrl});
|
||
|
|
||
|
@override
|
||
|
State<ImageAttachment> createState() => _ImageAttachmentState();
|
||
|
}
|
||
|
|
||
|
class _ImageAttachmentState extends State<ImageAttachment> {
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
bool isPDF = widget.imgUrl[widget.imgUrl.length - 1] == 'f' ? true : false;
|
||
|
|
||
|
return Scaffold(
|
||
|
floatingActionButton: FloatingActionButton(
|
||
|
onPressed: () {},
|
||
|
child: const Icon(Icons.file_download),
|
||
|
),
|
||
|
appBar: AppBar(
|
||
|
title: const Text("Attachment"),
|
||
|
centerTitle: true,
|
||
|
actions: [
|
||
|
IconButton(onPressed: () {}, icon: const Icon(Icons.share)),
|
||
|
],
|
||
|
),
|
||
|
body: isPDF
|
||
|
? SfPdfViewer.network(
|
||
|
'${Url.instance.prefixHost()}://${Url.instance.host()}${widget.imgUrl}',onDocumentLoadFailed: (details) {
|
||
|
Center(child: Text(details.description),);
|
||
|
},)
|
||
|
: Center(
|
||
|
child: CachedNetworkImage(
|
||
|
progressIndicatorBuilder: (context, url, progress) {
|
||
|
return const SizedBox(
|
||
|
height: 100,
|
||
|
width: 100,
|
||
|
child: CircularProgressIndicator(color: primary,));
|
||
|
},
|
||
|
|
||
|
imageBuilder: (context, imageProvider) => Container(
|
||
|
decoration: BoxDecoration(
|
||
|
image: DecorationImage(
|
||
|
image: imageProvider, fit: BoxFit.fill)),
|
||
|
),
|
||
|
imageUrl:
|
||
|
'${Url.instance.prefixHost()}://${Url.instance.host()}${widget.imgUrl}',
|
||
|
width: double.infinity,
|
||
|
height: 220,
|
||
|
fit: BoxFit.cover,
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|