ppm attachments fix

main_design2.0
Sikander Saleem 2 years ago
parent a9d4d2a373
commit d63a18226a

@ -120,7 +120,7 @@ class Pentry {
List<String> files = []; List<String> files = [];
if (map["vAttachments"] != null) if (map["vAttachments"] is List) { if (map["vAttachments"] != null) if (map["vAttachments"] is List) {
List list = map["vAttachments"]; List list = map["vAttachments"];
files = list.map((e) => URLs.getFileUrl(e["name"])).toList(); files = list.map((e) => URLs.getFileUrl(e["attachmentName"])).toList();
} }
List<PPMCheckList> ppmCheckLists = []; List<PPMCheckList> ppmCheckLists = [];
if (map['vChecklists'] != null) { if (map['vChecklists'] != null) {

@ -1,3 +1,4 @@
import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/pantry/pentry.dart'; import 'package:test_sa/models/pantry/pentry.dart';
@ -50,7 +51,9 @@ class Visit {
List<String> images = []; List<String> images = [];
if (parsedJson["vAttachments"] is List) { if (parsedJson["vAttachments"] is List) {
List list = parsedJson["vAttachments"]; List list = parsedJson["vAttachments"];
images = list.map((e) => e["attachmentURL"].toString()).toList(); images = list.map((e) {
return URLs.getFileUrl(e["attachmentURL"].toString());
}).toList();
} }
return Visit( return Visit(
id: parsedJson["id"], id: parsedJson["id"],

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/models/visits/visit.dart'; import 'package:test_sa/models/visits/visit.dart';
import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/colors.dart';
@ -8,6 +9,7 @@ import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/pages/user/visits/pantry/edit_pentry.dart'; import 'package:test_sa/views/pages/user/visits/pantry/edit_pentry.dart';
import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; import 'package:test_sa/views/widgets/buttons/app_icon_button.dart';
import 'package:test_sa/views/widgets/images/files_list.dart';
import 'package:test_sa/views/widgets/images/images_list.dart'; import 'package:test_sa/views/widgets/images/images_list.dart';
import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart';
import 'package:test_sa/views/widgets/visits/visit_status.dart'; import 'package:test_sa/views/widgets/visits/visit_status.dart';
@ -21,6 +23,7 @@ class VisitDetailsPage extends StatelessWidget {
final Visit visit; final Visit visit;
const VisitDetailsPage({Key key, this.visit}) : super(key: key); const VisitDetailsPage({Key key, this.visit}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Subtitle subtitle = AppLocalization.of(context).subtitle; Subtitle subtitle = AppLocalization.of(context).subtitle;
@ -70,44 +73,45 @@ class VisitDetailsPage extends StatelessWidget {
padding: const EdgeInsets.symmetric(horizontal: 16), padding: const EdgeInsets.symmetric(horizontal: 16),
children: [ children: [
const SizedBox(height: 8), const SizedBox(height: 8),
MaterialButton( // MaterialButton(
padding: EdgeInsets.zero, // padding: EdgeInsets.zero,
onPressed: () { // onPressed: () {
if ((visit.images?.isNotEmpty ?? false) && (visit.images?.first?.isNotEmpty ?? false)) { // if ((visit.images?.isNotEmpty ?? false) && (visit.images?.first?.isNotEmpty ?? false)) {
Navigator.of(context).push( // Navigator.of(context).push(
MaterialPageRoute( // MaterialPageRoute(
builder: (_) => Scaffold( // builder: (_) => Scaffold(
body: InteractiveViewer( // body: InteractiveViewer(
child: Center( // child: Center(
child: ImageLoader( // child: ImageLoader(
url: visit.images.first, // url: visit.images.first,
boxFit: BoxFit.contain, // boxFit: BoxFit.contain,
), // ),
), // ),
), // ),
), // ),
), // ),
); // );
} // }
}, // },
child: SizedBox( // child: SizedBox(
height: 140 * AppStyle.getScaleFactor(context), // height: 140 * AppStyle.getScaleFactor(context),
width: MediaQuery.of(context).size.width, // width: MediaQuery.of(context).size.width,
child: ImageLoader( // child: ImageLoader(
url: visit.images.isEmpty ? " " : visit.images.first, // url: visit.images.isEmpty ? " " : visit.images.first,
boxFit: BoxFit.cover, // boxFit: BoxFit.cover,
// ),
// ),
// ),
// const SizedBox(
// height: 8,
// ),
if (visit?.images?.isNotEmpty ?? false)
SizedBox(
height: 60 * AppStyle.getScaleFactor(context),
child: FilesList(
images: visit.images,
), ),
), ).paddingOnly(top: 4, bottom: 4),
),
const SizedBox(
height: 8,
),
SizedBox(
height: 60 * AppStyle.getScaleFactor(context),
child: ImagesList(
images: visit.images,
),
),
const SizedBox( const SizedBox(
height: 8, height: 8,
), ),

@ -21,12 +21,16 @@ class FilesList extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListView.separated( return ListView.separated(
padding: padding ?? EdgeInsets.symmetric(horizontal: 32 * AppStyle.getScaleFactor(context)), padding: padding ?? EdgeInsets.symmetric(horizontal: 32 * AppStyle.getScaleFactor(context)),
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
itemCount: images.length, itemCount: images?.length ?? 0,
separatorBuilder: (context, itemIndex) => 8.width, separatorBuilder: (context, itemIndex) => 8.width,
itemBuilder: (context, itemIndex) { itemBuilder: (context, itemIndex) {
if (images[itemIndex] == null || !images[itemIndex].contains(".")) {
return Text("Bad\nFile");
}
var isImage = var isImage =
images[itemIndex].split(".").last.toLowerCase() == "png" || images[itemIndex].split(".").last.toLowerCase() == "jpg" || images[itemIndex].split(".").last.toLowerCase() == "jpeg"; images[itemIndex].split(".").last.toLowerCase() == "png" || images[itemIndex].split(".").last.toLowerCase() == "jpg" || images[itemIndex].split(".").last.toLowerCase() == "jpeg";
var isPdf = images[itemIndex].split(".").last.toLowerCase() == "pdf"; var isPdf = images[itemIndex].split(".").last.toLowerCase() == "pdf";
@ -59,9 +63,13 @@ class FilesList extends StatelessWidget {
} else if (_isLocalUrl(images[itemIndex])) { } else if (_isLocalUrl(images[itemIndex])) {
OpenFile.open(images[itemIndex]); OpenFile.open(images[itemIndex]);
} else { } else {
if (!await launchUrl(Uri.parse(images[itemIndex]), mode: LaunchMode.externalApplication)) { try {
Fluttertoast.showToast(msg: "UnExpected Error with file."); if (!await launchUrl(Uri.parse(images[itemIndex]), mode: LaunchMode.externalApplication)) {
throw Exception('Could not launch '); Fluttertoast.showToast(msg: "UnExpected Error with file.");
throw Exception('Could not launch ');
}
} catch (ex) {
Fluttertoast.showToast(msg: "No Viewer found.");
} }
} }
}); });

Loading…
Cancel
Save