为啥在软件开发中使用无状态的多于有状态的小部件? [关闭]
Posted
技术标签:
【中文标题】为啥在软件开发中使用无状态的多于有状态的小部件? [关闭]【英文标题】:Why stateless is mostly used than stateful widget in software development? [closed]为什么在软件开发中使用无状态的多于有状态的小部件? [关闭] 【发布时间】:2021-03-17 19:36:34 【问题描述】:我想制作一个商业应用。每个人都建议我让整个应用程序是无状态的。 为什么我们使用无状态小部件而不是有状态小部件来制作繁重的软件?
【问题讨论】:
无状态更容易推理,因为您不需要考虑当前状态。 你为什么不问问建议的人呢?他们应该已经有了这样的解释,而且你已经和他们谈过了。 【参考方案1】:StatefulWidget
需要 State
类。这意味着用户可以查看的一件事是开发人员编写的 2 个类。维护更多代码就是更多工作。
每个StatefulWidget
都可以做任何工作。它可以创建 HTTP 客户端并发出网络请求。它可以打开一个文件并读取它。 Widget
代码不应该那样做。当您挑战自己编写StatelessWidget
代码时,您会避免将“业务逻辑”放入Widget
代码中。
将逻辑放入小部件中会让您的生活变得艰难。您必须测试该代码,现在您必须在出现错误时读取每个单独的小部件,或者当您的队友编写具有逻辑的新小部件代码时。
这也意味着一个小部件有多个改变的理由。如果逻辑不正确,或者如果用户不喜欢 UI 的外观,StatefulWidget
将会改变。而StatelessWidget
只会改变 UI 的外观。
重软件只能在轻量级的情况下制作,否则在添加新功能时会卡住。 StatelessWidget
比 StatefulWidget
轻。
【讨论】:
【参考方案2】:没有所谓的“无状态应用”。与图片相比,将某物称为“应用程序”已经确定了它具有状态的事实。
问题是,您向某人提出了一个带有上下文的问题,他们在该上下文中给了您一个解释。当你不理解那个解释时,你没有要求他们澄清,而是决定来这里问你的问题,没有任何你以前的背景。我们不可能猜到那个上下文。我确信他们在你所拥有的上下文中是正确的,但是随着上下文的消失,剩下的简单的事实陈述是完全错误的。下一次,当您不立即理解某些内容时,请要求澄清以保留上下文。
也许您的意思是为什么不应该使用 StatefulWidget 作为树中的第一个 Widget?
你可以在这里找到解释:runApp throws an exception with stateful widget
也许您想知道有状态和无状态小部件之间的区别?
你可以在这里找到解释:What is the relation between stateful and stateless widgets in Flutter?
【讨论】:
以上是关于为啥在软件开发中使用无状态的多于有状态的小部件? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 Flutter 中使用 BLoC - 在有状态小部件与无状态小部件中的使用