簡體   English   中英

Dart 為參數設置默認值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM