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