我有一个多级用户应用程序,其中实现了基于角色的小部件。如;
final user=Provider.of<UserNotifier>(context).getRole(); //returns role string
(user=="Admin")?SomeWidget():Container(),
还有另一种选择,例如:
Visibility (
visible: (user=="Admin"),
child: SomeWidget()
),
在这两种方法中哪一种是最好的方法?
答案 0 :(得分:1)
三元组始终是确定这一点的最佳方法,如果可以避免的话,为什么要在树中添加额外的代码和小部件。
此外,我们应该尽可能使用三进制,因为该代码更易于使用。
答案 1 :(得分:1)
您想在此处使用Ternary operation
,因为与应用交互时用户的角色不会改变,因此我们使用Visibility
将其更改为true,以防我们希望用户看到小部件,但在您的情况下,可见项似乎与角色相关联,并且不会更改。
答案 2 :(得分:0)
我想说,以下是最好的选择。
(user=="Admin")?SomeWidget():Container(),
从代码可以看出,它仅构建必需的小部件。例如,如果condition为true,则它将构建SomeWidget,否则将构建Container。
主要优点ID,它将提高应用程序性能,如果不需要,则不会构建SomeWidget。假设您的SomeWidget确实是一个很大的窗口小部件,您正在其中从服务器获取数据以及所有这些信息,在这种情况下,它将继续做所有认为未显示窗口的事情。所以我们可以说我们正在做的所有请求都不值得。
在第二种情况下,它将继续执行所有操作,这就是为什么我认为这种方式不好的原因。