Files
superport/lib/screens/company/controllers/branch_form_controller.dart
JiWoong Sul 6d745051b5
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
refactor: 회사 폼 UI 개선 및 코드 정리
- 담당자 연락처 필드를 드롭다운 + 입력 방식으로 분리
- 사용자 폼과 동일한 전화번호 UI 패턴 적용
- 미사용 위젯 파일 4개 정리 (branch_card, contact_info_* 등)
- 파일명 통일성 확보 (branch_edit_screen → branch_form, company_form_simplified → company_form)
- 네이밍 일관성 개선으로 유지보수성 향상
2025-08-18 17:57:16 +09:00

98 lines
3.5 KiB
Dart

import 'package:flutter/material.dart';
import 'package:superport/models/company_model.dart';
import 'package:superport/models/address_model.dart';
/// 회사 폼에서 사용되는 지점 관리 컨트롤러
/// 각 지점의 정보를 개별적으로 관리
class BranchFormController {
Branch _branch;
final List<String> positions;
final List<String> phonePrefixes;
// 컨트롤러들
final TextEditingController nameController = TextEditingController();
final TextEditingController contactNameController = TextEditingController();
final TextEditingController contactPositionController = TextEditingController();
final TextEditingController contactPhoneController = TextEditingController();
final TextEditingController contactEmailController = TextEditingController();
final TextEditingController remarkController = TextEditingController();
final FocusNode focusNode = FocusNode();
// 전화번호 관련
String selectedPhonePrefix = '010';
BranchFormController({
required Branch branch,
required this.positions,
required this.phonePrefixes,
}) : _branch = branch {
// 초기값 설정
nameController.text = branch.name;
contactNameController.text = branch.contactName ?? '';
contactPositionController.text = branch.contactPosition ?? '';
contactPhoneController.text = branch.contactPhone ?? '';
contactEmailController.text = branch.contactEmail ?? '';
remarkController.text = branch.remark ?? '';
// 전화번호 접두사 추출
if (branch.contactPhone != null && branch.contactPhone!.isNotEmpty) {
for (String prefix in phonePrefixes) {
if (branch.contactPhone!.startsWith(prefix)) {
selectedPhonePrefix = prefix;
contactPhoneController.text = branch.contactPhone!.substring(prefix.length);
break;
}
}
}
}
/// Branch 객체 getter
Branch get branch => _branch.copyWith(
name: nameController.text.trim(),
contactName: contactNameController.text.trim().isEmpty ? null : contactNameController.text.trim(),
contactPosition: contactPositionController.text.trim().isEmpty ? null : contactPositionController.text.trim(),
contactPhone: contactPhoneController.text.trim().isEmpty ? null : '$selectedPhonePrefix${contactPhoneController.text.trim()}',
contactEmail: contactEmailController.text.trim().isEmpty ? null : contactEmailController.text.trim(),
remark: remarkController.text.trim().isEmpty ? null : remarkController.text.trim(),
);
/// 주소 업데이트
void updateAddress(Address address) {
_branch = _branch.copyWith(address: address);
}
/// 필드 업데이트
void updateField(String field, String value) {
switch (field) {
case 'name':
nameController.text = value;
break;
case 'contactName':
contactNameController.text = value;
break;
case 'contactPosition':
contactPositionController.text = value;
break;
case 'contactPhone':
contactPhoneController.text = value;
break;
case 'contactEmail':
contactEmailController.text = value;
break;
case 'remark':
remarkController.text = value;
break;
}
}
/// 리소스 해제
void dispose() {
nameController.dispose();
contactNameController.dispose();
contactPositionController.dispose();
contactPhoneController.dispose();
contactEmailController.dispose();
remarkController.dispose();
focusNode.dispose();
}
}