我想擴展TextButton,代碼如下:
class KMTextButton extends TextButton {
const KMTextButton({
鑰匙?
required VoidCallback? onPressed,
VoidCallback? onLongPress,
ButtonStyle? style,
FocusNode? focusNode。
bool autofocus = false。
Clip clipBehavior = Clip.none,
required Widget child,
}) : super(
key: 關鍵。
onPressed: (){
print('onPressedFuncInvoked'/span>)。
if (onPressed != null) {
onPressed()。
}
},
onLongPress: onLongPress,
style: 樣式。
focusNode: focusNode,
autofocus: 自動對焦。
clipBehavior: clipBehavior,
child: 孩子。
);
}
然后我將得到一個錯誤無效的常量值,那么我怎么做呢?
uj5u.com熱心網友回復:
從你的代碼中洗掉const關鍵字。
像這樣
class KMTextButton extends TextButton {
KMTextButton({
鑰匙?
required VoidCallback? onPressed,
VoidCallback? onLongPress,
ButtonStyle? style,
FocusNode? focusNode。
bool autofocus = false。
Clip clipBehavior = Clip.none,
required Widget child,
}) : super(
key: 關鍵。
onPressed: (){
print('onPressedFuncInvoked'/span>)。
if (onPressed != null) {
onPressed()。
}
},
onLongPress: onLongPress,
style: 樣式。
focusNode: focusNode,
autofocus: 自動對焦。
clipBehavior: clipBehavior,
child: 孩子。
);
}
uj5u.com熱心網友回復:
你正在呼叫一個non-const super,因為onPressed將在運行時被評估。所以你要么從你的自定義按鈕類建構式中洗掉const關鍵字,要么你就把onPressed回呼原封不動地傳遞給super(onPressed:onPressed),因為我認為你現在的if陳述句是一個不必要的邏輯。
你所做的事情似乎也是多余的。如果你想創建一個自定義版本的TextButton,你最好將其合成為一個新的部件,就像這樣:
class CustomTextButton extends StatelessWidget{
const CustomTextButton({
key? key。
required this.child。
this.onPressed,
}) : super(key: 關鍵)。
/>根據需要添加更多的欄位。
final 小工具的孩子。
final VoidCallback? onPressed;
@override
Widget build(BuildContext context) {
//自定義你的按鈕。
return TextButton(onPressed: onPressed, child: child)。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/332611.html
標籤:
