使用 FocusScopeNode 在 TextFormFields 之間輕松移動(dòng)焦點(diǎn)

      網(wǎng)友投稿 689 2025-04-02

      Form和TextFormField是在 flutter 中輸入文本時(shí)非常有用的小部件。

      我們可以提供一種在鍵盤上按“下一步”時(shí)移動(dòng)輸入焦點(diǎn)的便捷方法嗎?

      使用FocusScopeNode,這是非常容易做到的。

      假設(shè)您有一個(gè)電子郵件和密碼輸入表單,如下所示:

      import 'package:flutter/material.dart'; class EmailPasswordSignInForm extends StatefulWidget { @override _EmailPasswordSignInFormState createState() => _EmailPasswordSignInFormState(); } class _EmailPasswordSignInFormState extends State { final FocusScopeNode _node = FocusScopeNode(); final GlobalKey _formKey = GlobalKey(); @override void dispose() { _node.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("FocusScopeNode "), ), body: Container( child: Form( key: _formKey, child: FocusScope( node: _node, child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ // email TextFormField( decoration: InputDecoration( labelText: 'Email', hintText: 'https://luckly.work/', ), textInputAction: TextInputAction.next, keyboardType: TextInputType.emailAddress, // move to the next field onEditingComplete: _node.nextFocus, ), // password TextFormField( decoration: InputDecoration( labelText: 'Password', ), obscureText: true, textInputAction: TextInputAction.done, // move to the next field onEditingComplete: _node.nextFocus, ), // submit RaisedButton( child: Text('Sign In'), onPressed: () {/* submit code here */}, ), ], ), ), ), ), ); } }

      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

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      使用 FocusScopeNode 在 TextFormFields 之間輕松移動(dòng)焦點(diǎn)

      62

      63

      64

      65

      66

      67

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:JDK又在寫B(tài)ug!告訴你為何Java NIO的ByteBuffer這么垃圾!
      下一篇:查找框不出來怎么辦(為什么查找框出不來)
      相關(guān)文章
      亚洲第一精品福利| 亚洲视频网站在线观看| 亚洲AV无码久久精品成人| 亚洲乱码无人区卡1卡2卡3| 亚洲美女人黄网成人女| 亚洲综合区图片小说区| 久久综合亚洲色HEZYO社区| 久久亚洲精品无码AV红樱桃| 久久精品九九亚洲精品| 亚洲国产第一页www| 亚洲一区二区三区电影| 亚洲国产精品免费视频| 久久精品国产亚洲AV香蕉| 亚洲高清在线mv| 亚洲国产成人精品无码区在线网站 | 亚洲av永久无码精品表情包| 国产AV无码专区亚洲AVJULIA | 亚洲一区二区三区无码影院| 亚洲日本va午夜中文字幕久久| AV在线亚洲男人的天堂| 亚洲AV蜜桃永久无码精品| 亚洲国产婷婷香蕉久久久久久| 中文字幕亚洲综合久久男男| 亚洲精品无码成人片久久| 久久精品国产亚洲AV麻豆不卡 | 亚洲国产二区三区久久| 亚洲视频免费播放| 亚洲最大成人网色香蕉| 亚洲综合激情五月色一区| 久久精品国产亚洲AV未满十八| 亚洲国产成人VA在线观看| AV在线亚洲男人的天堂| 亚洲av永久无码精品国产精品| 精品亚洲国产成AV人片传媒| 亚洲乱码中文字幕小综合| 亚洲午夜久久久精品电影院| 亚洲色大成网站www永久男同| 国产精品亚洲综合一区在线观看| 国产成人毛片亚洲精品| 亚洲Av永久无码精品三区在线| 亚洲精品日韩专区silk|