我从flutter_redux示例代码中发现了以下代码示例。很难理解为什么factory SearchState.initial()
返回一个new
关键字,而factory SearchState.loading()
和factory SearchState.error()
却不返回。
class SearchState {
final SearchResult result;
final bool hasError;
final bool isLoading;
SearchState({
this.result,
this.hasError = false,
this.isLoading = false,
});
factory SearchState.initial() =>
new SearchState(result: SearchResult.noTerm());
factory SearchState.loading() => SearchState(isLoading: true);
factory SearchState.error() => SearchState(hasError: true);
}
只是发现Dart语言之旅对这种情况不是很有帮助,而且Dart语言规范太晦涩。
答案 0 :(得分:5)
effective dart指南中的语录:
Dart 2使new关键字为可选。即使在Dart 1中,其含义也是 永远不清楚,因为工厂构造函数意味着可能会进行新的调用 仍然没有真正返回新对象。
该语言仍然允许新的语言,以减少迁移 很痛苦,但是请不要使用它,并将其从您的代码中删除。
答案 1 :(得分:2)
没有区别。在Dart 2中,new
关键字是可选的。如果调用构造函数时未编写任何内容,则将其隐式假定为new
。
大多数代码仍然使用new
,因为Dart 1要求使用它,有些人甚至更喜欢它,因此您将看到带有和不带有new
的代码。