您好,登錄后才能下訂單哦!
使用flutter怎么實現一個點擊事件?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
在Android中,您可以通過調用方法setOnClickListener將OnClick綁定到按鈕等view上。
在Flutter中,有兩種方法:
1.如果Widget支持事件監聽,則可以將一個函數傳遞給它并進行處理。例如,RaisedButton有一個onPressed參數
@override Widget build(BuildContext context) { return new RaisedButton( onPressed: () { print("click"); }, child: new Text("Button")); }
2.如果Widget不支持事件監聽,則可以將該Widget包裝到GestureDetector中,并將處理函數傳遞給onTap參數
class SampleApp extends StatelessWidget { @override Widget build(BuildContext context) { return new Scaffold( body: new Center( child: new GestureDetector( child: new FlutterLogo( size: 200.0, ), onTap: () { print("tap"); }, ), )); } }
2.1.使用GestureDetector,可以監聽多種手勢
(1)Tap
onTapDown
onTapUp
onTap
onTapCancel
(2)Double tap
onDoubleTap 用戶快速連續兩次在同一位置輕敲屏幕
(3)長按
onLongPress
(4)垂直拖動
onVerticalDragStart
onVerticalDragUpdate
onVerticalDragEnd
(5)水平拖拽
onHorizontalDragStart
onHorizontalDragUpdate
onHorizontalDragEnd
2.2.示例:監聽FlutterLogo的雙擊事件,雙擊時使其旋轉。
void main() => runApp(DemoApp()); class DemoApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( title: '導航演示1', home: new MyAppHome(), ); } } class MyAppHome extends StatefulWidget{ @override _MyAppHomeState createState() => _MyAppHomeState(); } class _MyAppHomeState extends State<MyAppHome> with TickerProviderStateMixin{ AnimationController controller; CurvedAnimation curve; @override void initState() { super.initState(); controller = new AnimationController( duration: const Duration(milliseconds: 2000), vsync: this); curve = new CurvedAnimation(parent: controller, curve: Curves.easeIn); } @override Widget build(BuildContext context) { return new Scaffold( body: new Center( child: new GestureDetector( child: new RotationTransition( turns: curve, child: new FlutterLogo( size: 200.0, )), onDoubleTap: () { if (controller.isCompleted) { controller.reverse(); } else { controller.forward(); } }, ), )); } }
看完上述內容,你們掌握使用flutter怎么實現一個點擊事件的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。