diff --git a/lib/pages/ItemPages/item_result_screen.dart b/lib/pages/ItemPages/item_result_screen.dart index c1d38e8..fb53244 100755 --- a/lib/pages/ItemPages/item_result_screen.dart +++ b/lib/pages/ItemPages/item_result_screen.dart @@ -11,6 +11,7 @@ import 'package:flutter_downloader/flutter_downloader.dart'; import 'package:permission_handler/permission_handler.dart'; import '../../config/routes.dart'; +import '../../providers/auth.dart'; import '../../providers/connectivity.dart'; import '../../widgets/CycleScreens/Result/banner.dart'; import '../../widgets/CycleScreens/Result/search_box.dart'; @@ -38,23 +39,25 @@ class _ItemResultScreenState extends State { void initState() { sc = new ScrollController(); super.initState(); - IsolateNameServer.registerPortWithName(_port.sendPort, 'downloader_send_port'); + IsolateNameServer.registerPortWithName( + _port.sendPort, 'downloader_send_port'); _port.listen((dynamic data) { - String id = data[0]; - DownloadTaskStatus status = data[1]; - int progress = data[2]; - if (status == DownloadTaskStatus.complete) { - print('Downloaded'); - } - setState((){ }); - }); + String id = data[0]; + DownloadTaskStatus status = data[1]; + int progress = data[2]; + if (status == DownloadTaskStatus.complete) { + print('Downloaded'); + } + setState(() {}); + }); - FlutterDownloader.registerCallback(downloadCallback); + FlutterDownloader.registerCallback(downloadCallback); } @pragma('vm:entry-point') static void downloadCallback(String id, int status, int progress) { - final SendPort? send = IsolateNameServer.lookupPortByName('downloader_send_port'); + final SendPort? send = + IsolateNameServer.lookupPortByName('downloader_send_port'); send!.send([id, status, progress]); } @@ -106,7 +109,12 @@ class _ItemResultScreenState extends State { ), appBar: AppBar( titleSpacing: -10, - title: Text('Home', style: TextStyle(color: Colors.white,),), + title: Text( + 'Home', + style: TextStyle( + color: Colors.white, + ), + ), backgroundColor: Colors.black, leading: IconButton( icon: Icon( @@ -281,30 +289,33 @@ class ItemResultFloatingButton extends StatelessWidget { @override Widget build(BuildContext context) { + final userData = Provider.of(context, listen: false).user; return Row( mainAxisAlignment: MainAxisAlignment.end, children: [ - InkWell( - customBorder: CircleBorder(), - onTap: () async { - var status = await Permission.storage.request(); - if (status.isGranted) { - Provider.of(context, listen: false).exportItems(); - } - }, - child: Container( - padding: EdgeInsets.all(_deviceBlockSize), - decoration: BoxDecoration( - shape: BoxShape.circle, - color: Colors.black, - ), - child: Icon( - Icons.import_export, - size: 10 * _deviceBlockSize, - color: Colors.white, + if (userData['roles'].contains('Supervisor') || + userData['roles'].contains('Admin')) + InkWell( + customBorder: CircleBorder(), + onTap: () async { + var status = await Permission.storage.request(); + if (status.isGranted) { + Provider.of(context, listen: false).exportItems(); + } + }, + child: Container( + padding: EdgeInsets.all(_deviceBlockSize), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.black, + ), + child: Icon( + Icons.import_export, + size: 10 * _deviceBlockSize, + color: Colors.white, + ), ), ), - ), SizedBox( width: 2 * _deviceBlockSize, ), diff --git a/lib/pages/PackagePages/package_result_screen.dart b/lib/pages/PackagePages/package_result_screen.dart index 8c69861..2f564fa 100755 --- a/lib/pages/PackagePages/package_result_screen.dart +++ b/lib/pages/PackagePages/package_result_screen.dart @@ -11,6 +11,7 @@ import 'package:flutter_downloader/flutter_downloader.dart'; import 'package:permission_handler/permission_handler.dart'; import '../../config/routes.dart'; +import '../../providers/auth.dart'; import '../../providers/connectivity.dart'; import '../../widgets/CycleScreens/Result/banner.dart'; import '../../widgets/CycleScreens/Result/search_box.dart'; @@ -254,9 +255,12 @@ class PackageResultFloatingButton extends StatelessWidget { @override Widget build(BuildContext context) { + final userData = Provider.of(context, listen: false).user; return Row( mainAxisAlignment: MainAxisAlignment.end, children: [ + if (userData['roles'].contains('Supervisor') || + userData['roles'].contains('Admin')) InkWell( customBorder: CircleBorder(), onTap: () async { diff --git a/lib/providers/items.dart b/lib/providers/items.dart index 3e960b7..734b057 100755 --- a/lib/providers/items.dart +++ b/lib/providers/items.dart @@ -379,8 +379,14 @@ class ItemProvider extends ChangeNotifier { final taskId = await FlutterDownloader.enqueue( url: Url.exportItems, savedDir: baseStorage!.path, + headers: { + 'Authorization': User.token, + "Accept": "*" + }, showNotification: true, openFileFromNotification: true, + saveInPublicStorage: true, + fileName: "Items " + DateTime.now().toString() + ".xlsx", ); print(taskId); return true; diff --git a/lib/providers/packages.dart b/lib/providers/packages.dart index 624c22b..acc238c 100755 --- a/lib/providers/packages.dart +++ b/lib/providers/packages.dart @@ -342,9 +342,15 @@ class PackageProvider extends ChangeNotifier { final baseStorage = await getExternalStorageDirectory(); final taskId = await FlutterDownloader.enqueue( url: Url.exportPackages, + headers: { + 'Authorization': User.token, + "Accept": "*" + }, savedDir: baseStorage!.path, showNotification: true, openFileFromNotification: true, + saveInPublicStorage: true, + fileName: "Packages " + DateTime.now().toString() + ".xlsx", ); print(taskId); return true;