From 92e02cc84e0020308f0c3c37bed3621d2edc403d Mon Sep 17 00:00:00 2001 From: fhkhd Date: Wed, 13 Mar 2024 19:20:21 +0330 Subject: [PATCH] Improve navigation back --- lib/pages/CyclePages/cycle_result_screen.dart | 72 ++-- lib/pages/ItemPages/item_result_screen.dart | 39 ++- lib/pages/LabelPages/label_result_screen.dart | 2 +- .../Result/my_items_result_screen.dart | 3 +- .../Result/my_packages_result_screen.dart | 3 +- .../PackagePages/package_result_screen.dart | 14 +- lib/pages/TestPages/test_result_screen.dart | 2 +- lib/pages/TestPages/test_verify_screen.dart | 310 +++++++++--------- lib/pages/my_info_screen.dart | 9 +- .../Detail/my_packages_detail_box_widget.dart | 138 ++++---- 10 files changed, 308 insertions(+), 284 deletions(-) diff --git a/lib/pages/CyclePages/cycle_result_screen.dart b/lib/pages/CyclePages/cycle_result_screen.dart index d0558c3..8f6ce3a 100755 --- a/lib/pages/CyclePages/cycle_result_screen.dart +++ b/lib/pages/CyclePages/cycle_result_screen.dart @@ -77,7 +77,12 @@ class _CycleResultScreenState 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( @@ -85,7 +90,7 @@ class _CycleResultScreenState extends State { color: Colors.white, size: 35, ), - onPressed: () => Navigator.of(context).pop(), + onPressed: () => Navigator.of(context).pushNamed(Routes.homePage), ), ), body: Consumer( @@ -198,37 +203,40 @@ class _CycleResultScreenState extends State { color: Colors.black, ), ) - : - cycleResults.items?.length != 0 ? - ListView.builder( - controller: sc, - itemBuilder: (context, index) { - String labels = ''; - for (var label in cycleResults - .items![index].label) { - labels += label; - labels += ' , '; - } - if (labels.length >= 3) { - labels = labels.substring( - 0, - labels.length - - 3); // remove extra , - } - return CycleItemBox( - deviceBlockSize: _deviceBlockSize, - item: cycleResults.items?[index], - labels: labels, + : cycleResults.items?.length != 0 + ? ListView.builder( + controller: sc, + itemBuilder: (context, index) { + String labels = ''; + for (var label in cycleResults + .items![index].label) { + labels += label; + labels += ' , '; + } + if (labels.length >= 3) { + labels = labels.substring( + 0, + labels.length - + 3); // remove extra , + } + return CycleItemBox( + deviceBlockSize: + _deviceBlockSize, + item: + cycleResults.items?[index], + labels: labels, + ); + }, + itemCount: + cycleResults.items?.length, + shrinkWrap: true, + ) + : Container( + child: Center( + child: Text( + "There is no item to show."), + ), ); - }, - itemCount: cycleResults.items?.length, - shrinkWrap: true, - ) : - Container( - child: Center( - child: Text("There is no item to show."), - ), - ); }, ), ), diff --git a/lib/pages/ItemPages/item_result_screen.dart b/lib/pages/ItemPages/item_result_screen.dart index 5a3657a..bd85274 100755 --- a/lib/pages/ItemPages/item_result_screen.dart +++ b/lib/pages/ItemPages/item_result_screen.dart @@ -122,7 +122,7 @@ class _ItemResultScreenState extends State { color: Colors.white, size: 35, ), - onPressed: () => Navigator.of(context).pop(), + onPressed: () => Navigator.of(context).pushNamed(Routes.homePage), ), ), body: Consumer( @@ -251,24 +251,27 @@ class _ItemResultScreenState extends State { color: Colors.black, ), ) - : itemResults.items?.length != 0 ? - ListView.builder( - controller: sc, - itemBuilder: (context, index) { - // remove extra , - return ItemItemBox( - deviceBlockSize: _deviceBlockSize, - item: itemResults.items?[index], + : itemResults.items?.length != 0 + ? ListView.builder( + controller: sc, + itemBuilder: (context, index) { + // remove extra , + return ItemItemBox( + deviceBlockSize: + _deviceBlockSize, + item: itemResults.items?[index], + ); + }, + itemCount: + itemResults.items?.length, + shrinkWrap: true, + ) + : Container( + child: Center( + child: Text( + "There is no item to show."), + ), ); - }, - itemCount: itemResults.items?.length, - shrinkWrap: true, - ) : - Container( - child: Center( - child: Text("There is no item to show."), - ), - ); }, ), ), diff --git a/lib/pages/LabelPages/label_result_screen.dart b/lib/pages/LabelPages/label_result_screen.dart index ba7338e..86ff951 100755 --- a/lib/pages/LabelPages/label_result_screen.dart +++ b/lib/pages/LabelPages/label_result_screen.dart @@ -85,7 +85,7 @@ class _LabelResultScreenState extends State { color: Colors.white, size: 35, ), - onPressed: () => Navigator.of(context).pop(), + onPressed: () => Navigator.of(context).pushNamed(Routes.homePage), ), ), body: Consumer( diff --git a/lib/pages/MyItemsPages/Result/my_items_result_screen.dart b/lib/pages/MyItemsPages/Result/my_items_result_screen.dart index 5d81f93..839c0a5 100755 --- a/lib/pages/MyItemsPages/Result/my_items_result_screen.dart +++ b/lib/pages/MyItemsPages/Result/my_items_result_screen.dart @@ -55,7 +55,8 @@ class _MyItemsResultScreenState extends State color: Colors.white, size: 35, ), - onPressed: () => Navigator.of(context).pop(), + onPressed: () => + Navigator.of(context).pushNamed(Routes.homePage), ), // bottom: TabBar( // controller: _tabController, diff --git a/lib/pages/MyPackagesPages/Result/my_packages_result_screen.dart b/lib/pages/MyPackagesPages/Result/my_packages_result_screen.dart index d0ab2b7..dbbea22 100755 --- a/lib/pages/MyPackagesPages/Result/my_packages_result_screen.dart +++ b/lib/pages/MyPackagesPages/Result/my_packages_result_screen.dart @@ -55,7 +55,8 @@ class _MyPackagesResultScreenState extends State color: Colors.white, size: 35, ), - onPressed: () => Navigator.of(context).pop(), + onPressed: () => + Navigator.of(context).pushNamed(Routes.homePage), ), // bottom: TabBar( // controller: _tabController, diff --git a/lib/pages/PackagePages/package_result_screen.dart b/lib/pages/PackagePages/package_result_screen.dart index af1c1e9..05df667 100755 --- a/lib/pages/PackagePages/package_result_screen.dart +++ b/lib/pages/PackagePages/package_result_screen.dart @@ -117,13 +117,13 @@ class _PackageResultScreenState extends State { ), backgroundColor: Colors.black, leading: IconButton( - icon: Icon( - Icons.keyboard_arrow_left, - color: Colors.white, - size: 35, - ), - onPressed: () => Navigator.of(context).pop(), - ), + icon: Icon( + Icons.keyboard_arrow_left, + color: Colors.white, + size: 35, + ), + onPressed: () => + Navigator.of(context).pushNamed(Routes.homePage)), ), body: Consumer(builder: (ct, connection, _) { return connection.conStatus != 'offline' diff --git a/lib/pages/TestPages/test_result_screen.dart b/lib/pages/TestPages/test_result_screen.dart index f000a6a..2957ea3 100755 --- a/lib/pages/TestPages/test_result_screen.dart +++ b/lib/pages/TestPages/test_result_screen.dart @@ -96,7 +96,7 @@ class _TestResultScreenState extends State { color: Colors.white, size: 35, ), - onPressed: () => Navigator.of(context).pop(), + onPressed: () => Navigator.of(context).pushNamed(Routes.homePage), ), ), body: Consumer( diff --git a/lib/pages/TestPages/test_verify_screen.dart b/lib/pages/TestPages/test_verify_screen.dart index 5e3b5ab..a953f03 100755 --- a/lib/pages/TestPages/test_verify_screen.dart +++ b/lib/pages/TestPages/test_verify_screen.dart @@ -25,6 +25,7 @@ class _TestVerifyScreenState extends State { ScrollController? sc; bool _isInit = true; + // List _data = []; @override @@ -90,7 +91,7 @@ class _TestVerifyScreenState extends State { color: Colors.white, size: 35, ), - onPressed: () => Navigator.of(context).pop(), + onPressed: () => Navigator.of(context).pushNamed(Routes.homePage), ), ), body: Padding( @@ -285,6 +286,7 @@ class TestItemBox extends StatelessWidget { super(key: key); final Map userData; final double _deviceBlockSize; + // final String _id; @override @@ -355,161 +357,171 @@ class TestItemBox extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.end, children: [ - item.verified == 'None' ? - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - InkWell( - onTap: () { - showDialog( - context: context, - builder: (ctx) => AlertDialog( - title: Text('Verify'), - content: Text( - 'Are you sure for verify this test?'), - actions: [ - Consumer(builder: - (context, testResultsProvider, child) { - return testResultsProvider.isloadingButton - ? CircularProgressIndicator( - color: Colors.black, - ) - : TextButton( - onPressed: () async { - testResultsProvider - .setLoadingButton(); - await Provider.of< - TestResultsProvider>( - context, - listen: false) - .changeVerification( - item.id, 'Verified') - .then((result) { - if (result) { - print('true'); - } - Navigator.of(ctx).pop(); - Navigator.of(context) - .popAndPushNamed(Routes - .testVerifyScreen); - Fluttertoast.showToast( - msg: "Test is verified.", - toastLength: - Toast.LENGTH_SHORT, - gravity: - ToastGravity.BOTTOM, + item.verified == 'None' + ? Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + InkWell( + onTap: () { + showDialog( + context: context, + builder: (ctx) => AlertDialog( + title: Text('Verify'), + content: Text( + 'Are you sure for verify this test?'), + actions: [ + Consumer(builder: + (context, testResultsProvider, + child) { + return testResultsProvider + .isloadingButton + ? CircularProgressIndicator( + color: Colors.black, + ) + : TextButton( + onPressed: () async { + testResultsProvider + .setLoadingButton(); + await Provider.of< + TestResultsProvider>( + context, + listen: false) + .changeVerification( + item.id, + 'Verified') + .then((result) { + if (result) { + print('true'); + } + Navigator.of(ctx).pop(); + Navigator.of(context) + .popAndPushNamed(Routes + .testVerifyScreen); + Fluttertoast.showToast( + msg: + "Test is verified.", + toastLength: Toast + .LENGTH_SHORT, + gravity: ToastGravity + .BOTTOM, + ); + testResultsProvider + .resetLoadingButton(); + }); + }, + child: Text('Yes'), ); - testResultsProvider - .resetLoadingButton(); - }); - }, - child: Text('Yes'), - ); - }), - TextButton( - onPressed: () { - Navigator.of(ctx).pop(); - }, - child: Text('No'), + }), + TextButton( + onPressed: () { + Navigator.of(ctx).pop(); + }, + child: Text('No'), + ), + ], + ), + ); + }, + child: Container( + padding: EdgeInsets.all(7), + width: 10 * _deviceBlockSize, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: kBlue, ), - ], + child: Icon( + Icons.check, + size: 6 * _deviceBlockSize, + color: Colors.white, + ), + ), ), - ); - }, - child: Container( - padding: EdgeInsets.all(7), - width: 10 * _deviceBlockSize, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: kBlue, - ), - child: Icon( - Icons.check, - size: 6 * _deviceBlockSize, - color: Colors.white, - ), - ), - ), - SizedBox( - width: 3, - ), - InkWell( - onTap: () { - showDialog( - context: context, - builder: (ctx) => AlertDialog( - title: Text('Reject'), - content: Text( - 'Are you sure for reject this test?'), - actions: [ - Consumer( - builder: - (context, testResultsProvider, _) { - return testResultsProvider - .isloadingButton - ? CircularProgressIndicator( - color: Colors.black, - ) - : TextButton( - onPressed: () async { - testResultsProvider - .setLoadingButton(); - await Provider.of< - TestResultsProvider>( - context, - listen: false) - .changeVerification( - item.id, - 'NotVerified') - .then((result) { - if (result) { - print('true'); - } - Navigator.of(ctx).pop(); - Navigator.of(context) - .popAndPushNamed(Routes - .testVerifyScreen); - Fluttertoast.showToast( - msg: "Test is rejected.", - toastLength: - Toast.LENGTH_SHORT, - gravity: - ToastGravity.BOTTOM, + SizedBox( + width: 3, + ), + InkWell( + onTap: () { + showDialog( + context: context, + builder: (ctx) => AlertDialog( + title: Text('Reject'), + content: Text( + 'Are you sure for reject this test?'), + actions: [ + Consumer( + builder: (context, + testResultsProvider, _) { + return testResultsProvider + .isloadingButton + ? CircularProgressIndicator( + color: Colors.black, + ) + : TextButton( + onPressed: () async { + testResultsProvider + .setLoadingButton(); + await Provider.of< + TestResultsProvider>( + context, + listen: false) + .changeVerification( + item.id, + 'NotVerified') + .then((result) { + if (result) { + print('true'); + } + Navigator.of(ctx) + .pop(); + Navigator.of(context) + .popAndPushNamed( + Routes + .testVerifyScreen); + Fluttertoast + .showToast( + msg: + "Test is rejected.", + toastLength: Toast + .LENGTH_SHORT, + gravity: + ToastGravity + .BOTTOM, + ); + testResultsProvider + .resetLoadingButton(); + }); + }, + child: Text('Yes'), ); - testResultsProvider - .resetLoadingButton(); - }); - }, - child: Text('Yes'), - ); - }, + }, + ), + TextButton( + onPressed: () { + Navigator.of(ctx).pop(); + }, + child: Text('No'), + ), + ], + ), + ); + }, + child: Container( + padding: EdgeInsets.all(7), + width: 10 * _deviceBlockSize, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: kPink, ), - TextButton( - onPressed: () { - Navigator.of(ctx).pop(); - }, - child: Text('No'), + child: Icon( + Icons.close, + size: 6 * _deviceBlockSize, + color: Colors.white, ), - ], + ), ), - ); - }, - child: Container( - padding: EdgeInsets.all(7), - width: 10 * _deviceBlockSize, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: kPink, - ), - child: Icon( - Icons.close, - size: 6 * _deviceBlockSize, - color: Colors.white, - ), - ), - ), - ], - ) : Container(), + ], + ) + : Container(), SizedBox( width: _deviceBlockSize, ), diff --git a/lib/pages/my_info_screen.dart b/lib/pages/my_info_screen.dart index f7837e4..1cdef73 100755 --- a/lib/pages/my_info_screen.dart +++ b/lib/pages/my_info_screen.dart @@ -7,6 +7,7 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; +import '../config/routes.dart'; import '../providers/auth.dart'; class MyInfoScreen extends StatefulWidget { @@ -63,7 +64,7 @@ class _MyInfoScreenState extends State { color: Colors.white, size: 35, ), - onPressed: () => Navigator.of(context).pop(), + onPressed: () => Navigator.of(context).pushNamed(Routes.homePage), ), ), body: Consumer( @@ -174,9 +175,9 @@ class _MyInfoScreenState extends State { Navigator.of(context).pop(); auth.resetLoading(); Fluttertoast.showToast( - msg: "Info changed successfully.", - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM, + msg: "Info changed successfully.", + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM, ); }, ); diff --git a/lib/widgets/MyPackagesScreens/Detail/my_packages_detail_box_widget.dart b/lib/widgets/MyPackagesScreens/Detail/my_packages_detail_box_widget.dart index d85d9f7..fdcf10c 100755 --- a/lib/widgets/MyPackagesScreens/Detail/my_packages_detail_box_widget.dart +++ b/lib/widgets/MyPackagesScreens/Detail/my_packages_detail_box_widget.dart @@ -337,80 +337,78 @@ class MyPackageDetailsDataBox extends StatelessWidget { SizedBox( height: 10.0, ), - userData['roles']?.contains('User') ?? false - ? Container() - : TransferDestroyButton( - deviceBlockSize: _deviceBlockSize, - firstColor: kPink, - secondColor: kPinkSub, - text: 'Back Items to Item List', - onTap: () { - showDialog( - context: context, - builder: (context) { - return AlertDialog( - title: Text( - 'Are you sure to destroy this Package?', + TransferDestroyButton( + deviceBlockSize: _deviceBlockSize, + firstColor: kPink, + secondColor: kPinkSub, + text: 'Back Items to Item List', + onTap: () { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text( + 'Are you sure to destroy this Package?', + style: TextStyle( + fontSize: 4 * _deviceBlockSize, + ), + ), + content: SizedBox( + width: _deviceBlockSize, + height: 220, + child: Column( + children: [ + Text( + 'By approving, your package will be removed and it can not be used any more.', style: TextStyle( - fontSize: 4 * _deviceBlockSize, + fontSize: 3 * _deviceBlockSize, ), ), - content: SizedBox( - width: _deviceBlockSize, - height: 220, - child: Column( - children: [ - Text( - 'By approving, your package will be removed and it can not be used any more.', - style: TextStyle( - fontSize: 3 * _deviceBlockSize, - ), - ), - SizedBox( - height: 10.0, - ), - PackageCard(_deviceBlockSize), - SizedBox( - height: 20.0, - ), - TransferDestroyButton( - deviceBlockSize: _deviceBlockSize, - firstColor: kPink, - secondColor: kPinkSub, - onTap: () { - Provider.of(context, - listen: false) - .removePackages(datas.id) - .then( - (value) { - Navigator.of(context).pop(); - Navigator.pushReplacementNamed( - context, - Routes.myPackagesResultScreen, - ); - }, - ); - }, - text: 'Destroy', - ), - SizedBox( - height: 5.0, - ), - CancelTransferButton( - deviceBlockSize: _deviceBlockSize, - color: kDarkPurple, - onTap: () { - Navigator.pop(context); - }, - ), - ], - ), + SizedBox( + height: 10.0, ), - ); - }, - ); - }, - ), + PackageCard(_deviceBlockSize), + SizedBox( + height: 20.0, + ), + TransferDestroyButton( + deviceBlockSize: _deviceBlockSize, + firstColor: kPink, + secondColor: kPinkSub, + onTap: () { + Provider.of(context, + listen: false) + .removePackages(datas.id) + .then( + (value) { + Navigator.of(context).pop(); + Navigator.pushReplacementNamed( + context, + Routes.myPackagesResultScreen, + ); + }, + ); + }, + text: 'Destroy', + ), + SizedBox( + height: 5.0, + ), + CancelTransferButton( + deviceBlockSize: _deviceBlockSize, + color: kDarkPurple, + onTap: () { + Navigator.pop(context); + }, + ), + ], + ), + ), + ); + }, + ); + }, + ), SizedBox( height: 20, ),