Flutter——Widget(4)、TextField
6056 단어 FlutterFlutter 노트
TextEditingController userNameController = TextEditingController();
,userNameController.text에서 해당 TextField 컨트롤의 입력 내용을 가져옵니다.text,, number, phone, datetime, emailAddress, url
등의 값을 가져옵니다.done、go、search、send、next
등의 값을 가져옵니다.변경 유형의 리턴 키를 눌렀을 때의 응답 이벤트를 지정하기 위해 onEditingComplete를 설정해야 합니다.next로 지정하면 암호 입력 상자 onEditingComplete: () => FocusScope.of(context).requestFocus(pwdNode)
로 이동하는 방법을 지정합니다. 그 중에서 FocusNode pwdNode = FocusNode();
는 암호의 입력 컨트롤에 지정됩니다. focusNode: pwdNode
icon: Icon(Icons.account_box)
는 입력 상자 왼쪽에 시스템이 가지고 있는 계정 아이콘을 표시한다.입력 상자가 활성화된 상태에서도 아이콘의 색상이 변경됩니다.prefix: Text(" ")
. prefixText: "+86"
.프로세스 중에 해결된 버그:
1. Column을 SingleChildScrollView로 중첩하는 입력 상자가 있습니다.그렇지 않으면 입력 키보드를 팝업할 때 버그가 초과됩니다:bottom overflowed by X PIXELS.
2. 실행 안드로이드 오류: Flutter Socket Exception: Failed to create server socket(OS Error: Permission denied,errno = 13),address = 127.0.0.1,port = 0.android 프로젝트 안드로이드 매니페스트에서.xml 설정
3. AppBar에서 제목은 기본적으로 왼쪽으로 표시되고 속성을 설정하여 제목을 수평으로 가운데로 설정합니다.
centerTitle: true, // title
로그인 인터페이스를 구현하는 코드는 다음과 같습니다.
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
class Login extends StatefulWidget {
@override
State createState() => LoginState();
}
class LoginState extends State {
//
final TextEditingController userNameCtrl = TextEditingController();
//
final TextEditingController passwordCtrl = TextEditingController();
//
FocusNode pwdNode = FocusNode();
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
title: Text(" "),
centerTitle: true, // title
leading: new BackButton()),
// , SingleChildScrollView Column。 bug。bottom overflowed by X PIXELS
body: SingleChildScrollView(
child: Column(
children: [
new Padding(
padding: EdgeInsets.fromLTRB(40, 24, 40, 0),
child: TextField(
controller: userNameCtrl,
//
keyboardType: TextInputType.phone,
// , 。 。
textInputAction: TextInputAction.next,
// :
onEditingComplete: () =>
FocusScope.of(context).requestFocus(pwdNode),
maxLength: 11,
decoration: InputDecoration(
icon: Icon(Icons.account_circle),
labelText: " ",
// helperText: " ", //
hintText: "11 ",
// prefixIcon: Icon(Icons.account_circle), //
// prefix: Text(" "),
// prefixText: "+86",
),
),
),
new Padding(
padding: EdgeInsets.fromLTRB(40, 4, 40, 0),
child: TextField(
controller: passwordCtrl,
focusNode: pwdNode,
keyboardType: TextInputType.text,
// ,
textInputAction: TextInputAction.done,
maxLength: 11,
obscureText: true,
// ,
decoration: InputDecoration(
icon: Icon(Icons.lock_outline),
labelText: " ",
// suffixIcon: Icon(Icons.visibility_off),
// suffixText: "( )",
),
),
),
Padding(
padding: EdgeInsets.fromLTRB(40, 36, 40, 0),
child: Row(children: [
new Expanded(
child: RaisedButton(
color: Colors.blue,
onPressed: () {
doLogin();
},
child: new Text(
" ",
style: TextStyle(
color: Colors.white,
),
),
))
]),
),
],
)));
}
void doLogin() {
if (userNameCtrl.text.isEmpty || passwordCtrl.text.isEmpty) {
Fluttertoast.showToast(msg: " ");
} else {
Fluttertoast.showToast(
msg: " : ${userNameCtrl.text}, : ${passwordCtrl.text}");
}
}
}
효과 실현: 본문 원본 코드:TAG, 원본 코드를 다운로드하려면 tag를 지정해야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Flutter】DateTime 전월의 일수를 취득한다달의 일수를 취득할 필요가 있어, 의외로 수요 있을까라고 생각했으므로 비망록 정도에 남겨 둡니다. DateTime 날짜에 0을 입력하면 전월 DateTime이 됩니다. 2021년 3월 0일 = 2021년 2월 28일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.