refactor: 회사 폼 UI 개선 및 코드 정리
Some checks failed
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled
Flutter Test & Quality Check / Build APK (push) Has been cancelled

- 담당자 연락처 필드를 드롭다운 + 입력 방식으로 분리
- 사용자 폼과 동일한 전화번호 UI 패턴 적용
- 미사용 위젯 파일 4개 정리 (branch_card, contact_info_* 등)
- 파일명 통일성 확보 (branch_edit_screen → branch_form, company_form_simplified → company_form)
- 네이밍 일관성 개선으로 유지보수성 향상
This commit is contained in:
JiWoong Sul
2025-08-18 17:57:16 +09:00
parent 93bceb8a6c
commit 6d745051b5
37 changed files with 2743 additions and 2446 deletions

View File

@@ -17,8 +17,19 @@ class WarehouseLocationFormController extends ChangeNotifier {
/// 비고 입력 컨트롤러
final TextEditingController remarkController = TextEditingController();
/// 주소 정보
Address _address = const Address();
/// 담당자명 입력 컨트롤러
final TextEditingController managerNameController = TextEditingController();
/// 담당자 연락처 입력 컨트롤러
final TextEditingController managerPhoneController = TextEditingController();
/// 수용량 입력 컨트롤러
final TextEditingController capacityController = TextEditingController();
/// 주소 입력 컨트롤러 (단일 필드)
final TextEditingController addressController = TextEditingController();
/// 백엔드 API에 맞는 단순 필드들 (주소는 단일 String)
/// 저장 중 여부
bool _isSaving = false;
@@ -53,7 +64,6 @@ class WarehouseLocationFormController extends ChangeNotifier {
}
// Getters
Address get address => _address;
bool get isSaving => _isSaving;
bool get isEditMode => _isEditMode;
int? get id => _id;
@@ -74,8 +84,11 @@ class WarehouseLocationFormController extends ChangeNotifier {
if (_originalLocation != null) {
nameController.text = _originalLocation!.name;
_address = _originalLocation!.address;
addressController.text = _originalLocation!.address ?? '';
remarkController.text = _originalLocation!.remark ?? '';
managerNameController.text = _originalLocation!.managerName ?? '';
managerPhoneController.text = _originalLocation!.managerPhone ?? '';
capacityController.text = _originalLocation!.capacity?.toString() ?? '';
}
} catch (e) {
_error = e.toString();
@@ -85,11 +98,6 @@ class WarehouseLocationFormController extends ChangeNotifier {
}
}
/// 주소 변경 처리
void updateAddress(Address newAddress) {
_address = newAddress;
notifyListeners();
}
/// 저장 처리 (추가/수정)
Future<bool> save() async {
@@ -103,8 +111,13 @@ class WarehouseLocationFormController extends ChangeNotifier {
final location = WarehouseLocation(
id: _isEditMode ? _id! : 0,
name: nameController.text.trim(),
address: _address,
address: addressController.text.trim().isEmpty ? null : addressController.text.trim(),
remark: remarkController.text.trim().isEmpty ? null : remarkController.text.trim(),
managerName: managerNameController.text.trim().isEmpty ? null : managerNameController.text.trim(),
managerPhone: managerPhoneController.text.trim().isEmpty ? null : managerPhoneController.text.trim(),
capacity: capacityController.text.trim().isEmpty ? null : int.tryParse(capacityController.text.trim()),
isActive: true, // 새로 생성 시 항상 활성화
createdAt: DateTime.now(),
);
if (_isEditMode) {
@@ -127,8 +140,11 @@ class WarehouseLocationFormController extends ChangeNotifier {
/// 폼 초기화
void resetForm() {
nameController.clear();
addressController.clear();
remarkController.clear();
_address = const Address();
managerNameController.clear();
managerPhoneController.clear();
capacityController.clear();
_error = null;
formKey.currentState?.reset();
notifyListeners();
@@ -145,9 +161,28 @@ class WarehouseLocationFormController extends ChangeNotifier {
return null;
}
String? validateAddress() {
if (_address.isEmpty) {
return '주소를 입력해주세요';
/// 수용량 유효성 검사
String? validateCapacity(String? value) {
if (value != null && value.isNotEmpty) {
final capacity = int.tryParse(value);
if (capacity == null) {
return '올바른 숫자를 입력해주세요';
}
if (capacity < 0) {
return '수용량은 0 이상이어야 합니다';
}
}
return null;
}
/// 전화번호 유효성 검사
String? validatePhoneNumber(String? value) {
if (value != null && value.isNotEmpty) {
// 기본적인 전화번호 형식 검사 (숫자, 하이픈 허용)
if (!RegExp(r'^[0-9-]+$').hasMatch(value)) {
return '올바른 전화번호 형식을 입력해주세요';
}
}
return null;
}
@@ -156,7 +191,11 @@ class WarehouseLocationFormController extends ChangeNotifier {
@override
void dispose() {
nameController.dispose();
addressController.dispose();
remarkController.dispose();
managerNameController.dispose();
managerPhoneController.dispose();
capacityController.dispose();
super.dispose();
}
}