文本按鈕(TextButton)
文本按鈕是沒有邊框的按鈕,當點擊時會有漣漪效果。
TextButton(onPressed: () {// 點擊按鈕后要執行的代碼print('文本按鈕被點擊了');},child: Text('點擊我'),
)
手勢檢測器(GestureDetector)
GestureDetector 能夠檢測多種手勢,不只是點擊,還包括滑動、長按等。
GestureDetector(onTap: () {// 點擊組件后要執行的代碼print('組件被點擊了');},onLongPress: () {// 長按組件后要執行的代碼print('組件被長按了');},child: Container(width: 200,height: 50,color: Colors.green,child: Center(child: Text('手勢檢測容器')),),
)
處理帶參數的點擊事件
要是你需要在點擊事件處理函數中傳遞參數,可以使用閉包來實現。
void handleClick(String value) {print('點擊的值是: $value');
}// 在UI中使用
ElevatedButton(onPressed: () => handleClick('按鈕1'),child: Text('按鈕1'),
)
文本輸入監聽
監聽用戶在文本框中的輸入內容,常用于表單驗證、搜索等場景。
TextField(onChanged: (text) {// 文本內容變化時觸發print('輸入的內容: $text');},onSubmitted: (text) {// 用戶按下回車鍵時觸發print('提交的內容: $text');},
)
滾動監聽
監聽ListView
、GridView
等滾動組件的位置,可用于實現下拉刷新、加載更多、吸頂效果等。
ScrollController _controller = ScrollController();@override
void initState() {super.initState();_controller.addListener(() {// 滾動位置變化時觸發print('當前滾動位置: ${_controller.position.pixels}');// 判斷是否滾動到底部if (_controller.position.pixels == _controller.position.maxScrollExtent) {print('已滾動到底部');// 加載更多數據...}});
}@override
Widget build(BuildContext context) {return ListView.builder(controller: _controller,itemCount: 100,itemBuilder: (context, index) => ListTile(title: Text('Item $index')),);
}