Flutter SearchBar 모든 요소 상세 설명
Flutter의 SearchBar 위젯은 검색 기능을 구현하는 데 유용한 위젯으로, 직관적인 검색 UI를 제공합니다.
1. 생성자 및 주요 속성 (Constructor & Properties)
1.1. SearchBar 생성자
SearchBar({
  super.key,
  this.controller,
  this.focusNode,
  this.hintText,
  this.hintStyle,
  this.leading,
  this.trailing,
  this.onChanged,
  this.onSubmitted,
  this.onTap,
  this.onEditingComplete,
  this.enabled = true,
  this.shape,
  this.backgroundColor,
  this.padding,
  this.textStyle,
  this.keyboardType,
  this.textInputAction,
  this.autofocus = false,
})
2. 속성 (Properties) 상세 설명
1) controller (텍스트 컨트롤러)
- 타입: 
TextEditingController? - 설명:
- 검색창의 입력 값을 제어하는 컨트롤러입니다.
 - 사용자가 입력한 텍스트를 가져오거나 수정할 수 있습니다.
 
 - 예제: 
TextEditingController searchController = TextEditingController(); SearchBar( controller: searchController, ); 
2) focusNode (포커스 노드)
- 타입: 
FocusNode? - 설명:
- 검색바의 포커스를 제어합니다.
 - 포커스를 감지하거나 강제로 포커스를 줄 수 있습니다.
 
 - 예제: 
FocusNode searchFocusNode = FocusNode(); SearchBar( focusNode: searchFocusNode, ); 
3) hintText (힌트 텍스트)
- 타입: 
String? - 설명:
- 검색창에 아무 입력도 없을 때 표시되는 힌트 텍스트입니다.
 
 - 예제: 
SearchBar( hintText: "검색어를 입력하세요", ); 
4) hintStyle (힌트 텍스트 스타일)
- 타입: 
TextStyle? - 설명:
- 힌트 텍스트의 스타일을 정의합니다.
 
 - 예제: 
SearchBar( hintText: "검색어 입력", hintStyle: TextStyle(color: Colors.grey, fontSize: 16), ); 
5) leading (왼쪽 아이콘)
- 타입: 
Widget? - 설명:
- 검색창의 왼쪽에 표시할 위젯을 지정합니다.
 - 보통 검색 아이콘을 사용합니다.
 
 - 예제: 
SearchBar( leading: Icon(Icons.search), ); 
6) trailing (오른쪽 아이콘)
- 타입: 
List<Widget>? - 설명:
- 검색창의 오른쪽에 여러 개의 아이콘을 추가할 수 있습니다.
 - 주로 검색 취소 버튼을 넣습니다.
 
 - 예제: 
SearchBar( trailing: [ IconButton( icon: Icon(Icons.clear), onPressed: () { print("검색어 삭제"); }, ), ], ); 
7) onChanged (텍스트 변경 시 실행)
- 타입: 
ValueChanged<String>? - 설명:
- 사용자가 검색어를 입력할 때마다 호출되는 콜백 함수입니다.
 
 - 예제: 
SearchBar( onChanged: (value) { print("입력된 값: $value"); }, ); 
8) onSubmitted (입력 완료 시 실행)
- 타입: 
ValueChanged<String>? - 설명:
- 사용자가 키보드의 ‘완료’ 버튼을 눌렀을 때 실행되는 콜백 함수입니다.
 
 - 예제: 
SearchBar( onSubmitted: (value) { print("검색 실행: $value"); }, ); 
9) onTap (탭 시 실행)
- 타입: 
VoidCallback? - 설명:
- 사용자가 검색창을 터치했을 때 실행됩니다.
 
 - 예제: 
SearchBar( onTap: () { print("검색창이 클릭됨"); }, ); 
10) onEditingComplete (편집 완료 시 실행)
- 타입: 
VoidCallback? - 설명:
- 사용자가 입력을 마치고 엔터를 눌렀을 때 실행됩니다.
 
 - 예제: 
SearchBar( onEditingComplete: () { print("입력 완료"); }, ); 
11) enabled (활성화 여부)
- 타입: 
bool - 설명:
false로 설정하면 검색창이 비활성화됩니다.
 - 예제: 
SearchBar( enabled: false, ); 
12) shape (검색창 모양)
- 타입: 
OutlinedBorder? - 설명:
- 검색창의 모양을 변경할 수 있습니다.
 
 - 예제: 
SearchBar( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20), ), ); 
13) backgroundColor (배경 색상)
- 타입: 
MaterialStateProperty<Color?>? - 설명:
- 검색창의 배경 색상을 설정할 수 있습니다.
 
 - 예제: 
SearchBar( backgroundColor: MaterialStateProperty.all(Colors.blue.shade100), ); 
14) padding (내부 여백)
- 타입: 
MaterialStateProperty<EdgeInsetsGeometry?>? - 설명:
- 내부 여백을 설정합니다.
 
 - 예제: 
SearchBar( padding: MaterialStateProperty.all(EdgeInsets.all(10)), ); 
15) textStyle (텍스트 스타일)
- 타입: 
MaterialStateProperty<TextStyle?>? - 설명:
- 입력 텍스트의 스타일을 정의합니다.
 
 - 예제: 
SearchBar( textStyle: MaterialStateProperty.all( TextStyle(fontSize: 18, color: Colors.black), ), ); 
16) keyboardType (키보드 타입)
- 타입: 
TextInputType? - 설명:
- 숫자 키패드, 이메일 키보드 등 다양한 키보드 유형을 지정할 수 있습니다.
 
 - 예제: 
SearchBar( keyboardType: TextInputType.text, ); 
17) textInputAction (키보드 버튼 동작)
- 타입: 
TextInputAction? - 설명:
- 키보드의 “완료”, “검색”, “다음” 등의 동작을 설정할 수 있습니다.
 
 - 예제: 
SearchBar( textInputAction: TextInputAction.search, ); 
18) autofocus (자동 포커스 여부)
- 타입: 
bool - 설명:
- 화면이 열릴 때 검색창에 자동으로 포커스를 줄지 결정합니다.
 
 - 예제: 
SearchBar( autofocus: true, ); 
🔹 정리
위 속성들을 조합하여, Flutter의 SearchBar를 더욱 유용하게 활용할 수 있습니다! 
