diff --git a/android/app/build.gradle b/android/app/build.gradle index 130fc4f..d860d43 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -13,12 +13,12 @@ if (flutterRoot == null) { def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { - flutterVersionCode = '26' + flutterVersionCode = '27' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { - flutterVersionName = '3.7.0' + flutterVersionName = '3.7.1' } def keystoreProperties = new Properties() diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 90e805c..d205112 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -367,7 +367,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 22; + CURRENT_PROJECT_VERSION = 23; DEVELOPMENT_TEAM = Z25H7B85Z8; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -376,7 +376,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.7.0; + MARKETING_VERSION = 3.7.1; PRODUCT_BUNDLE_IDENTIFIER = com.osj.lotura; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -507,7 +507,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 22; + CURRENT_PROJECT_VERSION = 23; DEVELOPMENT_TEAM = Z25H7B85Z8; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -516,7 +516,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.7.0; + MARKETING_VERSION = 3.7.1; PRODUCT_BUNDLE_IDENTIFIER = com.osj.lotura; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -537,7 +537,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 22; + CURRENT_PROJECT_VERSION = 23; DEVELOPMENT_TEAM = Z25H7B85Z8; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; @@ -546,7 +546,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.7.0; + MARKETING_VERSION = 3.7.1; PRODUCT_BUNDLE_IDENTIFIER = com.osj.lotura; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; diff --git a/lib/main.dart b/lib/main.dart index a7148c7..466d5eb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -85,6 +85,15 @@ enum CurrentState { deviceIconColor: LoturaColors.red400, text: "고장"); + bool get isWorking => this == CurrentState.working; + bool get isNotWorking => this != CurrentState.working; + + bool get isAvailable => this == CurrentState.available; + + bool get isDisconnected => this == CurrentState.disconnected; + + bool get isBreakdown => this == CurrentState.breakdown; + final IconData icon; final Color color, deepColor, deviceIconColor; final String text; @@ -115,6 +124,12 @@ enum DeviceType { imagePath: "", ); + bool get isWash => this == DeviceType.wash; + + bool get isDry => this == DeviceType.dry; + + bool get isEmpty => this == DeviceType.empty; + final String text, imagePath; final IconData icon; @@ -129,6 +144,10 @@ enum Gender { boy(text: "남자 세탁실"), girl(text: "여자 세탁실"); + bool get isBoy => this == Gender.boy; + + bool get isGirl => this == Gender.girl; + const Gender({required this.text}); final String text; @@ -139,6 +158,14 @@ enum RoomLocation { dormitorySide(roomName: "남자 기숙사측 세탁실"), schoolGirlSide(roomName: "여자 기숙사측 세탁실"); + bool get isSchoolSide => this == RoomLocation.schoolSide; + + bool get isDormitorySide => this == RoomLocation.dormitorySide; + + bool get isSchoolGirlSide => this == RoomLocation.schoolGirlSide; + + bool get isNotSchoolGirlSide => this != RoomLocation.schoolGirlSide; + const RoomLocation({required this.roomName}); final String roomName; @@ -148,6 +175,10 @@ enum LaundryRoomLayer { first(icon: Icons.looks_one_outlined), second(icon: Icons.looks_two_outlined); + bool get isFirst => this == LaundryRoomLayer.first; + + bool get isSecond => this == LaundryRoomLayer.second; + const LaundryRoomLayer({required this.icon}); final IconData icon; diff --git a/lib/presentation/apply_page/ui/widget/machine_card.dart b/lib/presentation/apply_page/ui/widget/machine_card.dart index cb382b9..45cdeeb 100644 --- a/lib/presentation/apply_page/ui/widget/machine_card.dart +++ b/lib/presentation/apply_page/ui/widget/machine_card.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_screenutil/flutter_screenutil.dart' as s; -import 'package:lotura/main.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:lotura/presentation/utils/machine_widget.dart'; class MachineCard extends MachineWidget { @@ -14,7 +13,7 @@ class MachineCard extends MachineWidget { @override Widget build(BuildContext context) { - return deviceType == DeviceType.empty + return deviceType.isEmpty ? Container( width: 170.0.r, padding: EdgeInsets.only(top: 10.0.r), diff --git a/lib/presentation/laundry_room_page/ui/view/laundry_room_page.dart b/lib/presentation/laundry_room_page/ui/view/laundry_room_page.dart index 97febb9..ab37c4b 100644 --- a/lib/presentation/laundry_room_page/ui/view/laundry_room_page.dart +++ b/lib/presentation/laundry_room_page/ui/view/laundry_room_page.dart @@ -127,8 +127,7 @@ class LaundryRoomPage extends StatelessWidget { SingleChildScrollView( scrollDirection: Axis.horizontal, padding: EdgeInsets.symmetric(vertical: 12.0.h), - child: roomBlocState.data.roomLocation != - RoomLocation.schoolGirlSide + child: roomBlocState.data.roomLocation.isNotSchoolGirlSide ? Row( children: [ OSJTextButton( @@ -137,12 +136,12 @@ class LaundryRoomPage extends StatelessWidget { roomLocation: RoomLocation.schoolSide)), fontSize: 18.0.sp, - color: roomBlocState.value.roomLocation == - RoomLocation.schoolSide + color: roomBlocState + .value.roomLocation.isSchoolSide ? LoturaColors.white : LoturaColors.gray100, - fontColor: roomBlocState.value.roomLocation == - RoomLocation.schoolSide + fontColor: roomBlocState + .value.roomLocation.isSchoolSide ? LoturaColors.primary700 : LoturaColors.gray300, text: "남자 학교측", @@ -157,12 +156,12 @@ class LaundryRoomPage extends StatelessWidget { roomLocation: RoomLocation.dormitorySide)), fontSize: 18.0.sp, - color: roomBlocState.value.roomLocation == - RoomLocation.dormitorySide + color: roomBlocState + .value.roomLocation.isDormitorySide ? LoturaColors.white : LoturaColors.gray100, - fontColor: roomBlocState.value.roomLocation == - RoomLocation.dormitorySide + fontColor: roomBlocState + .value.roomLocation.isDormitorySide ? LoturaColors.primary700 : LoturaColors.gray300, text: "남자 기숙사측", @@ -199,8 +198,8 @@ class LaundryRoomPage extends StatelessWidget { const Center(child: CircularProgressIndicator()), Error() => const Center(child: Text("인터넷 연결을 확인해주세요")), - Loaded() => roomBlocState.data.roomLocation != - RoomLocation.schoolGirlSide + Loaded() => roomBlocState + .data.roomLocation.isNotSchoolGirlSide ? LaundryList( list: state.data.laundryList, laundryRoomModel: roomBlocState.value, @@ -244,13 +243,13 @@ class LaundryRoomLayerFilter extends StatelessWidget { "1층", style: TextStyle( fontSize: 18.0.sp, - color: laundryRoomLayer == LaundryRoomLayer.first + color: laundryRoomLayer.isFirst ? LoturaColors.black : LoturaColors.gray300, ), ), ), - if (currentRoomLocation != RoomLocation.schoolGirlSide) + if (currentRoomLocation.isNotSchoolGirlSide) TextButton( onPressed: () => context.read().add( ModifyLaundryRoomLayerEvent( @@ -259,7 +258,7 @@ class LaundryRoomLayerFilter extends StatelessWidget { "2층", style: TextStyle( fontSize: 18.0.sp, - color: laundryRoomLayer == LaundryRoomLayer.second + color: laundryRoomLayer.isSecond ? LoturaColors.black : LoturaColors.gray300, ), @@ -323,8 +322,7 @@ class LaundryList extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ MachineButton( - laundryEntity: laundryRoomModel.laundryRoomLayer == - LaundryRoomLayer.first + laundryEntity: laundryRoomModel.laundryRoomLayer.isFirst ? list[ placeIndex[laundryRoomModel.roomLocation.index]! + index] @@ -336,8 +334,7 @@ class LaundryList extends StatelessWidget { ), const Icon(LoturaIcons.triangleUp, color: Colors.grey), MachineButton( - laundryEntity: laundryRoomModel.laundryRoomLayer == - LaundryRoomLayer.first + laundryEntity: laundryRoomModel.laundryRoomLayer.isFirst ? list[ placeIndex[laundryRoomModel.roomLocation.index]! + index + diff --git a/lib/presentation/laundry_room_page/ui/widget/machine_button.dart b/lib/presentation/laundry_room_page/ui/widget/machine_button.dart index 6f184ba..58a64d8 100644 --- a/lib/presentation/laundry_room_page/ui/widget/machine_button.dart +++ b/lib/presentation/laundry_room_page/ui/widget/machine_button.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:flutter_screenutil/flutter_screenutil.dart' as s; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:lotura/domain/laundry/entity/laundry_entity.dart'; -import 'package:lotura/main.dart'; import 'package:lotura/presentation/utils/lotura_colors.dart'; import 'package:lotura/presentation/utils/lotura_icons.dart'; import 'package:lotura/presentation/utils/machine_widget.dart'; @@ -21,7 +20,7 @@ class MachineButton extends MachineWidget { @override Widget build(BuildContext context) { - return laundryEntity.deviceType == DeviceType.empty + return laundryEntity.deviceType.isEmpty ? Container( padding: EdgeInsets.all(12.0.r), constraints: BoxConstraints( diff --git a/lib/presentation/utils/bottom_navi.dart b/lib/presentation/utils/bottom_navi.dart index c841d18..735d2c5 100644 --- a/lib/presentation/utils/bottom_navi.dart +++ b/lib/presentation/utils/bottom_navi.dart @@ -37,8 +37,6 @@ class _BottomNaviState extends State int selectedIndex = 1; bool isChange = false; - final Map placeIndex = {0: 0, 1: 16, 2: 31, 3: 44}; - @override void initState() { super.initState(); @@ -96,12 +94,29 @@ class _BottomNaviState extends State ); } if (widget.nfcTagData != -1) { - for (var i in placeIndex.entries) { - if (i.value > widget.nfcTagData - 1) { - context.read().add(ModifyRoomIndexEvent( - roomLocation: RoomLocation.values.elementAt(i.key - 1))); - break; - } + int d = widget.nfcTagData; + if (d <= 16) { + context + .read() + .add(ModifyRoomIndexEvent(roomLocation: RoomLocation.schoolSide)); + context.read().add(ModifyLaundryRoomLayerEvent( + laundryRoomLayer: LaundryRoomLayer.first)); + } else if (d <= 32) { + context.read().add( + ModifyRoomIndexEvent(roomLocation: RoomLocation.dormitorySide)); + context.read().add(ModifyLaundryRoomLayerEvent( + laundryRoomLayer: LaundryRoomLayer.first)); + } else if (d <= 48) { + context + .read() + .add(ModifyRoomIndexEvent(roomLocation: RoomLocation.schoolSide)); + context.read().add(ModifyLaundryRoomLayerEvent( + laundryRoomLayer: LaundryRoomLayer.second)); + } else if (d <= 64) { + context.read().add( + ModifyRoomIndexEvent(roomLocation: RoomLocation.dormitorySide)); + context.read().add(ModifyLaundryRoomLayerEvent( + laundryRoomLayer: LaundryRoomLayer.second)); } } else { context.read().add(GetRoomIndexEvent()); @@ -159,12 +174,27 @@ class _BottomNaviState extends State if (widget.nfcTagData != -1) { selectedIndex = 1; controller.index = 1; - for (var i in placeIndex.entries) { - if (i.value > widget.nfcTagData - 1) { - context.read().add(ModifyRoomIndexEvent( - roomLocation: RoomLocation.values.elementAt(i.key - 1))); - break; - } + int d = widget.nfcTagData; + if (d <= 16) { + context.read().add( + ModifyRoomIndexEvent(roomLocation: RoomLocation.schoolSide)); + context.read().add(ModifyLaundryRoomLayerEvent( + laundryRoomLayer: LaundryRoomLayer.first)); + } else if (d <= 32) { + context.read().add(ModifyRoomIndexEvent( + roomLocation: RoomLocation.dormitorySide)); + context.read().add(ModifyLaundryRoomLayerEvent( + laundryRoomLayer: LaundryRoomLayer.first)); + } else if (d <= 48) { + context.read().add( + ModifyRoomIndexEvent(roomLocation: RoomLocation.schoolSide)); + context.read().add(ModifyLaundryRoomLayerEvent( + laundryRoomLayer: LaundryRoomLayer.second)); + } else if (d <= 64) { + context.read().add(ModifyRoomIndexEvent( + roomLocation: RoomLocation.dormitorySide)); + context.read().add(ModifyLaundryRoomLayerEvent( + laundryRoomLayer: LaundryRoomLayer.second)); } BlocProvider.of(context) .add(InitialShowBottomSheetEvent()); diff --git a/lib/presentation/utils/osj_bottom_sheet.dart b/lib/presentation/utils/osj_bottom_sheet.dart index 25f7da9..8807c36 100644 --- a/lib/presentation/utils/osj_bottom_sheet.dart +++ b/lib/presentation/utils/osj_bottom_sheet.dart @@ -74,13 +74,13 @@ class _OSJBottomSheetState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (widget.state != CurrentState.working) + if (widget.state.isNotWorking) Icon( widget.state.icon, size: 24.0.r, - color: widget.state == CurrentState.available + color: widget.state.isAvailable ? LoturaColors.green700 - : widget.state == CurrentState.disconnected + : widget.state.isDisconnected ? LoturaColors.black : LoturaColors.red700, ), @@ -97,7 +97,7 @@ class _OSJBottomSheetState extends State { ), ), ), - widget.state == CurrentState.working + widget.state.isWorking ? Row( children: [ Expanded( diff --git a/pubspec.yaml b/pubspec.yaml index a3c2b17..33e8473 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 3.7.0+26 +version: 3.7.1+27 environment: sdk: '>=3.1.3 <4.0.0'