flutter “向上提升状态”的简单说明

2guxujil  于 2022-11-17  发布在  Flutter
关注(0)|答案(1)|浏览(167)

有没有人能简单地解释一下在Flutter中提升状态是什么意思以及如何使用它?它是在课间还是其他地方使用?

tjvv9vkg

tjvv9vkg1#

This article很好地解释了Flutter中的提升状态。
例如,我们有一个BlueSquare小部件,它显示点击的次数。每次点击方块都会自动更新显示的文本,更新后的总点击次数会显示在该方块上。我们想有一组BlueSquare,该组中的所有BlueSquare都显示用户的累计点击次数。
这意味着点击次数是所有BlueSquare对象共享的状态。
(语法和一些小的措辞纠正在上面的报价。
我们将BlueSquare设为StatefulWidget,而将其设为StatelessWidget,并将其 parent 设为StatefulWidgetStatefulWidgetBlueSquareParent,记录点击次数,并将点击次数传递给BlueSquare小部件的构造函数,以便BlueSquare小部件显示当前的点击次数。
第一个
BlueSquare示例中,我们需要将点击次数返回给BlueSquareParent小部件,这样它就知道有多少次点击。我们可以通过向BlueSquare传递一个回调方法,让它们更新BlueSquareParent中的点击次数来实现这一点。
第一次
(All代码改编自本文中的示例。)
另一个例子(如评论中所要求的):This YouTube tutorial显示了如何提升TextFormField的状态,以便将这些字段中的值存储在父小部件中。子小部件(RangeSelectorTextFormField)中有一个TextFormField,并接收一个回调方法,就像第一个示例中的BlueSquare小部件一样。当保存字段中的文本时,将调用回调方法。在父小部件中,我们创建了一个函数,根据创建的文本字段设置父小部件中的最小值或最大值变量,并将其作为RangeSelectorTextFormField的回调方法传递。然后,当保存了TextFormField中的文本时,RangeSelectorTextFormField调用回调方法,该方法设置父小部件中的关联变量。
Flutter documentation建议使用Provider,而不是用这种方式提升状态,如果你要做比上面的例子复杂得多的事情的话。

相关问题