Flutter onPressed Event 輕度解析

Flutter onPressed Event 輕度解析

onPressed event,是傳入一個function 且是不帶有回傳值的,假設我們傳入一個null時,button 是處於不可按狀況

@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("First App"),
),
body: Column(children: <Widget>[
Text("你喜歡小娜嗎?"),
RaisedButton(child: Text("喜歡"),onPressed: null),
RaisedButton(child: Text("不喜歡"),onPressed: null),

],),
),
);
}
你知道拍手不止可以拍一下嗎?若對您有幫助請幫我拍手哦^^

那如果我們想要他點按扭後,執行某一個function 時,應該怎麼做呢?
我們先來看一下官方的文件

你知道拍手不止可以拍一下嗎?若對您有幫助請幫我拍手哦^^

這邊傳入一個VoidCallback,也就是說我們必須傳入一個function的參照,

而function的參照就是function name 不加()

class MyApp extends StatelessWidget {

answerTheQuestion(){
print("Button is pressed");
}

@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("First App"),
),
body: Column(children: <Widget>[
Text("你喜歡小娜嗎?"),
RaisedButton(child: Text("喜歡"),onPressed: answerTheQuestion), // function的參照
RaisedButton(child: Text("不喜歡"),onPressed: answerTheQuestion), // function的參照

],),
),
);
}
}

另外,如果這個function 只執行一次,而且只有一行我們可以用fat-arrow來撰寫,格式是 () => command code

RaisedButton(child: Text("喜歡"),onPressed: () => print("Button is pressed")),
RaisedButton(child: Text("不喜歡"),onPressed: () => print("Button is pressed")),

又或者您也可以使用匿名函數來實現(anonymous function)

使用方式是: () {…}

RaisedButton(child: Text("喜歡"),onPressed: (){
print("Button is pressed");
})

以上的的撰寫方式都不會被立即執行,都是傳入一個function的參照

你知道拍手不止可以拍一下嗎?若對您有幫助請幫我拍手哦^^