Files
superport/lib/screens/company/widgets/company_form_header.dart
JiWoong Sul 1e6da44917
Some checks failed
Flutter Test & Quality Check / Build APK (push) Has been cancelled
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled
refactor: UI 화면 통합 및 불필요한 파일 정리
- 모든 *_redesign.dart 파일을 기본 화면 파일로 통합
- 백업용 컨트롤러 파일들 제거 (*_controller.backup.dart)
- 사용하지 않는 예제 및 테스트 파일 제거
- Clean Architecture 적용 후 남은 정리 작업 완료
- 테스트 코드 정리 및 구조 개선 준비

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 14:00:44 +09:00

86 lines
2.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:superport/models/address_model.dart';
import 'package:superport/screens/common/custom_widgets.dart';
import 'package:superport/screens/common/theme_shadcn.dart';
import 'package:superport/screens/common/widgets/address_input.dart';
import 'package:superport/utils/validators.dart';
import 'package:superport/screens/company/widgets/company_name_autocomplete.dart';
import 'package:superport/screens/common/widgets/remark_input.dart';
class CompanyFormHeader extends StatelessWidget {
final TextEditingController nameController;
final FocusNode nameFocusNode;
final List<String> companyNames;
final List<String> filteredCompanyNames;
final bool showCompanyNameDropdown;
final Function(String) onCompanyNameSelected;
final Function() onShowMapPressed;
final ValueChanged<String?> onNameSaved;
final ValueChanged<Address> onAddressChanged;
final Address initialAddress;
final String nameLabel;
final String nameHint;
final TextEditingController remarkController;
const CompanyFormHeader({
Key? key,
required this.nameController,
required this.nameFocusNode,
required this.companyNames,
required this.filteredCompanyNames,
required this.showCompanyNameDropdown,
required this.onCompanyNameSelected,
required this.onShowMapPressed,
required this.onNameSaved,
required this.onAddressChanged,
this.initialAddress = const Address(),
required this.nameLabel,
required this.nameHint,
required this.remarkController,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// 회사명/지점명
FormFieldWrapper(
label: nameLabel,
isRequired: true,
child: CompanyNameAutocomplete(
nameController: nameController,
nameFocusNode: nameFocusNode,
companyNames: companyNames,
filteredCompanyNames: filteredCompanyNames,
showCompanyNameDropdown: showCompanyNameDropdown,
onCompanyNameSelected: onCompanyNameSelected,
onNameSaved: onNameSaved,
label: nameLabel,
hint: nameHint,
),
),
// 주소 입력 위젯 (SRP에 따라 별도 컴포넌트로 분리)
AddressInput(
initialZipCode: initialAddress.zipCode,
initialRegion: initialAddress.region,
initialDetailAddress: initialAddress.detailAddress,
isRequired: false,
onAddressChanged: (zipCode, region, detailAddress) {
final address = Address(
zipCode: zipCode,
region: region,
detailAddress: detailAddress,
);
onAddressChanged(address);
},
),
const SizedBox(height: 12),
// 비고 입력란
RemarkInput(controller: remarkController),
],
);
}
}