簡體   English   中英

Flutter function 帶命名和可選參數

[英]Flutter function with named and optional parameters

我有一個 function 應該有三個required的,最好是named參數。 最后一個(“ finished ”)應該是optional的。 我試過這樣:

static void showOverlay(BuildContext context, String text, bool successfull,
  [VoidCallback? finished]) {}

但 Flutter 抱怨:

避免位置 boolean 參數

奇怪的是,它只是在抱怨bool successfull 我在這里做錯了什么,我該如何解決這個問題?

默認情況下,命名參數是可選的。 因此,在您的情況下,它將是:

static void showOverlay({BuildContext context, String text, bool successfull, VoidCallback? finished}) {}

請注意構造函數中的 {},這使您的參數命名和可選。 通過在聲明前使用@required,您可以區分需要和不需要。

命名參數是可選的,除非它們被特別標記為 required 下面,所有四個參數都已命名。 三個是required的,其中一個是可選的。

static void showOverlay({required BuildContext context, required String text, 
  required bool successfull, VoidCallback? finished}) {}

您可以使用位置參數像這樣使用它

 void showOverlay(BuildContext context, String text, bool successful, [VoidCallback finished]) {}

或者像這樣使用命名參數

void showOverlay({@required BuildContext context, @required String text, @required bool successful, VoidCallback finished}) {}

和 dart 抱怨因為命名參數是 dart 文檔中提到的最佳實踐

位置 boolean 參數是一種不好的做法,因為它們非常模棱兩可。 使用命名的 boolean 參數更具可讀性,因為它固有地描述了 boolean 值所代表的內容。

壞的:

Task(true);
Task(false);
ListBox(false, true, true);
Button(false);

好的:

Task.oneShot();
Task.repeating();
ListBox(scroll: true, showScrollbars: true);
Button(ButtonState.enabled);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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