Dart中的“:“是什么意思或做什么?

6yt4nkrj  于 2023-06-19  发布在  其他
关注(0)|答案(3)|浏览(134)

我一直在试图得到一个明确的解释是什么:在dart中表示。
据我所知,它似乎是某种运算符,但我无法清楚地解释它到底是做什么的。
我知道它习惯了把东西分配给其他东西,但我不确定具体情况。
我试着google了一下,没有运气。
我试过搜索dart文档。
https://dart.dev/guides/language/language-tour#operators
我知道它被用作条件表达式的一部分,如下所示:
https://dart.dev/guides/language/language-tour#conditional-expressions
以下是它如何使用的示例:
实施例1:

class someBloc extends Bloc<someEvent, someState> {
    someBloc() : super(someState.initial());
}

实施例2:

class someClass {
  final String requestType;
  final String name; 
   
  factory someClass.fromJson(Map<String, dynamic> json) {
        return SomeClass(
            requestType: json['Type'],
            name: json['Name']);
      }
}
plicqrtu

plicqrtu1#

在实施例1和2中:
:用于设置命名参数。例如,假设我想创建一个Card小部件。card小部件可选地接受一个名为elevationnamed参数。因此,我可以这样做:

Card(
  elevation: 4.0,
)

:的另一种使用方式是编写快速条件表达式。

final String isMyListEmpty = myList.isEmpty ?? 'Yes, the list is empty' : 'No, the list is not empty';

在这个例子中,我们的条件是myList.isEmpty。如果此条件为真,则返回??之后的第一个表达式。否则,如果条件为false,则返回:后面的表达式。

ctehm74n

ctehm74n2#

它只是一个赋值运算符。您可以为小部件属性指定一个值。例如,容器小部件有许多属性,如颜色或高度:

Container(
    margin: const EdgeInsets.all(10.0),
    color: Colors.amber[600],
    width: 48.0,
    height: 48.0,
  ),
gdx19jrr

gdx19jrr3#

我迟到了,但刚刚看到这没有一个公认的答案,因为他们是不完整的。让我们来看看原题中的例子。

示例一:

class someBloc extends Bloc<someEvent, someState> {
    someBloc() : super(someState.initial());
}

这是我第一次学习 dart 时最奇怪的适应。这个:要么是一个重定向构造函数,要么是为构造函数someBloc()(通常是PascalCase,但我正在匹配给定的示例)启动一个初始化器列表(也可能调用超级构造函数)。具体来说,这是一个超级初始化器。在本例中,它将someState.initial()作为参数传递给Bloc类的超级构造函数,因为SomeBloc扩展了Bloc。这本质上与确保在其他OOP语言中调用超级构造函数作为子类中构造函数的第一行是相同的。
这对于初始化其他未通过传入参数设置的final类成员变量(示例中未显示)非常有用。

示例二:

本例中可能存在打印错误。按照目前的情况,需要有另一个带命名参数的构造函数。类似于:

someClass({required this.requestType, required this.name});

如果是这种情况,则:设置命名参数的值。这意味着参数可以按任意顺序设置,因为name:requestType:将选择正确的参数,因为它们是在构造函数中用花括号{}声明的。

class someClass {
  final String requestType;
  final String name; 
   
  factory someClass.fromJson(Map<String, dynamic> json) {
        return someClass(
            requestType: json['Type'],
            name: json['Name']);
      }
}

示例三:

您可以在许多编程语言中找到这个简写

var myValue = someBoolean ? ifTrue : ifFalse;

// equivalent to
var myValue;
if(someBoolean){
  myValue = ifTrue;
} else {
  myValue = ifFalse;
}

相关问题