【发布时间】:2020-08-23 16:20:30
【问题描述】:
TL;DR:我可以让流在颤动中打开吗?
我有一个特定的 UI 需要不同风格的应用程序抽屉,不像普通的侧边抽屉从左滑到主屏幕的顶部。 设计更像是整个主屏幕向右移动,底部有一层作为侧边栏。
为了清楚起见,把它想象成不是抽屉在屏幕顶部并移动,相反的是我想要的。我希望主屏幕位于顶部,抽屉位于底部(就 z-index 而言)并且主屏幕移动。
我所做的是创建了两个小部件,一个用于应用程序抽屉,另一个用于主屏幕,并使用堆栈小部件和一些动画使其工作。为了注册用户关于他/她想要打开哪个屏幕的反馈,我使用流将数据从侧边栏小部件传递到主屏幕小部件,并将其存储在主屏幕的本地状态中,并显示需要显示的任何内容那个。
我在下面附上代码:
这是我使用堆栈和动画使 UI 工作的主文件:
这就是我使用流注册用户反馈并将其发送到主屏幕的方式:
这就是我接收反馈并显示必须显示的页面的方式:
这就是我的流/块类的样子:
我的主要问题是关于方法,有没有更好的方法?我之所以这么问,是因为我知道流不应该保持打开状态,这会影响应用程序的性能。 但是使用这种方法,我必须让它一直打开,因为用户应该能够在任何给定时间选择所需的页面。
在这种情况下保持流打开是一种正常的做法,你能告诉我一些情况,如果存在这种情况,流必须保持打开状态吗? (例如,我认为 autosuggest/search-as-you-type 可能一直在使用流,是吗?)。
【问题讨论】:
-
是的,如果需要,您可以让流保持打开状态。它不应该影响性能。另一方面,如果不再需要该流,则应将其关闭。在您的情况下,即是在处置创建
SidebarHandlingBloc的小部件时。 -
但它永远不会被处理掉。如果我在 dispose 函数中使用 print 语句对其进行测试,它永远不会打印到控制台。
-
有道理,你的整个应用都需要那个抽屉。当您的应用程序被操作系统关闭/回收时,它将被清理
-
没错,我明白。但我的问题只是关于应用程序何时运行,它是否会影响性能。如果有更好的方法来实现这个 UI。
-
不,不会影响性能。
标签: android ios flutter flutter-layout mobile-application