具有命名参数和可选参数的 Flutter 函数

Flutter function with named and optional parameters

我有一个函数应该有三个 required 和最好的 named 参数。最后一个(“finished”)应该是optional。我这样试过:

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

但 Flutter 正在抱怨:

Avoid positional boolean parameters

奇怪的是,它只是在抱怨 bool successfull。我在这里做错了什么,我该如何解决?

命名参数默认是可选的。所以在你的情况下它将是:

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

注意构造函数中的 {},这使您的参数命名且可选。通过在声明前使用@required,您可以区分必需和非必需。

Named parameters are optional unless they’re specifically marked as 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 文档中提到的最佳实践

位置布尔参数是一种不好的做法,因为它们非常模糊。使用命名的布尔参数更具可读性,因为它本质上描述了布尔值代表的内容。

差:

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

好:

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