在以下代码示例中,来自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>语法到底是什么意思?
State<RandomWords>
我了解您可以使用以下语法为集合中包含的对象(例如列表)指定类型- List <String>
List <String>
但是我不明白背后的动机State<RandomWords>。
此外,如何RandomWordsState在RandomWords声明中引用RandomWords,也可以在声明中引用RandomWordsState?那不应该导致循环引用错误或其他原因吗?
RandomWordsState
RandomWords
我来自动态类型的语言(例如python),这对我来说有点奇怪,有人可以将我指向正确的地方吗?
<RandomWords>是传递给State类的通用类型参数。
<RandomWords>
State
该State班的样子
abstract class State<T extends StatefulWidget> extends Diagnosticable {
和RandomWords将被传递到T其具有一个约束类型参数T需要是的一个子类StatefulWidget。
T
StatefulWidget
State 还有一个使用type参数的字段和getter
T get widget => _widget; T _widget;
这将导致小部件类型的属性,该属性在其子类中提供正确的自动补全和类型检查 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