目錄
1. 引言
2. TextField 的基本用法
3. 主要屬性
4. 自定義 TextField 樣式
4.1 自定義邊框與提示文本
4.2 增加前綴/后綴圖標
4.3 只允許輸入數字
4.4?表單驗證系統
4.5?動態樣式修改?
4.6??防抖搜索(Debounce)
5. 結論
相關推薦
1. 引言
????????在 Flutter 中,TextField
是最常用的文本輸入組件,用于接受用戶輸入,如搜索框、表單、聊天輸入等。它支持多種自定義樣式、輸入格式、事件監聽等功能。本文將介紹 TextField
的基本用法、主要屬性及自定義方法。
2. TextField 的基本用法
? ? TextField
主要通過 controller
獲取輸入值,并支持 onChanged
監聽輸入。
TextField(decoration: InputDecoration(labelText: '請輸入文本',border: OutlineInputBorder(),),onChanged: (value) {print('輸入內容: $value');},
)
3. 主要屬性
屬性 | 說明 |
---|---|
controller | 監聽輸入框內容并獲取值 |
decoration | 自定義輸入框外觀,如邊框、標簽等 |
keyboardType | 設置鍵盤類型,如文本、數字等 |
obscureText | 是否隱藏輸入內容(密碼) |
maxLines | 設置輸入框的行數 |
onChanged | 輸入內容變化時的回調 |
onSubmitted | 用戶點擊回車(提交)時觸發 |
示例:
TextField(keyboardType: TextInputType.number,obscureText: true,maxLines: 1,onSubmitted: (value) => print('提交: $value'),
)
4. 自定義 TextField 樣式
4.1 自定義邊框與提示文本
TextField(decoration: InputDecoration(hintText: '請輸入內容',border: OutlineInputBorder(),),
)
4.2 增加前綴/后綴圖標
TextField(decoration: InputDecoration(prefixIcon: Icon(Icons.search),suffixIcon: Icon(Icons.clear),),
)
4.3 只允許輸入數字
TextField(keyboardType: TextInputType.number,inputFormatters: [FilteringTextInputFormatter.digitsOnly],
)
4.4?表單驗證系統
final _formKey = GlobalKey<FormState>();TextFormField(validator: (value) {if (value!.isEmpty) return '必填字段';if (!RegExp(r'^1[3-9]\d{9}$').hasMatch(value)) return '手機號格式錯誤';return null;}
)
4.5?動態樣式修改?
InputDecoration(prefixIcon: Icon(error ? Icons.error : Icons.lock),enabledBorder: _buildBorder(Colors.grey),focusedBorder: _buildBorder(Colors.blue),errorBorder: _buildBorder(Colors.red),
)
4.6??防抖搜索(Debounce)
TextField(onChanged: (value) {_debounce.run(() => _searchAPI(value));},
)class Debouncer {final Duration delay;Timer? _timer;void run(VoidCallback action) {_timer?.cancel();_timer = Timer(delay, action);}
}
5. 結論
? ? TextField
是 Flutter 中強大且靈活的輸入組件,適用于各種用戶輸入場景。通過 decoration
和 keyboardType
等屬性可以自定義外觀和交互方式,結合 controller
可實現更豐富的輸入功能,提升用戶體驗。
-
多平臺適配:調整iOS/Android的滾動穿透行為
-
無障礙支持:添加語義化標簽(semanticLabel)
-
性能優化:避免在onChanged中執行重計算
-
輸入掩碼:集成
masked_text
實現銀行卡號格式:XXXX XXXX XXXX XXXX。
相關推薦
Flutter 邊框按鈕:OutlinedButton 完全手冊與設計最佳實踐-CSDN博客文章瀏覽閱讀804次,點贊32次,收藏24次。OutlinedButton 是一種帶有邊框但無背景色的按鈕,適用于強調次要操作。它相比 ElevatedButton 少了背景色,相比 TextButton 多了一個邊框,適用于不希望 UI 過于突出的場景,如“取消”按鈕或次要操作按鈕。本文是關于 OutlinedButton 的文章,包括基本用法、主要屬性、自定義樣式(顏色、邊框、形狀等)及示例代碼。https://shuaici.blog.csdn.net/article/details/146068404Flutter FloatingActionButton 從核心用法到高級定制-CSDN博客文章瀏覽閱讀620次,點贊20次,收藏15次。本文是關于 FloatingActionButton 的文章,包括基本用法、主要屬性、自定義樣式(顏色、形狀、大小等)及示例代碼。
https://shuaici.blog.csdn.net/article/details/146068462