如何在颤动中从另一个屏幕进行更改

问题描述 投票:0回答:3
I'm new to Flutter and I need help with logic part for my project 
so if this question doesn't belong in SOF, please let me know.

所以我在一个屏幕上有一堆纸牌,我想从另一屏幕上控制那些纸牌,但我不确定如何实现及其背后的逻辑,所以有人可以帮助我吗?。

所以想法是,用户可以在主屏幕中查看纸牌堆,但是如果用户想要重新放置位置,则他们不能重新排序,而必须去重新排序屏幕。

该应用程序的基本概念将看起来像

    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,

enter image description here

我知道如果不看任何代码,这将非常困难,但是如果要求您执行此功能,请让我知道如何实现。

在逻辑部分上的任何建议或帮助,将不胜感激。谢谢

flutter flutter-layout flutter-dependencies flutter-animation flutter-test
3个回答
0
投票

您试图做的就是状态管理。您声明的是可以更改的数据。最简单的选择是将变量从卡片屏幕传递到按钮屏幕。然后,按钮屏幕将对此状态进行更改,并将其传回。您可以仅使用有状态的小部件和setState来执行此操作。对于更复杂的状态,您将需要使用更高级的系统,例如the bloc patternproviders

对于此示例,您可以将列表从卡片屏幕传递到按钮屏幕的列表。按钮屏幕会修改此列表,然后使用setState将更改应用于屏幕。更改列表中项目的顺序时,请注意小部件keys


0
投票

我认为您想要的是状态管理解决方案。他们很多,各有利弊。我(和Flutter团队)建议提供者

[基本上,您的Provider将保存卡数据列表和重新排序的功能。

然后,两个屏幕都将取决于该数据(使用Consumer)。

重新排序屏幕会调用context.read<YourProvider>().reorder(oldIndex, newIndex)之类的东西来重新排序列表。

[查看更多详细信息:Simple app state management

如果您想了解其他SM解决方案的信息:List of state management approaches


0
投票

你好,我在git中推了一个关于状态管理的小例子。我很确定它将帮助您实现目标。Repo

© www.soinside.com 2019 - 2024. All rights reserved.