import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart'; import 'package:tangheem/api/tangheem_user_api_client.dart'; import 'package:tangheem/app_state/app_state.dart'; import 'package:tangheem/classes/colors.dart'; import 'package:tangheem/classes/consts.dart'; import 'package:tangheem/classes/utils.dart'; import 'package:tangheem/extensions/int_extensions.dart'; import 'package:tangheem/extensions/string_extensions.dart'; import 'package:tangheem/extensions/widget_extensions.dart'; import 'package:tangheem/models/content_info_model.dart'; import 'package:tangheem/ui/misc/no_data_ui.dart'; import 'package:tangheem/widgets/new/CommonHeader.dart'; class PdfListScreen extends StatefulWidget { static const String routeName = "/tangheem_pdf"; PdfListScreen({Key key}) : super(key: key); @override _PdfListScreenState createState() { return _PdfListScreenState(); } } class _PdfListScreenState extends State { List contentList; List haqooqAlMosasa; @override void initState() { super.initState(); haqooqAlMosasa = AppState().haqooqAlMosasa; getPdfs(); } void getPdfs() async { Utils.showLoading(context); try { List responseList = await Future.wait([TangheemUserApiClient().getContentInfo(8), if (haqooqAlMosasa == null) TangheemUserApiClient().getContentInfo(1)]); contentList = responseList[0].data ?? []; if (haqooqAlMosasa == null) { haqooqAlMosasa = responseList[1].data ?? []; AppState().haqooqAlMosasa = haqooqAlMosasa; } } catch (ex) { contentList = []; haqooqAlMosasa = []; if (mounted) Utils.handleException(ex, null); } finally { Utils.hideLoading(context); } setState(() {}); } @override void dispose() { super.dispose(); } void startFileDownload(String url, String fileName) async { try { Utils.showLoading(context); String path = await Utils.getStoragePath(fileName); Utils.downloadFile(ApiConsts.baseUrl + url, path, onResponse: (isSuccess) { Utils.hideLoading(context); if (isSuccess) { Utils.showToast("تم حفظ الملف بنجاح"); } else { Utils.showToast("فشل حفظ الملف ، حاول مرة أخرى"); } }); } catch (ex) { print(ex); Utils.hideLoading(context); } } @override Widget build(BuildContext context) { return SizedBox( height: double.infinity, child: SingleChildScrollView( physics: const AlwaysScrollableScrollPhysics(), child: Column( children: [ CommonHeader("التصفح والتحميل", "assets/icons/new/pdf_bg.jpg", Color(0xffAE8646)), contentList == null ? SizedBox() : contentList.isEmpty ? NoDataUI() : ListView.separated( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, padding: EdgeInsets.only(left: 35, right: 35, top: 35, bottom: 0), itemCount: contentList.length, separatorBuilder: (context, index) { return Divider(color: Color(0xffC7C7C7), height: 1, thickness: 1).paddingOnly(top: 14, bottom: 14); }, itemBuilder: (context, index) { return SizedBox( height: 50, child: Row( children: [ SvgPicture.asset( "assets/icons/new/download_pdf.svg", width: 44, height: 50, ).onPress(() { startFileDownload(contentList[index].exposeFilePath, contentList[index].fileName); }), 7.width, ClipRRect( borderRadius: BorderRadius.circular(7), child: Container( height: 50, alignment: Alignment.centerRight, decoration: BoxDecoration( color: Colors.white, ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 44, height: 50, alignment: Alignment.center, decoration: BoxDecoration( color: ColorConsts.darkText, ), child: Column( mainAxisSize: MainAxisSize.min, children: [ Icon(Icons.zoom_out_map_rounded, color: Colors.white), "تصفع".toText(10), ], ), ), Directionality( textDirection: TextDirection.rtl, child: (contentList[index].fileName?.trim() ?? "").toText(18, color: ColorConsts.darkText).paddingOnly(left: 12, right: 12), ).expanded, ], ), ), ).onPress(() { Navigator.pushNamed(context, PdfViewerScreen.routeName, arguments: contentList[index]); }).expanded, ], ), ); }, ), if ((haqooqAlMosasa?.length ?? 0) > 0) Column( children: [ "حقوق الموسوعة".toText(13, color: ColorConsts.greyLightColor), for (ContentInfoDataModel text in haqooqAlMosasa) text.content.toText(13, color: ColorConsts.greyLightColor, textAlign: TextAlign.center) ], ).paddingOnly(left: 35, right: 35, top: 35), ], ), ), ); } } class PdfViewerScreen extends StatelessWidget { static const String routeName = "/tangheem_pdf_view"; final ContentInfoDataModel pdfDetail; PdfViewerScreen(this.pdfDetail, {Key key}) : super(key: key); final GlobalKey _pdfViewerKey = GlobalKey(); @override Widget build(BuildContext context) { return Column( children: [ CommonHeader(pdfDetail.fileName, "assets/icons/new/pdf_bg.jpg", Color(0xffAE8646)), SfPdfViewer.network( ApiConsts.baseUrl + pdfDetail.exposeFilePath, key: _pdfViewerKey, canShowScrollHead: false, enableTextSelection: false, enableDocumentLinkAnnotation: false, canShowPaginationDialog: false, canShowScrollStatus: false, pageSpacing: 0, // pageLayoutMode:PdfPageLayoutMode.single ).expanded, ], ); } }