繁体   English   中英

仅将指定的可选参数传递给底层小部件

[英]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)
}

当定义了widthheight参数时, 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小部件使用其默认heightwidth (如果有),则可以将null传递给这些参数。 在这种情况下,将null传递给heightwidth与在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM