ElevatedButton customBTN(字串測驗,圖示圖示,顏色顏色,雙倍高度,雙倍寬度, passedfunc,)
return ElevatedButton(
style: ElevatedButton.styleFrom(),
child: Text('a'),
onPressed: **passedfunc**,
);
uj5u.com熱心網友回復:
您可以使用VoidCallback或函式作為小部件變數,
class MyW extends StatelessWidget {
final VoidCallback? callback;
const MyW({Key? key, this.callback}) : super(key: key);
@override
Widget build(BuildContext context) {
return ElevatedButton(
style: ElevatedButton.styleFrom(),
child: Text('a'),
onPressed: callback,
);
}
}
每當你使用這個小部件時,你都會得到一個回呼函式
MyW(
callback: () {},
),
您可以選擇 function 或 typedef 來傳遞資料。
class MyW extends StatelessWidget {
final Function(int data) myFunc;
final VoidCallback? callback;
const MyW({
Key? key,
required this.myFunc,
this.callback,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return ElevatedButton(
style: ElevatedButton.styleFrom(),
child: Text('a'),
onPressed: () {
myFunc(1);
if (callback != null) callback!();
},
);
}
}
和用例
MyW(
callback: () {},
myFunc: (data) {},
),
如果您使用 StatefulWidget呼叫方法使用widget.YourFunction
可能重復和更多關于傳遞函式
將帶引數的函式傳遞給 VoidCallback
更多關于dart 中的函式。
uj5u.com熱心網友回復:
class MyCustomWidget extends StatelessWidget {
final Function onPress;
const MyCustomWidget({Key? key, this.onPress}) : super(key: key);
@override
Widget build(BuildContext context) {
return ElevatedButton(
style: ElevatedButton.styleFrom(),
child: Text('a'),
onPressed: onPress.call, // or onPressed: () => onPress.call(),
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/494754.html
