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