diff --git a/cspell.json b/cspell.json index d97703a..789d249 100644 --- a/cspell.json +++ b/cspell.json @@ -11,6 +11,7 @@ "dili", "fluttericon", "fontello", + "Getx", "harakteristiki", "LTRB", "roundcheckbox", diff --git a/lib/app/core/utils/circle_number_widget.dart b/lib/app/core/utils/circle_number_widget.dart new file mode 100644 index 0000000..de5a594 --- /dev/null +++ b/lib/app/core/utils/circle_number_widget.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +import '../../app.dart'; + +class CircleNumberWidget extends StatelessWidget { + final int number; + const CircleNumberWidget({ + Key? key, + required this.number, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + padding: EdgeInsets.all(8.w), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: HexColor('#EFF0F4'), + ), + child: Text( + number.toString(), + style: new TextStyle( + color: ThemeColor.black, + fontSize: 14.sp, + fontWeight: FontWeight.w500, + ), + ), + ); + } +} diff --git a/lib/app/core/utils/utils.dart b/lib/app/core/utils/utils.dart index db59378..9ec0d69 100644 --- a/lib/app/core/utils/utils.dart +++ b/lib/app/core/utils/utils.dart @@ -1,6 +1,7 @@ library utils; export 'calculate_aspect_ratio.dart'; +export 'circle_number_widget.dart'; export 'constants.dart'; export 'device_info.dart'; export 'grid_view_load_more.dart'; diff --git a/lib/app/data/apis/filter.dart b/lib/app/data/apis/filter.dart index 49b9802..db7c4ed 100644 --- a/lib/app/data/apis/filter.dart +++ b/lib/app/data/apis/filter.dart @@ -1,7 +1,6 @@ -import 'package:elektronika/app/core/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import '../data.dart'; +import '../../app.dart'; class FilterApi { static String className = 'FilterApi'; @@ -132,11 +131,7 @@ class FilterApi { end: 40000.0, queryValue: '900,3000', )); - // String path = Constants.BASE_URL + 'categories/$categoryId/filters'; - // final response = await HttpUtil().get(path: path); - - // debugPrint('getFilters response $response'); return list; } catch (e) { debugPrint('ERROR: class: $className, method: $fnName'); @@ -146,9 +141,43 @@ class FilterApi { static Future> getOptions(int page, int itemsPerPage, FilterModel model, String searchKey) async { debugPrint('page:$page, model:${model.code}' ', id:${model.id}'); + // Attribute (Brand, Size, Style, Material ...) - List options = []; + try { + List options = []; + final String categoryId = getCategoryIdFromFilterableQueryParams(); - return options; + String path = Constants.BASE_URL + 'attribute-options'; + final Map params = { + 'locale': await getLocale(), + 'attribute_id': model.id, + 'category': categoryId, + 'limit': itemsPerPage, + 'page': page, + 'search': searchKey, + }; + + final response = await HttpUtil().get(path: path, queryParameters: params); + for (final option in response['data']) { + options.add(FilterOption.fromJson(option)); + } + return options; + } catch (e) { + debugPrint('error : $e'); + throw e; + } + } + + static String getCategoryIdFromFilterableQueryParams() { + FilterController fc = Get.find(); + final queryParams = fc.state.filterableQueryParams; + + String categoryId = '1'; + + if (queryParams['category_id'] != null) { + categoryId = queryParams['category_id'].toString(); + } + + return categoryId; } } diff --git a/lib/app/data/models/filter.dart b/lib/app/data/models/filter.dart index cd46dbe..fb8fff5 100644 --- a/lib/app/data/models/filter.dart +++ b/lib/app/data/models/filter.dart @@ -1,3 +1,6 @@ +/// [FilterModel] is used for filter screen +/// for example name is [Brand] options are [Mavi, Koton etc ...] +/// [selectedOptions] is selected by user. class FilterModel { late int id; late String code; @@ -29,21 +32,24 @@ class FilterModel { class FilterOption { late int id; - late String adminName; - String? label; - String? image; + late String name; + late String label; + late String swatchValue; + late String queryValue; FilterOption({ required this.id, - required this.adminName, - this.label, - this.image, + required this.name, + required this.label, + required this.swatchValue, + required this.queryValue, }); FilterOption.fromJson(Map json) { id = json['id']; - adminName = json['admin_name']; + name = json['admin_name']; label = json['label']; - image = json['image']; + swatchValue = json['swatch_value'] ?? ''; + queryValue = json['id'].toString(); } } diff --git a/lib/app/pages/home/screen.dart b/lib/app/pages/home/screen.dart index 8ccc872..d8c5349 100644 --- a/lib/app/pages/home/screen.dart +++ b/lib/app/pages/home/screen.dart @@ -51,16 +51,21 @@ class HomePage extends StatelessWidget { ), ), - AppTheme.appSizeDivider20H, - - Padding( - padding: EdgeInsets.only(left: 16.w, right: 16.w), - child: controller.state.isLoading.value - ? CarouselShimmer() - : CarouselWidget( - sliders: controller.state.banners1, - ), - ), + controller.state.banners1.isNotEmpty + ? Column( + children: [ + AppTheme.appSizeDivider20H, + Padding( + padding: EdgeInsets.only(left: 16.w, right: 16.w), + child: controller.state.isLoading.value + ? CarouselShimmer() + : CarouselWidget( + sliders: controller.state.banners1, + ), + ), + ], + ) + : SizedBox.shrink(), AppTheme.appSizeDivider30H, @@ -75,15 +80,21 @@ class HomePage extends StatelessWidget { ), ), - AppTheme.appSizeDivider10H, - Padding( - padding: EdgeInsets.only(left: 16.w, right: 16.w), - child: controller.state.isLoading.value - ? CarouselShimmer() - : CarouselWidget( - sliders: controller.state.banners2, - ), - ), + controller.state.banners2.isNotEmpty + ? Column( + children: [ + AppTheme.appSizeDivider10H, + Padding( + padding: EdgeInsets.only(left: 16.w, right: 16.w), + child: controller.state.isLoading.value + ? CarouselShimmer() + : CarouselWidget( + sliders: controller.state.banners2, + ), + ), + ], + ) + : SizedBox.shrink(), AppTheme.appSizeDivider30H, diff --git a/lib/app/pages/product_list/filter/filter_screen.dart b/lib/app/pages/product_list/filter/filter_screen.dart index cfb1747..636f08d 100644 --- a/lib/app/pages/product_list/filter/filter_screen.dart +++ b/lib/app/pages/product_list/filter/filter_screen.dart @@ -53,6 +53,7 @@ class FilterCard extends StatelessWidget { context: context, builder: (context) => BSChooseFilter( model: model, + ), ); }, @@ -85,7 +86,9 @@ class FilterCard extends StatelessWidget { ), // Spacer(), Expanded( - child: (model.selectedOptions.isNotEmpty || controller.state.selectedPriceFilter.value != null) ? _printSubCategory() : SizedBox.shrink(), + child: (model.selectedOptions.isNotEmpty || controller.state.selectedPriceFilter.value != null) + ? _printSubCategory() + : SizedBox.shrink(), ), ], ), @@ -104,7 +107,7 @@ class FilterCard extends StatelessWidget { final length = model.selectedOptions.length; for (int i = 0; i < length; i++) { - final String name = model.selectedOptions[i].adminName; + final String name = model.selectedOptions[i].label; list.add(_addText(i != length - 1 ? name + ', ' : name)); } } diff --git a/lib/app/pages/product_list/filter/widgets/b_s_choose_filter.dart b/lib/app/pages/product_list/filter/widgets/b_s_choose_filter.dart index fd9337d..15033e5 100644 --- a/lib/app/pages/product_list/filter/widgets/b_s_choose_filter.dart +++ b/lib/app/pages/product_list/filter/widgets/b_s_choose_filter.dart @@ -1,8 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import '../../../../../library/multi_selector/multi_select_bottom_sheet.dart'; -import '../../../../../library/multi_selector/multi_select_item.dart'; +import '../../../../../library/library.dart'; import '../../../../data/models/models.dart'; import '../controller.dart'; import 'b_s_price_filter.dart'; @@ -14,19 +13,19 @@ class BSChooseFilter extends StatelessWidget { @override Widget build(BuildContext context) { - debugPrint('model ${model.options.length}'); + debugPrint('model ${model.code}'); + return GetBuilder( - // init: FilterController(), - builder: (fc) => model.code != 'price' - ? MultiSelectBottomSheet( - initialValue: model.selectedOptions, - title: model.name, - items: model.options.map((option) => MultiSelectItem(option, option.adminName)).toList(), - onConfirm: (selectedItems) => fc.onMultipleSelectionConfirmed(model, selectedItems), - onClear: (selectedItems) => fc.onMultipleSelectionCleared(model), - separateSelectedItems: true, - ) - : BSPriceFilter(title: model.name), + builder: (fc) { + if (model.code == 'price') { + return BSPriceFilter(title: model.name); + } else /* if (model.code == 'brand') { */ + return MultiSelectBottomSheetGetX( + model: model, + onConfirm: (selectedItems) => fc.onMultipleSelectionConfirmed(model, selectedItems), + onClear: (selectedItems) => fc.onMultipleSelectionCleared(model), + ); + }, ); } } diff --git a/lib/library/library.dart b/lib/library/library.dart index 4fb28ab..63d9084 100644 --- a/lib/library/library.dart +++ b/lib/library/library.dart @@ -3,13 +3,12 @@ library library; export 'currency_text_input_formatter.dart'; export 'custom_icons.dart'; export 'dash_separator.dart'; -export 'dash_separator.dart'; export 'fade_in_indexed.dart'; export 'gradient_progress.dart'; export 'multi_selector/multi_select_action.dart'; export 'multi_selector/multi_select_bottom_sheet.dart'; +export 'multi_selector/multi_select_bottom_sheet_getx.dart'; export 'multi_selector/multi_select_item.dart'; export 'outline_gradient_button.dart'; export 'password_strength/password_strength.dart'; export 'tab_bar_material_indicator.dart'; -export 'tab_bar_material_indicator.dart'; diff --git a/lib/library/multi_selector/controller.dart b/lib/library/multi_selector/controller.dart index a156ac6..4d0b044 100644 --- a/lib/library/multi_selector/controller.dart +++ b/lib/library/multi_selector/controller.dart @@ -52,7 +52,7 @@ class MultiSelectController extends GetxController getFirstData = true; // convert data - var newItems = result.map((option) => MultiSelectItem(option, option.adminName)).toList(); + var newItems = result.map((option) => MultiSelectItem(option, option.label)).toList(); debugPrint('newItems ${newItems.length}'); for (var item in newItems) { item.selected = this.selectedValues.where((element) => element.id == item.value.id).isNotEmpty; diff --git a/lib/library/multi_selector/multi_select_bottom_sheet_getx.dart b/lib/library/multi_selector/multi_select_bottom_sheet_getx.dart index d3810b8..9d091f6 100644 --- a/lib/library/multi_selector/multi_select_bottom_sheet_getx.dart +++ b/lib/library/multi_selector/multi_select_bottom_sheet_getx.dart @@ -1,253 +1,253 @@ -// import 'package:animate_do/animate_do.dart'; -// import 'package:flutter/material.dart'; -// import 'package:flutter/services.dart'; -// import 'package:flutter_screenutil/flutter_screenutil.dart'; -// import 'package:flutter_svg/flutter_svg.dart'; -// import 'package:get/get.dart'; +import 'package:animate_do/animate_do.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:get/get.dart'; -// import '../../../app/app.dart'; -// import 'controller.dart'; -// import 'multi_select_item.dart'; +import '../../../app/app.dart'; +import 'controller.dart'; +import 'multi_select_item.dart'; -// class MultiSelectBottomSheetGetX extends StatelessWidget { -// /// The list of selected values before interaction. -// // final List initialValue; +class MultiSelectBottomSheetGetX extends StatelessWidget { + /// The list of selected values before interaction. + // final List initialValue; -// /// The text at the top of the BottomSheet. -// // final String title; + /// The text at the top of the BottomSheet. + // final String title; -// /// Used to [getData] from api. -// // final String modelCode; + /// Used to [getData] from api. + // final String modelCode; -// final FilterModel model; + final FilterModel model; -// /// Fires when the an item is selected / unselected. -// final void Function(List)? onSelectionChanged; + /// Fires when the an item is selected / unselected. + final void Function(List)? onSelectionChanged; -// /// Fires when confirm is tapped. -// final void Function(List) onConfirm; + /// Fires when confirm is tapped. + final void Function(List) onConfirm; -// /// Fires when clear is tapped. -// final void Function(List) onClear; + /// Fires when clear is tapped. + final void Function(List) onClear; -// MultiSelectBottomSheetGetX({ -// // required this.initialValue, -// // required this.title, -// // required this.modelCode, -// required this.model, -// required this.onConfirm, -// required this.onClear, -// this.onSelectionChanged, -// }); + MultiSelectBottomSheetGetX({ + // required this.initialValue, + // required this.title, + // required this.modelCode, + required this.model, + required this.onConfirm, + required this.onClear, + this.onSelectionChanged, + }); -// /// Returns a CheckboxListTile -// Widget _buildListItem(BuildContext context, MultiSelectController msc, MultiSelectItem item) { -// final theme = Theme.of(context); -// final oldCheckboxTheme = theme.checkboxTheme; + /// Returns a CheckboxListTile + Widget _buildListItem(BuildContext context, MultiSelectController msc, MultiSelectItem item) { + final theme = Theme.of(context); + final oldCheckboxTheme = theme.checkboxTheme; -// final newCheckBoxTheme = oldCheckboxTheme.copyWith( -// shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(300)), -// ); -// return Theme( -// data: theme.copyWith(checkboxTheme: newCheckBoxTheme), -// child: Transform.translate( -// offset: Offset(-24, 0), -// child: Transform.scale( -// scale: 1.h, -// child: CheckboxListTile( -// checkColor: ThemeColor.white, -// value: item.selected, -// activeColor: ThemeColor.mainColor, -// title: model.code != 'color' -// ? Text(item.label) -// : Align( -// alignment: Alignment.centerLeft, -// child: Row( -// children: [ -// item.value.swatchValue.isNotEmpty -// ? CircleAvatar( -// backgroundColor: Colors.grey, -// maxRadius: 8.40.w, -// child: CircleAvatar( -// backgroundColor: HexColor(item.value.swatchValue), -// maxRadius: 8.0.w, -// ), -// ) -// : SizedBox.shrink(), -// SizedBox(width: 16.w), -// Text(item.label), -// ], -// ), -// ), -// controlAffinity: ListTileControlAffinity.leading, -// onChanged: (checked) => msc.onListBoxListTileChanged( -// item, -// onSelectionChanged, -// checked, -// ), -// ), -// ), -// ), -// ); -// } + final newCheckBoxTheme = oldCheckboxTheme.copyWith( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(300)), + ); + return Theme( + data: theme.copyWith(checkboxTheme: newCheckBoxTheme), + child: Transform.translate( + offset: Offset(-24, 0), + child: Transform.scale( + scale: 1.h, + child: CheckboxListTile( + checkColor: ThemeColor.white, + value: item.selected, + activeColor: ThemeColor.mainColor, + title: model.code != 'color' + ? Text(item.label) + : Align( + alignment: Alignment.centerLeft, + child: Row( + children: [ + item.value.swatchValue.isNotEmpty + ? CircleAvatar( + backgroundColor: Colors.grey, + maxRadius: 8.40.w, + child: CircleAvatar( + backgroundColor: HexColor(item.value.swatchValue), + maxRadius: 8.0.w, + ), + ) + : SizedBox.shrink(), + SizedBox(width: 16.w), + Text(item.label), + ], + ), + ), + controlAffinity: ListTileControlAffinity.leading, + onChanged: (checked) => msc.onListBoxListTileChanged( + item, + onSelectionChanged, + checked, + ), + ), + ), + ), + ); + } -// @override -// Widget build(BuildContext context) { -// final EdgeInsets mqPadding = MediaQuery.of(context).padding; -// var screenSize = MediaQuery.of(context).size; -// return GetBuilder( -// init: MultiSelectController(model), -// builder: (msc) { -// final bool isLastPage = msc.lastPage.value; -// return Container( -// constraints: BoxConstraints(maxHeight: screenSize.height - mqPadding.top), -// padding: EdgeInsets.only(bottom: mqPadding.bottom + 16, top: 16, left: 16, right: 16), -// decoration: new BoxDecoration( -// color: ThemeColor.white, -// borderRadius: BorderRadius.only(topRight: Radius.circular(16), topLeft: Radius.circular(16)), -// ), -// child: Column( -// mainAxisSize: MainAxisSize.min, -// children: [ -// Container( -// padding: const EdgeInsets.only(top: 8), -// child: Center(child: SvgPicture.asset('assets/icons/drag_line.svg')), -// ), -// SizedBox(height: 8.h), -// // title -// Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// children: [ -// Text(model.name, style: AppTheme.bottomSheetHeaderStyle), -// SizedBox(height: 16), -// // search box -// Container( -// padding: const EdgeInsets.all(8), -// height: 40.h, -// width: double.infinity, -// decoration: new BoxDecoration( -// color: ThemeColor.colorEFF0F4, -// borderRadius: BorderRadius.circular(8), -// ), -// child: TextFormField( -// cursorColor: Colors.black, -// inputFormatters: [new LengthLimitingTextInputFormatter(30)], -// decoration: InputDecoration( -// border: InputBorder.none, -// prefixIcon: Icon( -// Icons.search, -// size: 24.h, -// color: Colors.grey, -// ), -// ), -// onChanged: (val) => msc.onSearchChanged(val), -// ), -// ), -// SizedBox(height: 20), -// Row( -// children: [ -// FadeIn(child: CircleNumberWidget(number: msc.selectedValues.length)), -// SizedBox(width: 8), -// Text( -// 'applied'.tr, -// style: new TextStyle( -// color: ThemeColor.color717278, -// fontSize: 16.sp, -// ), -// ), -// Spacer(), -// msc.selectedValues.isNotEmpty -// ? FadeIn( -// child: TextButton( -// child: Text('clear'.tr), -// style: TextButton.styleFrom(foregroundColor: ThemeColor.mainColor), -// onPressed: () => msc.clearFilter(context, onClear), -// ), -// ) -// : SizedBox.shrink(), -// ], -// ), -// ], -// ), + @override + Widget build(BuildContext context) { + final EdgeInsets mqPadding = MediaQuery.of(context).padding; + var screenSize = MediaQuery.of(context).size; + return GetBuilder( + init: MultiSelectController(model), + builder: (msc) { + final bool isLastPage = msc.lastPage.value; + return Container( + constraints: BoxConstraints(maxHeight: screenSize.height - mqPadding.top), + padding: EdgeInsets.only(bottom: mqPadding.bottom + 16, top: 16, left: 16, right: 16), + decoration: new BoxDecoration( + color: ThemeColor.white, + borderRadius: BorderRadius.only(topRight: Radius.circular(16), topLeft: Radius.circular(16)), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + padding: const EdgeInsets.only(top: 8), + child: Center(child: SvgPicture.asset('assets/icons/drag_line.svg')), + ), + SizedBox(height: 8.h), + // title + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(model.name, style: AppTheme.bottomSheetHeaderStyle), + SizedBox(height: 16), + // search box + Container( + padding: const EdgeInsets.all(8), + height: 40.h, + width: double.infinity, + decoration: new BoxDecoration( + color: ThemeColor.colorEFF0F4, + borderRadius: BorderRadius.circular(8), + ), + child: TextFormField( + cursorColor: Colors.black, + inputFormatters: [new LengthLimitingTextInputFormatter(30)], + decoration: InputDecoration( + border: InputBorder.none, + prefixIcon: Icon( + Icons.search, + size: 24.h, + color: Colors.grey, + ), + ), + onChanged: (val) => msc.onSearchChanged(val), + ), + ), + SizedBox(height: 20), + Row( + children: [ + FadeIn(child: CircleNumberWidget(number: msc.selectedValues.length)), + SizedBox(width: 8), + Text( + 'applied'.tr, + style: new TextStyle( + color: ThemeColor.color717278, + fontSize: 16.sp, + ), + ), + Spacer(), + msc.selectedValues.isNotEmpty + ? FadeIn( + child: TextButton( + child: Text('clear'.tr), + style: TextButton.styleFrom(foregroundColor: ThemeColor.mainColor), + onPressed: () => msc.clearFilter(context, onClear), + ), + ) + : SizedBox.shrink(), + ], + ), + ], + ), -// AppTheme.appDivider, + AppTheme.appSizeDivider10H, -// // body -// Expanded( -// child: ConstrainedBox( -// constraints: new BoxConstraints(minHeight: 0.3.sh), -// child: msc.obx( -// (state) => state != null -// ? RefreshIndicator( -// onRefresh: msc.getData, -// color: ThemeColor.mainColor, -// child: MediaQuery.removePadding( -// context: context, -// removeTop: true, -// child: ListView.builder( -// shrinkWrap: true, -// controller: msc.scroll, -// itemCount: state.length + 1, -// itemBuilder: (context, index) { -// if (index < state.length) { -// return FadeIn( -// child: _buildListItem(context, msc, state[index]), -// ); -// } else if (index == state.length && !isLastPage) -// return Padding( -// padding: const EdgeInsets.only(top: 10, bottom: 40), -// child: Center( -// child: CustomLoader(), -// ), -// ); -// else { -// return SizedBox.shrink(); -// } -// }, -// ), -// ), -// ) -// : Center( -// child: Text( -// 'error_occurred'.tr, -// style: TextStyle(fontSize: 18), -// textAlign: TextAlign.center, -// ), -// ), -// onLoading: Center(child: CustomLoader()), -// onEmpty: Align( -// alignment: Alignment.topCenter, -// child: NotFoundWidget(), -// ), -// onError: (error) => Center( -// child: Text( -// 'error_occurred'.tr, -// style: TextStyle(fontSize: 18), -// textAlign: TextAlign.center, -// ), -// ), -// ), -// ), -// ), + // body + Expanded( + child: ConstrainedBox( + constraints: new BoxConstraints(minHeight: 0.3.sh), + child: msc.obx( + (state) => state != null + ? RefreshIndicator( + onRefresh: msc.getData, + color: ThemeColor.mainColor, + child: MediaQuery.removePadding( + context: context, + removeTop: true, + child: ListView.builder( + shrinkWrap: true, + controller: msc.scroll, + itemCount: state.length + 1, + itemBuilder: (context, index) { + if (index < state.length) { + return FadeIn( + child: _buildListItem(context, msc, state[index]), + ); + } else if (index == state.length && !isLastPage) + return Padding( + padding: const EdgeInsets.only(top: 10, bottom: 40), + child: Center( + child: CustomLoader(), + ), + ); + else { + return SizedBox.shrink(); + } + }, + ), + ), + ) + : Center( + child: Text( + 'error_occurred'.tr, + style: TextStyle(fontSize: 18), + textAlign: TextAlign.center, + ), + ), + onLoading: Center(child: CustomLoader()), + onEmpty: Align( + alignment: Alignment.topCenter, + child: ItemNotFoundWidget(), + ), + onError: (error) => Center( + child: Text( + 'error_occurred'.tr, + style: TextStyle(fontSize: 18), + textAlign: TextAlign.center, + ), + ), + ), + ), + ), -// // footer -// msc.selectedValues.isNotEmpty -// ? FadeIn( -// duration: Duration(milliseconds: 900), -// child: ButtonWidthFull( -// title: 'done'.tr, -// btnColor: ThemeColor.mainColor, -// callback: () => msc.onConfirmSelection( -// context, -// onConfirm, -// ), -// ), -// ) -// : SizedBox.shrink(), -// ], -// ), -// ); -// }, -// ); -// } -// } + // footer + msc.selectedValues.isNotEmpty + ? FadeIn( + duration: Duration(milliseconds: 900), + child: ColoredButton( + title: 'done'.tr, + btnColor: ThemeColor.mainColor, + callback: () => msc.onConfirmSelection( + context, + onConfirm, + ), + ), + ) + : SizedBox.shrink(), + ], + ), + ); + }, + ); + } +} diff --git a/lib/main.dart b/lib/main.dart index e69c93b..958fa1b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -35,13 +35,6 @@ class ElektronikaShopApp extends StatelessWidget { @override Widget build(BuildContext context) { - // SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( - // systemNavigationBarColor: Colors.blue, // navigation bar color - // statusBarColor: Colors.transparent, // status bar color - // )); - // SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( - // statusBarColor: ThemeColor.mainColor, - // )); SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown,