簡體   English   中英

對象是什么 <type> Dart中的語法含義?

[英]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>背后的動機。

此外,你怎么可以參考RandomWordsStateRandomWords聲明還引用RandomWordsRandomWordsState聲明? 那不應該導致循環引用錯誤或其他原因嗎?

我來自動態類型的語言(例如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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM