프로젝트 최초 커밋
This commit is contained in:
85
lib/screens/company/widgets/company_form_header.dart
Normal file
85
lib/screens/company/widgets/company_form_header.dart
Normal file
@@ -0,0 +1,85 @@
|
||||
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_tailwind.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),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user