美文网首页flutter
Flutter:Stateful vs Stateless Wi

Flutter:Stateful vs Stateless Wi

作者: 开心人开发世界 | 来源:发表于2019-07-08 16:51 被阅读9次

    介绍

    在本文中,我将向您展示Stateful和Stateless Widget之间的区别。

    正如您在Flutter中所知,所有UI组件都称为小部件。包含应用程序单个屏幕代码的小部件可以只有两种类型 -

    1. Stateful(有状态)
    2. Stateless(无状态)

    我们来讨论它们有何区别。

    Stateless(无状态)

    无状态小部件不需要可变状态,即它是不可变的

    简单来说,无状态小部件无法在应用程序运行时更改其状态,这意味着在应用程序运行时无法重新绘制小部件。

    Stateless小部件的结构如下所示:

    image.png

    所以,让我们了解这个小代码片段中的内容。

    这个无状态窗口小部件的名称是“ StartScreen ”,我们必须在其中覆盖“ build”方法。此构建方法接受“ BuildContext ”作为参数并返回小部件。这就是为什么你可以看到构建方法的返回类型是一个小部件。这是您可以设计此屏幕的UI的地方,这是无状态的。

    在Stateless小部件中,“ build ”方法只能在应用程序运行时调用一次,它负责将小部件绘制到设备屏幕上。

    如果要重绘无状态窗口小部件,则需要创建窗口小部件的新实例。

    提示:您可以使用快捷方式“ stl ” 在VS Code或Android Studio中快速构建无状态窗口小部件。

    无状态小部件的一些示例如下:


    现在,让我们转到Stateful Widget(有状态)。

    有状态

    有状态小部件具有可变状态,即它们是可变的并且可以在其生命周期内被多次绘制。

    它们是可以多次更改其状态的小部件,可以在应用程序运行时重新绘制到屏幕上任意次。

    Stateful小部件的结构如下所示:


    窗口小部件的名称再次是“ StartScreen ”,但现在它覆盖了“ createState ”方法,而不是“ build ”方法,后者返回类“ _StartScreenState ” 的实例。

    类“ _StartScreenState ”从State <>扩展,它以“ StartScreen ”作为模板输入。

    现在,这个“ _StartScreenState ”会覆盖“ build ”方法并返回一个小部件。您可以在此处定义应用程序的UI,即有状态。由于它是一个有状态的小部件,您可以多次调用构建方法,这将重绘屏幕上的小部件。

    那么,你怎么能调用构建方法呢?

    这很简单,您可以使用“ setState ”方法调用构建方法,然后重新构建窗口小部件。这是您需要与任何有状态窗口小部件一起使用的最重要方法,才能真正使用窗口小部件的有状态。

    提示:您可以使用快捷方式“stf”在VS Code或Android Studio中快速构建状态窗口小部件。

    有状态小部件的一些示例如下:

    结论

    我们已经结束了这篇短文。我希望你们都已经收到了有状态和无状态小部件的基本概念,以及它们之间的区别。如果您自己做一些项目并了解应用程序如何处理状态,这些概念会更加清晰。

    相关文章

      网友评论

        本文标题:Flutter:Stateful vs Stateless Wi

        本文链接:https://www.haomeiwen.com/subject/mjrahctx.html