在dart / flutter中调用函数时传递下划线_“ _”(_)是什么意思?
在阅读飞镖代码时,我经常看到一些仅带有下划线_参数调用的函数。它使我烦恼了一段时间,并且由于flutter改善了其分析消息,因此我有一些线索…但是我觉得我不太了解这个概念:-(
昨天我为测试写了以下内容:
when(mockDevice.getLocalPath()).thenAnswer(() async => fileFolder);
并获得以下分析
错误:参数类型’Future Function()’不能分配给参数类型’Future Function(Invocation)’。
添加下划线时,它可以正常工作。
when(mockDevice.getLocalPath()).thenAnswer((_) async => fileFolder);
我遇到的最令人恐惧的示例来自@remi rousselet编写的提供程序包
builder: (_, counter, __) => Translations(counter.value),
来自提供者示例:
Widget build(BuildContext context) { return MultiProvider(
providers: [
ChangeNotifierProvider(builder: (_) => Counter()),
ProxyProvider<Counter, Translations>(
builder: (_, counter, __) => Translations(counter.value),
),
],
child: Foo(),
);
}
class Translations {
const Translations(this._value);
final int _value;
String get title => 'You clicked $_value times';
}
回答:
下划线通常表示您将不在块内使用该参数,这只是编写代码的好方法,例如:
method(int useful, int useless) { // say I am only going to use 'useful' in this block
}
上面的代码也可以写成:
method(int useful, int _) { // using '_' means I'm not going to use 2nd parameter in the block
}
现在回答您的问题:
builder: (_, counter, __) => Translations(counter.value),
意味着你有3个参数_
,counter
并且__
,只有counter
是你使用的是什么,所以第一和第三参数,标注_
和__
。这是编写代码的更简洁的方法。
以上是 在dart / flutter中调用函数时传递下划线_“ _”(_)是什么意思? 的全部内容, 来源链接: utcz.com/qa/435852.html