[英]What does the Object<type> syntax mean in Dart?
在以下代碼示例中,來自flutter docs :
class RandomWords extends StatefulWidget {
@override
createState() => RandomWordsState();
}
class RandomWordsState extends State<RandomWords> {
@override
Widget build(BuildContext context) {
final wordPair = WordPair.random();
return Text(wordPair.asPascalCase);
}
}
State<RandomWords>
語法到底是什么意思?
我了解您可以使用以下語法為集合中包含的對象(例如列表)指定類型List <String>
但是我無法理解State<RandomWords>
背后的動機。
此外,你怎么可以參考RandomWordsState
在RandomWords
聲明還引用RandomWords
在RandomWordsState
聲明? 那不應該導致循環引用錯誤或其他原因嗎?
我來自動態類型的語言(例如python),這對我來說有點奇怪,有人可以將我指向正確的地方嗎?
<RandomWords>
是傳遞給State
類的通用類型參數。
State
類看起來像
abstract class State<T extends StatefulWidget> extends Diagnosticable {
和RandomWords
將傳遞給T
類型參數,該參數具有一個約束,即T
必須是StatefulWidget
的子類。
State
還有一個使用type參數的字段和getter
T get widget => _widget;
T _widget;
這將導致小部件類型的屬性,該屬性在其子類RandomWordsState
提供適當的自動RandomWordsState
和類型檢查
假設你有
class RandomWords extends StatefulWidget {
RandomWords({this.fixed});
final WordPair fixed;
@override
createState() => RandomWordsState();
}
class RandomWordsState extends State<RandomWords> {
@override
Widget build(BuildContext context) {
// vvvv here we can access `fixed` in a strongly typed manner
final wordPair = widget.fixed ?? WordPair.random();
return Text(wordPair.asPascalCase);
}
}
另請參閱https://www.dartlang.org/guides/language/language-tour#generics
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.