code improvements

design_3.0_asset_inventory_module
Sikander Saleem 3 weeks ago
parent 8578319cc3
commit d3c000004e

@ -4,6 +4,7 @@ import 'package:flutter/widgets.dart';
import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/ppm/recurrent_wo.dart';
@ -130,6 +131,24 @@ class AllRequestsProvider extends ChangeNotifier {
SearchAllRequestsModel? searchedModel;
List<int> getStatues(BuildContext context) {
List<int> list = [1, 2, 3, 4];
if (context.userProvider.user!.type != UsersTypes.normal_user) {
list.add(5);
}
list.add(6); // task module
if (context.settingProvider.isUserFlowMedical && context.userProvider.user!.type != UsersTypes.normal_user) {
list.add(7); // task mod
}
if (context.userProvider.user!.type != UsersTypes.normal_user) {
list.add(8); //
}
return list;
}
Future<int> getAllRequests(BuildContext context, {int? typeTransaction, SearchAllRequestsModel? search}) async {
if (isAllLoading == true) return -2;
isAllLoading = true;
@ -143,7 +162,7 @@ class AllRequestsProvider extends ChangeNotifier {
}
final type = typeTransaction == null
? search?.typeTransaction == null || (search?.typeTransaction?.isEmpty ?? false)
? [1, 2, 3, 4, 5, 6,7,8]
? getStatues(context)
: search!.typeTransaction
: [typeTransaction];
List<int> status = (search?.statuses == null || (search?.statuses?.isEmpty ?? false)) ? (((search?.isArchived ?? false) ? [3] : [1, 2, 4])) : search!.statuses!;

@ -23,17 +23,26 @@ class AssetDetailCardView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
crossAxisAlignment: CrossAxisAlignment.start,
return Column(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
Row(
children: [
Text(
context.translation.assetInformation,
style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
).expanded,
'delete_icon'.toSvgAsset().onPress(() {
onDeletePress();
}),
],
),
// 8.height,
8.height,
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${context.translation.assetNumber}: ${assetInventoryModel.assetNumber ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
@ -76,18 +85,11 @@ class AssetDetailCardView extends StatelessWidget {
),
],
).expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.start,
children: [
'delete_icon'.toSvgAsset().onPress(() {
onDeletePress();
}),
20.height,
Container(
decoration: BoxDecoration(color: AppColor.neutral100, borderRadius: BorderRadius.circular(15)),
height: 115.toScreenHeight,
width: 115.toScreenWidth,
margin: const EdgeInsets.only(top: 8),
child: assetInventoryModel.photo != null && assetInventoryModel.photo!.isNotEmpty
? ClipRRect(
borderRadius: BorderRadius.circular(8),
@ -100,8 +102,8 @@ class AssetDetailCardView extends StatelessWidget {
: 'image_placeholder'.toSvgAsset().center,
)
],
)
),
],
).toShadowContainer(context);
).toShadowContainer(context, borderRadius: 20, padding: 12);
}
}

@ -87,7 +87,7 @@ class _AssetInventoryDetailViewState extends State<AssetInventoryDetailView> {
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
],
).paddingOnly(start: 16, end: 16, top: 16, bottom: 8).toShadowContainer(context, padding: 0);
).toShadowContainer(context, padding: 12, borderRadius: 20);
}
Widget siteListCard(BuildContext context, SessionModel sessionModel) {
@ -155,6 +155,6 @@ class _AssetInventoryDetailViewState extends State<AssetInventoryDetailView> {
separatorBuilder: (cxt, index) => const Divider().defaultStyle(context),
),
],
).toShadowContainer(context, padding: 12);
).toShadowContainer(context, padding: 12, borderRadius: 20);
}
}

