gpt4 book ai didi

dart - Dart 中的 Object 语法是什么意思?

转载 作者:IT王子 更新时间:2023-10-29 06:55:04 25 4
gpt4 key购买 nike

在下面的代码示例中,来自 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还有一个字段和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

关于dart - Dart 中的 Object<type> 语法是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51246344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com