feat: textField 新增 focusNode 設置

新增 focusNode 用以控制游標目標位置
This commit is contained in:
JingChiang
2024-09-08 20:21:01 +08:00
parent 7c33bd99d9
commit 7e6b0df97f

View File

@@ -18,6 +18,7 @@ class RegisterPage extends StatefulWidget {
} }
class _RegisterPageState extends State<RegisterPage> { class _RegisterPageState extends State<RegisterPage> {
late FocusNode _nameFocusNode, _emailFocusNode, _passwordFocusNode, _codeFocusNode;
final TextEditingController _nameController = TextEditingController(); final TextEditingController _nameController = TextEditingController();
final TextEditingController _emailController = TextEditingController(); final TextEditingController _emailController = TextEditingController();
final TextEditingController _passwordController = TextEditingController(); final TextEditingController _passwordController = TextEditingController();
@@ -33,6 +34,10 @@ class _RegisterPageState extends State<RegisterPage> {
void initState() { void initState() {
super.initState(); super.initState();
_fetchData(); _fetchData();
_nameFocusNode = FocusNode();
_emailFocusNode = FocusNode();
_passwordFocusNode = FocusNode();
_codeFocusNode = FocusNode();
} }
void _fetchData() async { void _fetchData() async {
@@ -124,7 +129,6 @@ class _RegisterPageState extends State<RegisterPage> {
databaseName: 'care', databaseName: 'care',
); );
await conn.connect(); await conn.connect();
try { try {
String name = _nameController.text; String name = _nameController.text;
String email = _emailController.text; String email = _emailController.text;
@@ -172,8 +176,13 @@ class _RegisterPageState extends State<RegisterPage> {
@override @override
void dispose() { void dispose() {
_timer?.cancel();
super.dispose(); super.dispose();
_timer?.cancel();
_nameFocusNode.dispose();
_emailFocusNode.dispose();
_passwordFocusNode.dispose();
_codeFocusNode.dispose();
} }
@override @override
@@ -207,6 +216,7 @@ class _RegisterPageState extends State<RegisterPage> {
SizedBox(height: 20), SizedBox(height: 20),
TextField( TextField(
controller: _nameController, controller: _nameController,
focusNode: _nameFocusNode,
decoration: InputDecoration( decoration: InputDecoration(
border: OutlineInputBorder(), border: OutlineInputBorder(),
prefixIcon: Icon(Icons.person_outlined), prefixIcon: Icon(Icons.person_outlined),
@@ -216,6 +226,7 @@ class _RegisterPageState extends State<RegisterPage> {
SizedBox(height: 20), SizedBox(height: 20),
TextField( TextField(
controller: _emailController, controller: _emailController,
focusNode: _emailFocusNode,
decoration: InputDecoration( decoration: InputDecoration(
border: OutlineInputBorder(), border: OutlineInputBorder(),
prefixIcon: Icon(Icons.email_outlined), prefixIcon: Icon(Icons.email_outlined),
@@ -226,6 +237,7 @@ class _RegisterPageState extends State<RegisterPage> {
SizedBox(height: 20), SizedBox(height: 20),
TextField( TextField(
controller: _passwordController, controller: _passwordController,
focusNode: _passwordFocusNode,
decoration: InputDecoration( decoration: InputDecoration(
border: OutlineInputBorder(), border: OutlineInputBorder(),
prefixIcon: Icon(Icons.lock_outlined), prefixIcon: Icon(Icons.lock_outlined),
@@ -251,6 +263,7 @@ class _RegisterPageState extends State<RegisterPage> {
Expanded( Expanded(
child: TextField( child: TextField(
controller: _codeController, controller: _codeController,
focusNode: _codeFocusNode,
decoration: InputDecoration( decoration: InputDecoration(
labelText: '驗證碼', labelText: '驗證碼',
hintText: '填寫驗證碼', hintText: '填寫驗證碼',