[英]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.