From 29c5f0e5cfae94cf660c865ef2f286187ce9bcf0 Mon Sep 17 00:00:00 2001 From: zaid_daoud Date: Sun, 20 Aug 2023 12:00:29 +0300 Subject: [PATCH] in ppm summery if no employee found it will be empty --- .../pages/user/visits/visit_details.dart | 46 ++++---- lib/views/widgets/visits/visit_item.dart | 100 +++++++----------- lib/views/widgets/visits/visits_list.dart | 28 ++--- 3 files changed, 76 insertions(+), 98 deletions(-) diff --git a/lib/views/pages/user/visits/visit_details.dart b/lib/views/pages/user/visits/visit_details.dart index 72143a2d..7fb05200 100644 --- a/lib/views/pages/user/visits/visit_details.dart +++ b/lib/views/pages/user/visits/visit_details.dart @@ -13,20 +13,18 @@ import 'package:test_sa/views/widgets/loaders/image_loader.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/visits/visit_status.dart'; -import '../../../../controllers/providers/api/regular_visits_provider.dart'; import '../../../../controllers/providers/api/user_provider.dart'; import '../../../../models/enums/user_types.dart'; class VisitDetailsPage extends StatelessWidget { - static final String id = "/visit-details"; + static const String id = "/visit-details"; final Visit visit; const VisitDetailsPage({Key key, this.visit}) : super(key: key); @override Widget build(BuildContext context) { - Subtitle _subtitle = AppLocalization.of(context).subtitle; - final regularVisitsProvider = Provider.of(context); - UserProvider _userProvider = Provider.of(context); + Subtitle subtitle = AppLocalization.of(context).subtitle; + UserProvider userProvider = Provider.of(context); return Scaffold( body: SafeArea( @@ -37,16 +35,16 @@ class VisitDetailsPage extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4), child: Row( children: [ - ABackButton(), + const ABackButton(), Expanded( child: Center( child: Text( - _subtitle.visitInformation, - style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic), + subtitle.visitInformation, + style: Theme.of(context).textTheme.titleLarge.copyWith(color: AColors.white, fontStyle: FontStyle.italic), ), ), ), - if (_userProvider?.user?.type == UsersTypes.engineer) + if (userProvider?.user?.type == UsersTypes.engineer) AIconButton( iconData: Icons.edit, color: AColors.white, @@ -60,15 +58,15 @@ class VisitDetailsPage extends StatelessWidget { ))); }, ), - SizedBox(width: 42) + const SizedBox(width: 42) ], ), ), Expanded( child: ListView( - padding: EdgeInsets.symmetric(horizontal: 16), + padding: const EdgeInsets.symmetric(horizontal: 16), children: [ - SizedBox( + const SizedBox( height: 8, ), MaterialButton( @@ -97,7 +95,7 @@ class VisitDetailsPage extends StatelessWidget { ), ), ), - SizedBox( + const SizedBox( height: 8, ), SizedBox( @@ -106,11 +104,11 @@ class VisitDetailsPage extends StatelessWidget { images: visit.images, ), ), - SizedBox( + const SizedBox( height: 8, ), RequestInfoRow( - title: _subtitle.code, + title: subtitle.code, info: visit.serialNumber, ), RequestInfoRow( @@ -118,27 +116,27 @@ class VisitDetailsPage extends StatelessWidget { info: visit.deviceNumber, ), RequestInfoRow( - title: _subtitle.deviceName, + title: subtitle.deviceName, content: visit.deviceEnglishName, ), RequestInfoRow( - title: _subtitle.deviceSN, + title: subtitle.deviceSN, info: visit.deviceSerialNumber, ), RequestInfoRow( - title: _subtitle.expectDate, + title: subtitle.expectDate, info: visit.expectDate, ), RequestInfoRow( - title: _subtitle.actualDate, + title: subtitle.actualDate, info: visit.actualDate, ), Row( children: [ Expanded( child: Text( - "${_subtitle.status} : ", - style: Theme.of(context).textTheme.subtitle1.copyWith(fontWeight: FontWeight.bold), + "${subtitle.status} : ", + style: Theme.of(context).textTheme.titleMedium.copyWith(fontWeight: FontWeight.bold), textScaleFactor: AppStyle.getScaleFactor(context), ), ), @@ -151,15 +149,15 @@ class VisitDetailsPage extends StatelessWidget { color: Theme.of(context).primaryColor, ), RequestInfoRow( - title: _subtitle.contactStatus, + title: subtitle.contactStatus, info: visit.assignTo, ), RequestInfoRow( - title: _subtitle.engineerName, + title: subtitle.engineerName, info: visit.employName, ), RequestInfoRow( - title: _subtitle.hospital, + title: subtitle.hospital, content: visit.hospitalName, ), ], diff --git a/lib/views/widgets/visits/visit_item.dart b/lib/views/widgets/visits/visit_item.dart index 995a0498..fc8e2052 100644 --- a/lib/views/widgets/visits/visit_item.dart +++ b/lib/views/widgets/visits/visit_item.dart @@ -21,27 +21,28 @@ class VisitItem extends StatelessWidget { @override Widget build(BuildContext context) { - UserProvider _userProvider = Provider.of(context); + UserProvider userProvider = Provider.of(context); Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary; - Subtitle _subtitle = AppLocalization.of(context).subtitle; + Subtitle subtitle = AppLocalization.of(context).subtitle; return Padding( padding: const EdgeInsets.symmetric(vertical: 4), child: ElevatedButton( style: ElevatedButton.styleFrom( - padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8), - primary: itemColor, + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 8), + backgroundColor: itemColor, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), ), ), onPressed: () { - if (activeSelectMod && _userProvider.user.type == UsersTypes.engineer) + if (activeSelectMod && userProvider.user.type == UsersTypes.engineer) { onSelect(visit); - else + } else { onPressed(visit); + } }, - onLongPress: _userProvider.user.type == UsersTypes.engineer + onLongPress: userProvider.user.type == UsersTypes.engineer ? () { onLongPress(visit); } @@ -53,12 +54,12 @@ class VisitItem extends StatelessWidget { children: [ Expanded( child: Text( - "S.N: " + visit.deviceSerialNumber ?? "No serial number", - style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold), + "S.N: ${visit.deviceSerialNumber}" ?? "No serial number", + style: Theme.of(context).textTheme.titleLarge.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold), ), ), AnimatedSwitcher( - duration: Duration(milliseconds: 400), + duration: const Duration(milliseconds: 400), child: Visibility( key: ValueKey(activeSelectMod), visible: activeSelectMod, @@ -83,10 +84,7 @@ class VisitItem extends StatelessWidget { ), Text( visit.deviceNumber ?? "", - style: Theme.of(context).textTheme.subtitle1.copyWith( - color: onItemColor, - fontSize: 14, - ), + style: Theme.of(context).textTheme.titleMedium.copyWith(color: onItemColor, fontSize: 14), ), Divider( color: onItemColor, @@ -96,7 +94,7 @@ class VisitItem extends StatelessWidget { Expanded( child: Text( visit.hospitalName ?? "No client found", - style: Theme.of(context).textTheme.subtitle1.copyWith( + style: Theme.of(context).textTheme.titleMedium.copyWith( color: onItemColor, fontSize: 14, ), @@ -106,29 +104,30 @@ class VisitItem extends StatelessWidget { ), Text( visit.modelAndBrand ?? "", - style: Theme.of(context).textTheme.subtitle1.copyWith( + style: Theme.of(context).textTheme.titleMedium.copyWith( color: onItemColor, fontSize: 14, ), ), - Divider(color: onItemColor), - Row( - children: [ - Expanded( - child: Text( - visit.employName ?? "No employ found", - style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 14, fontWeight: FontWeight.bold), + if (visit.employName != null && visit.employName.isNotEmpty) Divider(color: onItemColor), + if (visit.employName != null && visit.employName.isNotEmpty) + Row( + children: [ + Expanded( + child: Text( + visit.employName ?? "No employ found", + style: Theme.of(context).textTheme.titleLarge.copyWith(color: onItemColor, fontSize: 14, fontWeight: FontWeight.bold), + ), ), - ), - // Text( - // visit.contactStatus ?? "", - // style: Theme.of(context).textTheme.subtitle1.copyWith( - // color: onItemColor, - // fontSize: 14, - // ), - // ), - ], - ), + // Text( + // visit.contactStatus ?? "", + // style: Theme.of(context).textTheme.subtitle1.copyWith( + // color: onItemColor, + // fontSize: 14, + // ), + // ), + ], + ), Divider( color: onItemColor, ), @@ -139,18 +138,12 @@ class VisitItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - _subtitle.expectDate, - style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 14, - ), + subtitle.expectDate, + style: Theme.of(context).textTheme.titleLarge.copyWith(color: onItemColor, fontSize: 14), ), Text( - visit.expectDate ?? _subtitle.noDateFound, - style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 14, - ), + visit.expectDate ?? subtitle.noDateFound, + style: Theme.of(context).textTheme.titleLarge.copyWith(color: onItemColor, fontSize: 14), ), ], ), @@ -159,25 +152,12 @@ class VisitItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - _subtitle.actualDate, - style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 14, - ), + subtitle.actualDate, + style: Theme.of(context).textTheme.titleLarge.copyWith(color: onItemColor, fontSize: 14), ), Text( - visit.actualDate ?? _subtitle.noDateFound, - style: Theme.of(context).textTheme.headline6.copyWith( - color: onItemColor, - fontSize: 14, - ), - // Text( - // visit.contactStatus ?? "", - // style: Theme.of(context).textTheme.subtitle1.copyWith( - // color: onItemColor, - // fontSize: 14, - // ), - // ), + visit.actualDate ?? subtitle.noDateFound, + style: Theme.of(context).textTheme.titleLarge.copyWith(color: onItemColor, fontSize: 14), ), ], ), diff --git a/lib/views/widgets/visits/visits_list.dart b/lib/views/widgets/visits/visits_list.dart index d4a867c8..bb327679 100644 --- a/lib/views/widgets/visits/visits_list.dart +++ b/lib/views/widgets/visits/visits_list.dart @@ -21,7 +21,7 @@ class VisitsList extends StatefulWidget { } class _VisitsListState extends State { - List _selectedVisits = []; + final List _selectedVisits = []; @override void initState() { @@ -31,10 +31,10 @@ class _VisitsListState extends State { @override Widget build(BuildContext context) { - Subtitle _subtitle = AppLocalization.of(context).subtitle; - if (widget.visits.length == 0) { + Subtitle subtitle = AppLocalization.of(context).subtitle; + if (widget.visits.isEmpty) { return NoItemFound( - message: _subtitle.noVisitsFound, + message: subtitle.noVisitsFound, ); } return Stack( @@ -45,13 +45,13 @@ class _VisitsListState extends State { child: ListView.builder( //physics: BouncingScrollPhysics(), itemCount: widget.visits.length, - padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), itemBuilder: (context, itemIndex) { - Visit _visit = widget.visits[itemIndex]; - bool _isSelected = _selectedVisits.contains(_visit); + Visit visit = widget.visits[itemIndex]; + bool isSelected = _selectedVisits.contains(visit); return VisitItem( - visit: _visit, - isSelected: _isSelected, + visit: visit, + isSelected: isSelected, index: itemIndex, activeSelectMod: _selectedVisits.isNotEmpty, onPressed: (visit) { @@ -61,7 +61,7 @@ class _VisitsListState extends State { ))); }, onSelect: (visit) { - if (_isSelected) { + if (isSelected) { _selectedVisits.remove(visit); } else { _selectedVisits.add(visit); @@ -69,7 +69,7 @@ class _VisitsListState extends State { setState(() {}); }, onLongPress: (visit) { - if (_isSelected) { + if (isSelected) { _selectedVisits.remove(visit); } else { _selectedVisits.add(visit); @@ -84,7 +84,7 @@ class _VisitsListState extends State { child: Padding( padding: EdgeInsets.all(8.0 * AppStyle.getScaleFactor(context)), child: AnimatedSwitcher( - duration: Duration(milliseconds: 400), + duration: const Duration(milliseconds: 400), child: Visibility( key: ValueKey(_selectedVisits.isNotEmpty), visible: _selectedVisits.isNotEmpty, @@ -93,7 +93,7 @@ class _VisitsListState extends State { children: [ FloatingActionButton( heroTag: "cancel", - child: Icon(Icons.cancel), + child: const Icon(Icons.cancel), onPressed: () { _selectedVisits.clear(); setState(() {}); @@ -101,7 +101,7 @@ class _VisitsListState extends State { ), FloatingActionButton( heroTag: "edit", - child: Icon(Icons.edit), + child: const Icon(Icons.edit), onPressed: () { if (!widget.visits.contains(_selectedVisits.first)) { _selectedVisits.clear();