diff --git a/lib/config/urls.dart b/lib/config/urls.dart index a841d7b..dedc94d 100755 --- a/lib/config/urls.dart +++ b/lib/config/urls.dart @@ -172,8 +172,4 @@ class Url { static String getUsers(String id) { return '$baseUrl/Users?medical_center_id=$id'; } - - static String showItemImage(String file) { - return 'https://www.cssd-doc.com/$file'; - } } diff --git a/lib/providers/items.dart b/lib/providers/items.dart index 0e71a0f..3e960b7 100755 --- a/lib/providers/items.dart +++ b/lib/providers/items.dart @@ -140,7 +140,7 @@ class ItemProvider extends ChangeNotifier { 'specific': specific, 'name': name, 'udi': udi, - 'batch_id': batchId, + 'file_batch_id': batchId, }, ), headers: { @@ -280,7 +280,7 @@ class ItemProvider extends ChangeNotifier { originalItems = []; } - for (var item in itemsData['data']['data']) { + for (var item in itemsData['data']) { originalItems!.add( ItemResultObject( name: item['name'], @@ -324,9 +324,9 @@ class ItemProvider extends ChangeNotifier { List mediaList = []; - if (data['filesPath'] != null) { - for (var file in data['filesPath']) { - mediaList.add(Url.showItemImage(file)); + if (data['files'] != null || data['files'] != []) { + for (var file in data['files']) { + mediaList.add(file['thumbnail']); } } diff --git a/lib/providers/my_items.dart b/lib/providers/my_items.dart index bc22801..bd41b31 100755 --- a/lib/providers/my_items.dart +++ b/lib/providers/my_items.dart @@ -120,7 +120,7 @@ class MyItemProvider extends ChangeNotifier { originalMyItems = []; } - for (var item in itemsData['data']['data']) { + for (var item in itemsData['data']) { originalMyItems!.add( MyItemResultObject( name: item['name'], diff --git a/lib/providers/packages.dart b/lib/providers/packages.dart index def3bae..624c22b 100755 --- a/lib/providers/packages.dart +++ b/lib/providers/packages.dart @@ -282,7 +282,7 @@ class PackageProvider extends ChangeNotifier { originalItems = []; } - for (var item in testResultData['data']['data']) { + for (var item in testResultData['data']) { originalItems!.add( PackageResultObject( createdAt: item['created_at'], @@ -300,6 +300,7 @@ class PackageProvider extends ChangeNotifier { await http.get(Uri.parse(Url.getPackageResult(id)), headers: { 'Authorization': User.token, }); + print(response.statusCode); if (response.statusCode != 200) { return PackageDetailObject( id: 'null', diff --git a/lib/providers/test_results.dart b/lib/providers/test_results.dart index dc6bae5..7124d47 100755 --- a/lib/providers/test_results.dart +++ b/lib/providers/test_results.dart @@ -204,7 +204,7 @@ class TestResultsProvider with ChangeNotifier { originalItems = []; } - for (var item in testResultData['data']['data']) { + for (var item in testResultData['data']) { originalItems!.add( TestResultObject( id: item['id'].toString(), @@ -267,7 +267,7 @@ class TestResultsProvider with ChangeNotifier { await addImage(batchId, image.bytes, image.path!); } dynamic vals = values; - vals['batch_id'] = batchId; + vals['file_batch_id'] = batchId; // int counter = 0; // if (images.length != 0) { @@ -313,6 +313,15 @@ class TestResultsProvider with ChangeNotifier { var data = json.decode(response.body)['data']; // print(data); + + List mediaList = []; + + if (data['files'] != null || data['files'] != []) { + for (var file in data['files']) { + mediaList.add(file['thumbnail']); + } + } + result = { 'id': data['id'], 'auto_cleave_id': data['inputs']['Autoclave ID'] != null @@ -329,7 +338,8 @@ class TestResultsProvider with ChangeNotifier { data['test_type']['name'] != null ? data['test_type']['name'] : '', 'hospital': originalItems! .firstWhere((element) => element.id == data['id'].toString()) - .hospital // az api safheye asli estefade mi shavad + .hospital, // az api safheye asli estefade mi shavad + 'files': mediaList, }; return result!; } diff --git a/lib/widgets/ItemScreens/Details/item_detail_box.dart b/lib/widgets/ItemScreens/Details/item_detail_box.dart index 705ac97..6f9712a 100755 --- a/lib/widgets/ItemScreens/Details/item_detail_box.dart +++ b/lib/widgets/ItemScreens/Details/item_detail_box.dart @@ -1,3 +1,4 @@ +import 'package:carousel_slider/carousel_slider.dart'; import 'package:cssd/config/colors.dart'; import 'package:cssd/models/item_model.dart'; import 'package:flutter/material.dart'; @@ -344,20 +345,28 @@ class ItemDetailsDataBox extends StatelessWidget { ), ], ), - Divider(), - SizedBox( + if(datas.filePath!.isNotEmpty) Divider(), + if(datas.filePath!.isNotEmpty) SizedBox( height: 10, ), - Container( + if(datas.filePath!.isNotEmpty) Container( width: double.infinity, padding: EdgeInsets.symmetric(vertical: 10, horizontal: 20), - child: ListView.separated( - shrinkWrap: true, - itemBuilder: (ctx, index) { + child: CarouselSlider.builder( + disableGesture: true, + itemBuilder: (ctx, index, realIndex) { return Image(image: NetworkImage(datas.filePath![index])); }, - separatorBuilder: (ctx, index) => Divider(), itemCount: datas.filePath!.length, + options: CarouselOptions( + enlargeCenterPage: false, + aspectRatio: 1, + viewportFraction: 1, + padEnds: false, + pauseAutoPlayOnTouch: true, + disableCenter: false, + autoPlay: false, + ), ), ), ], diff --git a/lib/widgets/ItemScreens/Result/item_data_box.dart b/lib/widgets/ItemScreens/Result/item_data_box.dart index 6bb9409..73b116c 100755 --- a/lib/widgets/ItemScreens/Result/item_data_box.dart +++ b/lib/widgets/ItemScreens/Result/item_data_box.dart @@ -117,67 +117,6 @@ class ItemItemBox extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.end, children: [ - userData['roles']?.contains('User') ?? false - ? Container() - : InkWell( - customBorder: CircleBorder(), - onTap: () { - showDialog( - context: context, - builder: (context) { - return AlertDialog( - title: Text( - item!.status == 1 - ? 'Are you Reject this item?' - : 'Are you Confirm this item?', - ), - actions: [ - TextButton( - onPressed: () { - Provider.of(context, - listen: false) - .changeStatus(item!.id) - .then( - (value) { - if (value) { - print('true'); - } - Navigator.of(context) - .popAndPushNamed(Routes - .itemResultScreen); - }, - ); - }, - child: Text('Yes'), - ), - TextButton( - onPressed: () { - Navigator.of(context).pop(); - }, - child: Text('No'), - ), - ], - ); - }, - ); - }, - child: Container( - padding: EdgeInsets.all(7), - width: 8 * _deviceBlockSize, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: item!.status == 1 ? kPink : kBlue, - ), - child: Icon( - item!.status == 1 ? Icons.close : Icons.check, - size: 4 * _deviceBlockSize, - color: Colors.white, - ), - ), - ), - SizedBox( - width: 5.0, - ), // userData['roles']?.contains('User') ?? false // ? Container() // : InkWell( @@ -278,6 +217,67 @@ class ItemItemBox extends StatelessWidget { SizedBox( width: 5.0, ), + userData['roles']?.contains('User') ?? false + ? Container() + : InkWell( + customBorder: CircleBorder(), + onTap: () { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text( + item!.status == 1 + ? 'Are you Reject this item?' + : 'Are you Confirm this item?', + ), + actions: [ + TextButton( + onPressed: () { + Provider.of(context, + listen: false) + .changeStatus(item!.id) + .then( + (value) { + if (value) { + print('true'); + } + Navigator.of(context) + .popAndPushNamed(Routes + .itemResultScreen); + }, + ); + }, + child: Text('Yes'), + ), + TextButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text('No'), + ), + ], + ); + }, + ); + }, + child: Container( + padding: EdgeInsets.all(7), + width: 8 * _deviceBlockSize, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: item!.status == 1 ? kPink : kBlue, + ), + child: Icon( + item!.status == 1 ? Icons.close : Icons.check, + size: 4 * _deviceBlockSize, + color: Colors.white, + ), + ), + ), + SizedBox( + width: 5.0, + ), InkWell( customBorder: CircleBorder(), onTap: () { diff --git a/lib/widgets/MyItemsScreens/Detail/my_items_detail_box_widget.dart b/lib/widgets/MyItemsScreens/Detail/my_items_detail_box_widget.dart index 0871052..95d9139 100755 --- a/lib/widgets/MyItemsScreens/Detail/my_items_detail_box_widget.dart +++ b/lib/widgets/MyItemsScreens/Detail/my_items_detail_box_widget.dart @@ -1,3 +1,4 @@ +import 'package:carousel_slider/carousel_slider.dart'; import 'package:cssd/config/colors.dart'; import 'package:cssd/config/routes.dart'; import 'package:cssd/models/item_model.dart'; @@ -353,6 +354,30 @@ class MyItemsDetailsDataBox extends StatelessWidget { ), ], ), + if(datas.filePath!.isNotEmpty) Divider(), + if(datas.filePath!.isNotEmpty) SizedBox( + height: 10, + ), + if(datas.filePath!.isNotEmpty) Container( + width: double.infinity, + padding: EdgeInsets.symmetric(vertical: 10, horizontal: 20), + child: CarouselSlider.builder( + disableGesture: true, + itemBuilder: (ctx, index, realIndex) { + return Image(image: NetworkImage(datas.filePath![index])); + }, + itemCount: datas.filePath!.length, + options: CarouselOptions( + enlargeCenterPage: false, + aspectRatio: 1, + viewportFraction: 1, + padEnds: false, + pauseAutoPlayOnTouch: true, + disableCenter: false, + autoPlay: false, + ), + ), + ), ], ), ), diff --git a/lib/widgets/TestResultScreens/Details/datas_box.dart b/lib/widgets/TestResultScreens/Details/datas_box.dart index 53b861c..870c17d 100755 --- a/lib/widgets/TestResultScreens/Details/datas_box.dart +++ b/lib/widgets/TestResultScreens/Details/datas_box.dart @@ -1,3 +1,4 @@ +import 'package:carousel_slider/carousel_slider.dart'; import 'package:cssd/config/colors.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; @@ -238,6 +239,30 @@ class DatasBox extends StatelessWidget { ), ], ), + if(datas['files'].isNotEmpty) Divider(), + if(datas['files'].isNotEmpty) SizedBox( + height: 10, + ), + if(datas['files'].isNotEmpty) Container( + width: double.infinity, + padding: EdgeInsets.symmetric(vertical: 10, horizontal: 20), + child: CarouselSlider.builder( + disableGesture: true, + itemBuilder: (ctx, index, realIndex) { + return Image(image: NetworkImage(datas['files'][index])); + }, + itemCount: datas['files'].length, + options: CarouselOptions( + enlargeCenterPage: false, + aspectRatio: 1, + viewportFraction: 1, + padEnds: false, + pauseAutoPlayOnTouch: true, + disableCenter: false, + autoPlay: false, + ), + ), + ), ], ), ), diff --git a/pubspec.lock b/pubspec.lock index 95ab5b1..74277e3 100755 --- a/pubspec.lock +++ b/pubspec.lock @@ -105,6 +105,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.2+3" + carousel_slider: + dependency: "direct main" + description: + name: carousel_slider + sha256: "9c695cc963bf1d04a47bd6021f68befce8970bcd61d24938e1fb0918cf5d9c42" + url: "https://pub.dev" + source: hosted + version: "4.2.1" characters: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 0f02018..4f189aa 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -44,6 +44,7 @@ dependencies: network_image: ^0.1.1 flutter_downloader: ^1.11.5 permission_handler: ^11.1.0 + carousel_slider: ^4.2.1 # video_player: ^0.10.11+2 dev_dependencies: