반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- dart
- 수학 애니메이션
- 개발자
- vscode
- 유데미
- python
- manim
- 책
- 유데미 러닝크루
- 프로그래밍
- 디자인패턴
- 개발
- 개발자도서
- 리눅스
- 코딩
- column
- linux
- 다트
- 한빛미디어
- flutter
- 가상환경
- Code Generation
- docker
- 위젯
- command
- 파이썬
- 플러터
- 도커
- 도서
- 명령어
Archives
- Today
- Total
승상의 코딩 블로그
[Flutter] TextFormField 의 입력값 가져오기 본문
반응형
로그인을 위한 데이터를 전송하기 위해서는, 사용자가 입력한 값을 받아올 수 있어야 한다.
사용자의 입력은 TextFormField 위젯과 TextEditingController 를 사용하여 가져올 수 있다.
이를 위해서는 3가지 단계가 필요하다.
- TextEditingController 를 생성한다.
- 생성된 TextEditingController 를 TextFormField 에 설정한다.
- 입력 데이터를 사용할 때, TextEditiingController 에서 값을 가져온다.
1. TextEditingController 생성
state widget 에 Controller 를 생성한다. Controller 를 생성했으니 위젯이 해제될 때 같이 사라지도록 dispose 함수에서 같이 해제시켜준다.
class LoginScreen extends StatefulWidget {
LoginScreen({super.key});
@override
State<LoginScreen> createState() => _LoginScreenState();
}
// state widget 을 정의한다.
class _LoginScreenState extends State<LoginScreen> {
final TextEditingController userIdController = TextEditingController();
final TextEditingController userPwController = TextEditingController();
// ID 와 PW 의 값을 가져오기 위해서 각 폼의 Controller 를 생성했다.
@override
void dispose() {
// 위젯이 해제될 때, Controller 도 같이 해제시켜준다.
userIdController.dispose();
userPwController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
...
2. Controller 를 TextFormField 에 설정해준다.
생성된 Controller 를 값을 불러오길 원하는 TextFormField 에 연결해주면 된다.
@override
Widget build(BuildContext context) {
...
TextFormField(
controller: userIdController, // ID 용 TextFormField 에는 ID 용 Controller 를 설정함.
decoration: InputDecoration(
contentPadding: EdgeInsets.all(18),
hintText: "아이디를 입력하세요.", // 입력에 값이 없을 때 입력을 돕기 위한 텍스트
border: OutlineInputBorder( // TextForm Field 를 선택했을 때의 테두리 색상을 설정함.
borderSide:
BorderSide(color: Colors.blue),
),
),
),
...
TextFormField(
controller: userPwController, // PW 용 TextFormField 에는 PW 용 Controller 를 설정함.
obscureText: true, // 사용자 입력한 부분이 *로 보이도록 설정해줌
decoration: InputDecoration(
contentPadding: EdgeInsets.all(18),
hintText: "비밀번호를 입력하세요.", // 입력에 값이 없을 때 입력을 돕기 위한 텍스트
border: OutlineInputBorder( // TextForm Field 를 선택했을 때의 테두리 색상을 설정함.
borderSide:
BorderSide(color: Colors.blue), // Custom color
),
),
...
3. 입력된 값을 Controller 에서 불러온다.
버튼을 누르면 그 값을 알람창으로 보여주도록 하기 위해 버튼을 생성했다.
Controller 에 저장된 값은 controller.text 로 가져올 수 있다.
예를들어, userIdController 에 입력된 값은 userIdController.text 로 가져올 수 있다.
...
ElevatedButton(
onPressed: () {
showDialog(
// 버튼을 누르면 웨젯에서 알림으로 그 값을 보여주도록 설정해준다.
context: context,
builder: (context) {
return AlertDialog(
content: Text(
"ID : ${userIdController.text}, PW :${userPwController.text}"),
);
},
);
},
child: Text('LOGIN'),
)
...
반응형
'Flutter (플러터)' 카테고리의 다른 글
[Flutter] vs code 에서 code generation 파일 그룹핑하기(File Nesting) (0) | 2023.08.21 |
---|---|
[Flutter] Flask 서버로 로그인 데이터 전송하기 (0) | 2023.08.09 |
Flask 서버 토큰 테스트 시, Postman 의 다른 API 에 토큰 값 자동 갱신 (0) | 2023.08.08 |
토큰 기능 테스트를 위한 간단한 Flask 서버 만들기 (0) | 2023.08.08 |
[Flutter] Inkwell, 터치가능한 위젯으로 변경 (vs GestureDetector) (0) | 2023.08.06 |
Comments