我是Flutter的新手,我需要为我的项目提供逻辑部分方面的帮助,因此,如果此问题不属于SOF,请告诉我。
所以我在一个屏幕上有一堆纸牌,我想从另一屏幕上控制那些纸牌,但是我不确定如何实现以及它背后的逻辑,所以有人可以帮助我吗?。
因此,想法是,用户可以在主屏幕中查看纸牌堆,但不能重新排序其位置,如果用户想要这样做,则必须转到“重新排序屏幕”。
该应用的基本概念如下
Home Screen
.......................
Card 1
Card 2
Card 3
//All cards are stack together
Reorder Screen.
.........................
Button 1 (syn to Card 1)
Button 2 (syn to Card 2)
Button 3 (syn to Card 3)
it will appear in this order but the user can move their position
by drag and drop and this will also change the order of the Cards in Home Screen too,
我了解不查找任何代码将非常困难,但是请让我知道如果要求您如何实现此功能,
对逻辑部分的任何建议或帮助将不胜感激。谢谢
答案 0 :(得分:1)
您要尝试做的就是状态管理。您声明的是可以更改的数据。最简单的选择是将变量从卡片屏幕传递到按钮屏幕。然后,按钮屏幕将对此状态进行更改,并将其传回。您可以仅使用有状态的小部件和setState
来完成此操作。对于更复杂的状态,您将需要使用更高级的系统,例如the bloc pattern或providers。
在此示例中,您可以将列表从卡片屏幕传递到按钮屏幕的列表。按钮屏幕会修改此列表,然后使用setState将更改应用于屏幕。更改列表中项目的顺序时,请注意小部件keys。
答案 1 :(得分:1)
我认为您想要的是状态管理解决方案。他们很多,各有利弊。我(和Flutter团队)会建议 Provider 。
基本上,您的Provider
会保存卡片数据列表和重新排序的功能。
然后,两个屏幕都将依赖于该数据(使用Consumer
)。
重新排序屏幕将调用context.read<YourProvider>().reorder(oldIndex, newIndex)
之类的东西来重新排序列表。
详细了解一下:Simple app state management
如果您想了解其他SM解决方案的信息:List of state management approaches