繁体   English   中英

dart 中的 setState() 和 BLoC 模式有什么区别?

[英]what is the difference between setState() and BLoC pattern in dart?

我正在尝试仅收集setState()和 BLoC 模式之间的差异点。

& 刚刚收集到的一个不同点是:

1.) setState()方法总是与Stateful Widget一起使用但是 BLoC 模式可以与 Widget StatelessStateful

所以我的问题是,两者之间的主要区别是什么,哪个更好更可靠?

setState((){})用于管理同一个StatefulWidget中的本地StatefulWidget ,它是 child 。

BLoC pattern用于管理全局状态。

在这个例子中,如果你想将数据从WIDGET B2传递到WIDGET A :如果你使用StatefulWidget你应该将数据从WIDGET B2传递到WIDGET B1WIDGET BWIDGET A 但是如果您使用 BLoC 模式或其他方式来管理全局状态,则您可以直接将数据从WIDGET B2传递到WIDGET A

[Provider][is recommended by flutter team , you can use it to manage global state]

经过大量搜索,我发现了主要区别,

基本上setState()非常易于使用,它提供即时反馈,但它无助于实现我们的目标意味着 UI 呈现和业务逻辑,它们都在同一个类中,因此代码看起来不干净,高质量意味着代码在形式上看起来很混乱这就是为什么如果应用程序增长,代码维护在未来可能会变得具有挑战性。

在 bloc 模式中,所有声明在不同的类中意味着 UI 呈现在不同的类中定义,业务逻辑定义在不同的类中,因此代码看起来干净且高质量。

注意:如果应用程序很小,那么您可以自由使用setState()但如果应用程序很大则不要使用setState()

您如何将数据从子或后代小部件传输到父小部件? 这就是为什么人们使用状态管理工具来替代 setState。 当你只做本地状态时,Setstate 是有效的,否则我们需要全局或应用程序级别的状态。

它们是不同的东西。

  • setState((){})是一个在 StatefulWidget 内部调用的函数,用于修改其状态然后重建它。
  • BLoC 是一种状态管理模式。 它还可以指帮助以干净的方式实现此模式的包

仅供参考, provider是 Flutter 团队提出的状态管理解决方案。 您可以在此处了解有关状态管理的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM