簡體   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