扑镖中泛型的使用

dan*_*uli 5 dart flutter

有人可以解释一下<MyApp>吗?

MyAppState是State类的扩展,但是MyApp是什么?

我知道php中的OOP,但无法理解这一点。

class MyApp extends StatefulWidget{
  @override
  MyAppState createState() => new MyAppState();
}


class MyAppState extends State<MyApp>{
  @override
  Widget build(BuildContext context) {
    return new Scaffold(...);
  }
}
Run Code Online (Sandbox Code Playgroud)

Sae*_*bil 5

永远记住,State<T>类是作为泛型类实现的

当你扩展任何泛型类时,你必须为它指定类型,它恰好是你的 statful 小部件的具体实现,它的名字是 MyApp

对于类的每个具体实现,StatfulWidget您需要定义一个扩展类的另一个具体实现,State<MyApp>它的名称是MyAppState 因为State<T>我们将其编码为泛型类State<MyApp>

所以回答你的问题

MyAppStatefulWidget类的具体实现名称

StatefulWidget -----> 类不是通用的

MyApp -------------> StatefulWidget 类的具体实现

状态------------> 泛型类

MyAppState --> State 的具体实现

希望有帮助..


jam*_*lin 1

State<MyApp>是一个专门针对该类State的类。这允许它具有可继承的方法和属性,这些方法和属性可以在小部件上操作或涉及小部件。MyAppMyApp

例如,它允许MyAppState.widget将相应的小部件专门返回为MyApp小部件而不是通用的StatefulWidgetMyApp如果您想在返回的小部件上调用特定的属性或方法,这一点很重要。

请注意,这是必要的,因为 Flutter 使用类型安全的 Dart并尝试尽可能多地进行静态类型检查,以最大限度地减少运行时进行类型检查的成本。