[英]Dart set default value for parameter
在Flutter
框架中,我試圖將參數的默認值設置為borderRadius
,在這個示例中我如何實現它? 當我嘗試設置時,我得到Default values of an optional parameter must be constant
錯誤,例如:
class SimpleRoundButton extends StatelessWidget {
final BorderRadius borderRadius;
SimpleRoundButton({
}):this.borderRadius = BorderRadius.circular(30.0);
}
class SimpleRoundButton extends StatelessWidget {
final BorderRadius borderRadius= BorderRadius.circular(30.0);
SimpleRoundButton({
this.borderRadius,
});
}
class SimpleRoundButton extends StatelessWidget {
final BorderRadius borderRadius;
SimpleRoundButton({
this.borderRadius= BorderRadius.circular(30.0)
});
}
所有這些樣本都是不正確的
BorderRadius.circular()
不是 const 函數,因此您不能將其用作默認值。
為了能夠設置常量圓形邊框,您可以使用BorderRadius.all
函數,其常量如下所示:
class SimpleRoundButton extends StatelessWidget {
final BorderRadius borderRadius;
SimpleRoundButton({
this.borderRadius: const BorderRadius.all(Radius.circular(30.0))
});
@override
Widget build(BuildContext context) {
return null;
}
}
Gunhan 的回答解釋了如何設置默認BorderRadius
。
通常,如果沒有可用的const
構造函數,您可以改為使用null
默認值(或其他一些適當的標記值),然后稍后設置所需的值:
class Foo {
Bar bar;
Foo({Bar? bar}) : bar = bar ?? Bar();
}
請注意,與直接設置默認值相比,使用此方法顯式傳遞null
作為參數會有所不同。 也就是說,使用這種方法的Foo(bar: null)
會將成員變量bar
初始化為Bar()
,而對於正常的默認值,它將被初始化為null
並要求該成員可以為空。 (但是,在某些情況下,這種方法的行為可能更受歡迎。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.