在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

回到顶部