@ -29,7 +29,7 @@ import 'package:test_sa/views/widgets/images/multi_image_picker_item.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import '../../../new_views/common_widgets/app_filled_button.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
import 'asset_inventory_site_information_view.dart';
import 'asset_inventory_site_information_page.dart';
class AssetInventoryFormView extends StatefulWidget {
static const String id = "/asset-inventory-form";
@ -92,6 +92,7 @@ class _AssetInventoryFormViewState extends State<AssetInventoryFormView> {
child: Column(
children: [
SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -117,7 +118,7 @@ class _AssetInventoryFormViewState extends State<AssetInventoryFormView> {
),
],
),
16.height,
12.height,
],
if ((!isRegistered && widget.sessionTypeValue == 1) || (widget.sessionTypeValue == 3) || (!isRegistered && widget.sessionTypeValue == 2)) ...[
@ -152,7 +153,7 @@ class _AssetInventoryFormViewState extends State<AssetInventoryFormView> {
12.height,
],
if (((!isRegistered && widget.sessionTypeValue == 2)))
if (((!isRegistered && widget.sessionTypeValue == 2))) ...[
AppFilledButton(
label: 'Search Asset'.addTranslation,
onPressed: () async {
@ -179,8 +180,9 @@ class _AssetInventoryFormViewState extends State<AssetInventoryFormView> {
///Need to assign the values
});
},
).paddingOnly(bottom: 12),
),
12.height,
],
AppTextFormField(
labelText: context.translation.serialNo,
backgroundColor: AppColor.fieldBgColor(context),
@ -337,9 +339,8 @@ class _AssetInventoryFormViewState extends State<AssetInventoryFormView> {
),
// 100.height,
],
).toShadowContainer(context).paddingOnly(top: 20, start: 16, end: 16),
).expanded,
10.height,
).toShadowContainer(context, borderRadius: 20, padding: 12))
.expanded,
FooterActionButton.footerContainer(
context: context,
child: AppFilledButton(buttonColor: AppColor.primary10, label: context.translation.submitRequest, maxWidth: true, onPressed: _onSubmit),
@ -438,7 +439,7 @@ class _AssetInventoryFormViewState extends State<AssetInventoryFormView> {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (contxt) => SiteInformationView(
builder: (contxt) => SiteInformationPage(
sessionModel: SessionModel(id: int.tryParse(widget.assetInventoryModel?.sessionId?.toString() ?? '') ?? 0),
)));
} else {

@ -10,7 +10,7 @@ import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/modules/asset_inventory_module/models/session_model.dart';
import 'package:test_sa/modules/asset_inventory_module/pages/asset_inventory_detail_view.dart';
import 'package:test_sa/modules/asset_inventory_module/pages/asset_inventory_scan_assets_view.dart';
import 'package:test_sa/modules/asset_inventory_module/pages/asset_inventory_site_information_view.dart';
import 'package:test_sa/modules/asset_inventory_module/pages/asset_inventory_site_information_page.dart';
import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
@ -66,7 +66,9 @@ class _AssetInventoryPageState extends State<AssetInventoryPage> {
body: Consumer<AssetInventoryProvider>(builder: (context, provider, child) {
return DefaultTabController(
length: 2,
child: Column(
child: provider.isLoading
? const CircularProgressIndicator(color: AppColor.primary10).center
: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Container(
@ -92,17 +94,10 @@ class _AssetInventoryPageState extends State<AssetInventoryPage> {
],
),
),
12.height,
TabBarView(
children: [
provider.isLoading
? const CircularProgressIndicator(color: AppColor.primary10).center
: AssetInventoryDetailView(
sessionModel: provider.sessionModel ?? SessionModel(),
),
AssetInventoryScanAssetView(
sessionId: provider.sessionModel?.id ?? 0,
),
AssetInventoryDetailView(sessionModel: provider.sessionModel ?? SessionModel()),
AssetInventoryScanAssetView(sessionId: provider.sessionModel?.id ?? 0),
],
).expanded,
FooterActionButton.footerContainer(
@ -113,7 +108,7 @@ class _AssetInventoryPageState extends State<AssetInventoryPage> {
onPressed: () => _scanAsset(provider: provider),
// buttonColor: AppColor.primary10,
),
).toShadowContainer(context, padding: 0, showShadow: false, borderRadius: 0),
)
],
),
);
@ -122,6 +117,6 @@ class _AssetInventoryPageState extends State<AssetInventoryPage> {
Future<void> _scanAsset({required AssetInventoryProvider provider}) async {
provider.siteFilterAssetList.clear();
Navigator.push(context, MaterialPageRoute(builder: (contxt) => SiteInformationView(sessionModel: provider.sessionModel ?? SessionModel())));
Navigator.push(context, MaterialPageRoute(builder: (contxt) => SiteInformationPage(sessionModel: provider.sessionModel ?? SessionModel())));
}
}

@ -48,9 +48,7 @@ class _AssetInventoryScanAssetViewState extends State<AssetInventoryScanAssetVie
}
return NotificationListener<ScrollNotification>(
onNotification: (scrollInfo) {
if (!provider.isNextPageLoading &&
provider.nextPage &&
scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent) {
if (!provider.isNextPageLoading && provider.nextPage && scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent) {
getAssetList(loadMore: true);
}
return false;
@ -84,48 +82,48 @@ class _AssetInventoryScanAssetViewState extends State<AssetInventoryScanAssetVie
}
// Widget build(BuildContext context) {
// return Consumer<AssetInventoryProvider>(
// builder: (context, provider, _) {
// if (provider.isLoading && provider.assetInventoryResponse == null) {
// //TODO need use existing loader if found..
// return const Center(child: CircularProgressIndicator());
// }
// final assets = provider.assetInventoryResponse?.assetList ?? [];
// if (assets.isEmpty) {
// return const Center(child: NoDataFound());
// }
// return LazyLoading(
// nextPage: provider.nextPage,
// onLazyLoad: () async {
// log('Loading next page...');
// await getAssetList(loadMore: true);
// },
// child: ListView.separated(
// padding: const EdgeInsets.all(16),
// itemBuilder: (context, index) {
// if (index == assets.length) {
// // bottom loader
// return const Padding(
// padding: EdgeInsets.symmetric(vertical: 16),
// child: Center(child: CircularProgressIndicator()),
// );
// }
// return AssetDetailCardView(
// assetInventoryModel: assets[index],
// onDeletePress: () async {
// await provider.deleteAssetISession(id: assets[index].id ?? 0).then((success) async {
// if (success) {
// await provider.getAssetsInSession(sessionId: widget.sessionId);
// }
// });
// },
// );
// },
// separatorBuilder: (context, index) => 12.height,
// itemCount: assets.length + (provider.nextPage ? 1 : 0),
// ),
// );
// },
// );
// }
// return Consumer<AssetInventoryProvider>(
// builder: (context, provider, _) {
// if (provider.isLoading && provider.assetInventoryResponse == null) {
// //TODO need use existing loader if found..
// return const Center(child: CircularProgressIndicator());
// }
// final assets = provider.assetInventoryResponse?.assetList ?? [];
// if (assets.isEmpty) {
// return const Center(child: NoDataFound());
// }
// return LazyLoading(
// nextPage: provider.nextPage,
// onLazyLoad: () async {
// log('Loading next page...');
// await getAssetList(loadMore: true);
// },
// child: ListView.separated(
// padding: const EdgeInsets.all(16),
// itemBuilder: (context, index) {
// if (index == assets.length) {
// // bottom loader
// return const Padding(
// padding: EdgeInsets.symmetric(vertical: 16),
// child: Center(child: CircularProgressIndicator()),
// );
// }
// return AssetDetailCardView(
// assetInventoryModel: assets[index],
// onDeletePress: () async {
// await provider.deleteAssetISession(id: assets[index].id ?? 0).then((success) async {
// if (success) {
// await provider.getAssetsInSession(sessionId: widget.sessionId);
// }
// });
// },
// );
// },
// separatorBuilder: (context, index) => 12.height,
// itemCount: assets.length + (provider.nextPage ? 1 : 0),
// ),
// );
// },
// );
// }
}

@ -28,16 +28,16 @@ import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart
import 'package:test_sa/providers/loading_list_notifier.dart';
import 'package:test_sa/views/widgets/loaders/lazy_loading.dart';
class SiteInformationView extends StatefulWidget {
class SiteInformationPage extends StatefulWidget {
SessionModel sessionModel;
SiteInformationView({Key? key, required this.sessionModel}) : super(key: key);
SiteInformationPage({Key? key, required this.sessionModel}) : super(key: key);
@override
State<SiteInformationView> createState() => _SiteInformationViewState();
State<SiteInformationPage> createState() => _SiteInformationPageState();
}
class _SiteInformationViewState extends State<SiteInformationView> {
class _SiteInformationPageState extends State<SiteInformationPage> {
AssetInventoryModel assetInventoryModel = AssetInventoryModel();
bool showMarkAsComplete = false;
@ -56,8 +56,7 @@ class _SiteInformationViewState extends State<SiteInformationView> {
title: 'Inventory Session Request'.addTranslation,
titleStyle: AppTextStyles.heading3.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
body: SafeArea(
child: Column(
body: Column(
children: [
ListView(
padding: const EdgeInsets.only(left: 16, right: 16, top: 16),
@ -70,20 +69,26 @@ class _SiteInformationViewState extends State<SiteInformationView> {
).expanded,
FooterActionButton.footerContainer(
context: context,
child: AppFilledButton(
child: Column(
children: [
AppFilledButton(
buttonColor: AppColor.primary10,
label: 'Add Asset'.addTranslation,
onPressed: () => _addAsset(),
// buttonColor: AppColor.primary10,
),
),
if (showMarkAsComplete)
if (showMarkAsComplete) ...[
12.height,
AppFilledButton(
buttonColor: AppColor.green70,
label: 'Mark as completed'.addTranslation,
onPressed: () => _markAsCompleted(),
// buttonColor: AppColor.primary10,
).paddingOnly(start: 16, end: 16),
)
]
],
),
),
// FooterActionButton.footerContainer(
// context: context,
// child: AppFilledButton(
@ -94,7 +99,6 @@ class _SiteInformationViewState extends State<SiteInformationView> {
// ),
// ),
],
),
));
}
@ -185,7 +189,6 @@ class _SiteInformationViewState extends State<SiteInformationView> {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
12.height,
SingleItemDropDownMenu<Site, NullableLoadingProvider>(
context: context,
title: context.translation.site,
@ -202,7 +205,7 @@ class _SiteInformationViewState extends State<SiteInformationView> {
setState(() {});
},
),
8.height,
12.height,
SingleItemDropDownMenu<Building, NullableLoadingProvider>(
context: context,
title: context.translation.building,
@ -219,7 +222,7 @@ class _SiteInformationViewState extends State<SiteInformationView> {
setState(() {});
},
),
8.height,
12.height,
SingleItemDropDownMenu<Floor, NullableLoadingProvider>(
context: context,
title: context.translation.floor,
@ -235,7 +238,7 @@ class _SiteInformationViewState extends State<SiteInformationView> {
setState(() {});
},
),
8.height,
12.height,
SingleItemDropDownMenu<Department, NullableLoadingProvider>(
context: context,
title: context.translation.department,
@ -253,7 +256,7 @@ class _SiteInformationViewState extends State<SiteInformationView> {
getAssetFilteredList();
},
),
8.height,
12.height,
SingleItemDropDownMenu<Rooms, NullableLoadingProvider>(
context: context,
title: context.translation.room,
@ -271,9 +274,8 @@ class _SiteInformationViewState extends State<SiteInformationView> {
}
},
),
8.height,
],
).toShadowContainer(context);
).toShadowContainer(context, borderRadius: 20, padding: 12);
}
Future<bool> validateRequest() async {

@ -52,7 +52,9 @@ class _MyRequestsPageState extends State<MyRequestsPage> {
if (context.settingProvider.isUserFlowMedical) {
requestsList.add(Request(7, 'Recall and Alert'));
}
if (Provider.of<UserProvider>(context, listen: false).user!.type != UsersTypes.normal_user) {
requestsList.add(Request(8, 'Inventory Session'.addTranslation));
}
_provider = Provider.of<AllRequestsProvider>(context, listen: false);
_provider!.reset();
WidgetsBinding.instance.addPostFrameCallback((_) {

@ -87,9 +87,7 @@ class _SelectionBottomSheetState<T extends Base> extends State<SelectionFullScre
SearchBar(
focusNode: searchFocusNode,
elevation: WidgetStateProperty.all<double>(0),
backgroundColor: WidgetStateProperty.all<Color>(
AppColor.fieldBgColor(context), // Your custom background color
),
backgroundColor: WidgetStateProperty.all<Color?>(context.isDark ? AppColor.neutral120 : null),
leading: Icon(Icons.search, color: AppColor.iconColor(context)),
textStyle: WidgetStateProperty.all<TextStyle>(
TextStyle(color: AppColor.textColor(context), fontSize: 16.0),

Loading…
Cancel
Save