具有命名参数和可选参数的 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);
我有一个函数应该有三个 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);