Skip to content

TextField

TextField 위젯은 사용자가 텍스트를 입력할 수 있는 입력 상자를 제공합니다. 주로 사용자 입력을 받기 위해 사용됩니다. 주요 옵션은 다음과 같습니다

  • controller: 텍스트 필드의 내용을 제어하는 TextEditingController.
  • focusNode: 텍스트 필드의 포커스를 제어하는 FocusNode.
  • decoration: 텍스트 필드의 외관을 장식하는 InputDecoration.
  • keyboardType: 텍스트 필드의 키보드 타입.
  • textInputAction: 키보드의 작업 버튼 타입.
  • style: 입력된 텍스트의 스타일.
  • textAlign: 텍스트 정렬 방식.
  • maxLines: 텍스트 필드의 최대 줄 수.
  • maxLength: 입력 가능한 최대 문자 수.
  • obscureText: 비밀번호 입력 등 텍스트를 숨김.
  • autocorrect: 자동 수정 여부.
  • enabled: 텍스트 필드 활성화 여부.
  • onChanged: 텍스트가 변경될 때 호출되는 콜백.
  • onSubmitted: 텍스트 입력이 완료될 때 호출되는 콜백.
  • inputFormatters: 입력을 필터링하는 포맷터
dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('TextField Example with All Options'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: TextField(
            // 텍스트 필드의 내용을 제어하는 TextEditingController
            controller: TextEditingController(),
            // 텍스트 필드의 포커스를 제어하는 FocusNode
            focusNode: FocusNode(),
            // 텍스트 필드의 외관을 장식하는 InputDecoration
            decoration: InputDecoration(
              labelText: 'Enter your name',
              hintText: 'John Doe',
              helperText: 'Name should be at least 3 characters',
              icon: Icon(Icons.person),
              prefixIcon: Icon(Icons.account_circle),
              suffixIcon: Icon(Icons.check_circle),
              border: OutlineInputBorder(),
            ),
            // 텍스트 필드의 키보드 타입
            keyboardType: TextInputType.text,
            // 키보드의 작업 버튼 타입
            textInputAction: TextInputAction.done,
            // 입력된 텍스트의 스타일
            style: TextStyle(fontSize: 18.0, color: Colors.blue),
            // 텍스트 정렬 방식
            textAlign: TextAlign.left,
            // 텍스트 필드의 최대 줄 수
            maxLines: 1,
            // 입력 가능한 최대 문자 수
            maxLength: 20,
            // 비밀번호 입력 등 텍스트를 숨김
            obscureText: false,
            // 자동 수정 여부
            autocorrect: true,
            // 텍스트 필드 활성화 여부
            enabled: true,
            // 텍스트가 변경될 때 호출되는 콜백
            onChanged: (text) {
              print('Text changed: $text');
            },
            // 텍스트 입력이 완료될 때 호출되는 콜백
            onSubmitted: (text) {
              print('Text submitted: $text');
            },
            // 입력을 필터링하는 포맷터
            inputFormatters: <TextInputFormatter>[
              FilteringTextInputFormatter.allow(RegExp(r'[a-zA-Z]')),
            ],
          ),
        ),
      ),
    );
  }
}