[英]Pass only the specified optional params to an underlying widget
假設我有一個簡單的函數,它接受一個指向 svg 圖像的 URL 並返回一個小部件:
Widget loadImage(String url, { height, width }) {
// Wrap URL in an SvgPicture and return
return SvgPicture.network(url)
}
僅當定義了width
和height
參數時, SvgPicture
才想將它們應用於SvgPicture
。 像這樣(盡管這顯然會導致語法錯誤):
Widget loadImage(String url, { height, width }) {
// Wrap URL in an SvgPicture and return
return SvgPicture.network(
url,
if(height) height : height, // <--
if(width) width : width, // <--
)
}
我該怎么做呢?
如果參數是可選的,則意味着它可以為空。 因此,接收器函數應確保它是否為空。
所以,你可以簡單地使用
Widget loadImage(String url, {double height,double width }) {
return SvgPicture.network(
url,
height: height,
width: width
)
}
沒有辦法不能有條件地傳遞參數。 如果您希望SvgPicture
小部件使用其默認height
和width
(如果有),則可以將null
傳遞給這些參數。 在這種情況下,將null
傳遞給height
和width
與在SvgPicture
中根本不使用這些參數具有完全相同的效果。
因此,最易讀的方法是:
Widget loadImage(String url, {double height, double width}) {
return SvgPicture.network(
url,
height: height,
width: width
)
}
作為旁注,我建議始終在函數中對參數進行類型注釋,即聲明 height 和 width 是double
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.