網站首頁 編程語言 正文
textField用于文本輸入,它提供了很多屬性:
const TextField({ ... TextEditingController controller, FocusNode focusNode, InputDecoration decoration = const InputDecoration(), TextInputType keyboardType, TextInputAction textInputAction, TextStyle style, TextAlign textAlign = TextAlign.start, bool autofocus = false, bool obscureText = false, int maxLines = 1, int maxLength, this.maxLengthEnforcement, ToolbarOptions? toolbarOptions, ValueChanged<String> onChanged, VoidCallback onEditingComplete, ValueChanged<String> onSubmitted, List<TextInputFormatter> inputFormatters, bool enabled, this.cursorWidth = 2.0, this.cursorRadius, this.cursorColor, this.onTap, ... })
屬性 | 類型 | 說明 |
---|---|---|
controller | TextEditingController | 控制器,通過它可以獲取文本內容,監聽編輯文本事件,大多數情況下我們需要主動提供一個控制器 |
focusNode | InputDecoration | 焦點控制 |
decoration | InputDecoration | 用于控制文本的外觀,如提示文本、背景色、邊框等 |
keyboardType | TextInputType | 用于設置輸入框的默認鍵盤類型 |
textInputAction | TextInputAction | 鍵盤動作圖標按鈕,他是一個枚舉值 |
style | TextStyle | 正在編輯的文本樣式 |
textAlign | TextAlign | 文本框的在水平方向的對齊方式 |
autofocus | bool | 是否自動獲取焦點 |
obscureText | bool | 是否隱藏正在編輯的文本,用于密碼輸入場景 |
maxLines | int | 輸入框的最大行數 |
maxlength | int | 文本框的最大長度 |
maxLengthEnforcement | 當文本長度超出文本框長度時如何處理 | |
toolbarOptions | ToolbarOptions | 長按時出現的選項 |
onChange | ValueChanged<String> | 輸入框改變時候的回調函數,也可以通過controller來監聽 |
onEditingComplete | VoidCallback | 輸入完后觸發的回調函數,不接受參數 |
onSubmitted | ValueChanged<String> | 接收ValueChanged<String>的參數 |
inputFormatters | List<TextInputFormatter> | 用于指定輸入格式,可以用于檢驗格式 |
enable | bool | 為bool時,輸入框將變為禁用狀態 |
cursorWidth、cursorRadius和cursorColor | 這三個屬性是用于自定義輸入框光標寬度、圓角和顏色 |
示例:注意提示內容都是在InputDecoration中設置的
void mian()=>runApp(MyApp()); ? class MyApp extends StatelessWidget { ? @override Widget build(BuildContext context) { return MaterialApp( title: "文本輸出框", home:Scaffold( appBar: AppBar(title:const Text("文本輸入框")), body:Column( children:const <Widget>[ TextField( autofocus: true, decoration: InputDecoration( //文本 labelText:"用戶名", //提示信息 hintText: "用戶名或郵箱", //圖標 prefixIcon: Icon(Icons.person), ), //設置最大行數 maxLines: 1, ), TextField( autofocus: true, decoration: InputDecoration( labelText:"密碼", hintText: "您的登錄密碼", prefixIcon: Icon(Icons.lock), ), //隱藏文本 obscureText: true, ), ], ), ) ); } }
監聽事件:
獲取內容的兩種方式:
- 定義兩個變量,用于保存用戶名和密碼,然后再onChanged觸發時,各自保存輸入內容
- 通過Controller直接獲取,onChanged是一種單純的監聽改變事件,但Controller中還有一些其他方法可以使用。
第一種方式:
onChanged: (value){ print("你輸入的內容為$value"); }
第二種方式:
定義一個controller:
TextEditingController _unameController = TextEditingController(); _unameController.addListener(() { print("你輸入的內容為:${_unameController.text}"); });
完整代碼:
void main()=>runApp(MyApp()); ? class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { //定義一個controller TextEditingController _unameController = TextEditingController(); //調用.addListener重寫其中的方法 _unameController.addListener(() { print("你輸入的內容為:${_unameController.text}"); }); return MaterialApp( title: "文本輸出框", home:Scaffold( appBar: AppBar(title:const Text("文本輸入框")), body:Column( children: <Widget>[ TextField( //設置監聽 controller: _unameController, autofocus: true, decoration: const InputDecoration( //文本 labelText:"用戶名", //提示信息 hintText: "用戶名或郵箱", //圖標 prefixIcon: Icon(Icons.person), ), //設置最大行數 maxLines: 1, ), TextField( autofocus: true, decoration:const InputDecoration( labelText:"密碼", hintText: "您的登錄密碼", prefixIcon: Icon(Icons.lock), ), //隱藏文本 obscureText: true, //表單改變事件 onChanged: (value){ print("你輸入的內容為$value"); }, ), ], ), ) ); } }
原文鏈接:https://blog.csdn.net/m0_55721894/article/details/121598084
相關推薦
- 2024-07-18 Spring Security概述快速入門
- 2022-11-06 pandas?dataframe?drop函數介紹_python
- 2022-04-29 Go語言中的并發goroutine底層原理_Golang
- 2023-05-11 Oracle怎么刪除數據,Oracle數據刪除的三種方式_oracle
- 2022-07-16 Mybatis-plus設置某個字段值為null
- 2022-04-19 jQuery下實現等待指定元素加載完畢
- 2022-07-13 IO流詳解之字符流與File類
- 2022-04-28 Python可視化學習之matplotlib內置單顏色_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支