flutter - 无状态和有状态小部件有什么区别?

我正在学习 Dart/flutter 并试图了解 Widgets 系统的工作原理。但我不明白无状态和有状态小部件之间有什么区别?例如我有按钮。它有什么类型?

让我们想象两种情况。 我将文本发送到按钮并显示它。 我将文本发送到按钮,它会改变颜色。

如果我创建不正确的 Widget 类型会怎样?

最佳答案

有 3 种小部件,而不仅仅是 2 种。

  • 有状态的小部件
  • 无状态小部件
  • 继承的小部件

无状态小部件就像一个常量。它是不可变的。如果您想更改无状态小部件显示的内容,则必须创建一个新小部件。

有状态的小部件正好相反。它们是活的并且可以与用户交互。有状态的小部件可以访问名为 setState 的方法,该方法基本上是对框架说“你好,我想显示其他东西。你能重绘我吗?”。

最后,Inherited 小部件是两个世界的混合体。它是不可变的和无状态的。但是另一个小部件(无论它是什么)可以订阅该继承的小部件。 这意味着当您用新的小部件替换继承的小部件时,所有订阅旧小部件的小部件都将被重绘。

最后,有状态的小部件通常会像 Controller 一样使用。 无状态小部件将像 View 一样使用。 继承的小部件将是您的配置文件或模型。

https://stackoverflow.com/questions/45936084/

相关文章:

mobile - 有没有其他方法可以改变脚手架抽屉的宽度?

firebase - 如何从 Flutter 中的 UploadTaskSnapshot 获取完整的

dart - 自动调用 ListView 上的按钮的 Flutter onPressed(当它变得可

flutter - 在 Flutter 中使用 Google 登录的错误 403 受限客户端

firebase - 从 Flutter 中的 Firebase 存储获取下载 URL

dart - Flutter:我可以将参数传递给按钮上的 onPress 事件中定义的函数吗?

flutter - 在 ListTile 中放置两个尾随图标

flutter - 如何在终端中打印带有 concat 两个字符串的消息?

flutter - 如何在 flutter 中完成当前 View /事件?

Flutter:多语言应用程序 - 如何覆盖语言环境?