可见性与条件小部件

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

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

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

还有另一种选择,例如:

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

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

评论
  • BOX07
    BOX07 回复

    You want to use the Ternary operation here, since the user's role won't be changing when interacting with the app, We use Visibility to change it to true in case we want the user to see the widget but in your case the visible items seem to be tied to the role and won't be changing.

  • 少黑
    少黑 回复

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

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

  • miure
    miure 回复

    我会说,第一个选项(以下)是最佳选择。

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

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

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

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