可见性与条件小部件

时间:2020-05-17 13:35:41

标签: flutter dart

我有一个多级用户应用程序,其中实现了基于角色的小部件。如;

final user=Provider.of<UserNotifier>(context).getRole(); //returns role string

(user=="Admin")?SomeWidget():Container(),

还有另一种选择,例如:

Visibility (
                  visible: (user=="Admin"),
                  child: SomeWidget()
                ),

在这两种方法中哪一种是最好的方法?

3 个答案:

答案 0 :(得分:1)

三元组始终是确定这一点的最佳方法,如果可以避免的话,为什么要在树中添加额外的代码和小部件。

此外,我们应该尽可能使用三进制,因为该代码更易于使用。

答案 1 :(得分:1)

您想在此处使用Ternary operation,因为与应用交互时用户的角色不会改变,因此我们使用Visibility将其更改为true,以防我们希望用户看到小部件,但在您的情况下,可见项似乎与角色相关联,并且不会更改。

答案 2 :(得分:0)

我想说,以下是最好的选择。

(user=="Admin")?SomeWidget():Container(),

从代码可以看出,它仅构建必需的小部件。例如,如果condition为true,则它将构建SomeWidget,否则将构建Container。

主要优点ID,它将提高应用程序性能,如果不需要,则不会构建SomeWidget。假设您的SomeWidget确实是一个很大的窗口小部件,您正在其中从服务器获取数据以及所有这些信息,在这种情况下,它将继续做所有认为未显示窗口的事情。所以我们可以说我们正在做的所有请求都不值得。

在第二种情况下,它将继续执行所有操作,这就是为什么我认为这种方式不好的原因。