【问题标题】:Problem with understanding this code in flutter在颤动中理解此代码的问题
【发布时间】:2020-08-18 03:27:51
【问题描述】:

我在学习flutter,偶然发现了这段代码:

class MyStatelessWidget extends StatelessWidget {
  final String name;
  MyStatelessWidget(this.name);

  @override
  Widget build(BuildContext context) { 
    return Text('Hello, $name!');
  }
}

对不起,我想对上面的代码提出一些问题。首先,为什么需要使用@override,也就是说,我知道它是方法覆盖所需要的,但是StatelessWidget中的build方法是这样定义的,所以我们需要覆盖它并添加一些逻辑是真的吗?其次,这里Widget build Widget是不是意味着build返回一个Widget?第三,这里为什么要使用BuildContextbuild(BuildContext context)

【问题讨论】:

    标签: flutter


    【解决方案1】:

    上下文

    根据文档,BuildContext 是:

    小部件树中小部件位置的句柄。

    context 是一个 BuildContext 实例,它被传递给小部件的构建器,以便让它知道它在您应用的小部件树中的位置。

    其中一个常见用途是在使用 Inherited Widget 时将其传递给 of 方法。

    例如,调用 Something.of(context) 会返回相对于树中可以为您提供某事的最近小部件的某事。

    构建方法

    Build 方法是必需的,因为它描述了此小部件所代表的用户界面部分。框架在多种不同情况下调用此方法。

    在此处阅读有关构建方法的更多信息Build Method

    无状态小部件

    不需要可变状态的小部件。

    无状态小部件是一种通过构建更具体地描述用户界面的其他小部件来描述部分用户界面的小部件。 在此处阅读有关无状态小部件的更多信息Stateless widget

    我希望这会有所帮助。

    【讨论】:

    • 好的,但是为什么我们需要使用“@override”。 statelesswidget 中如何定义 build 方法?
    • @override 表示它正在调用superclass 中的方法。这里的超类是StatelessWidget,因为它正在扩展它。我希望这会有所帮助。
    猜你喜欢
    • 2021-02-03
    • 2011-03-28
    • 2021-08-03
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2018-12-02
    相关资源
    最近更新 更多