Flutter 可见性与条件小部件

Flutter 可见性与条件小部件,flutter,dart,Flutter,Dart,我有一个多级用户应用程序,在其中我实现了基于角色的小部件。例如, final user=Provider.of<UserNotifier>(context).getRole(); //returns role string (user=="Admin")?SomeWidget():Container(), 在这两种方法中,哪一种是最好的方法?三元始终是决定这一点的最佳方法,如果可以避免的话,为什么我们应该在树中添加额外的代码和小部件 此外,我们应该尽可能使用三元,因为代码更易于阅

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

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

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

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

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

此外,我们应该尽可能使用三元,因为代码更易于阅读

我想说,第一种选择(以下)是最好的选择

(user=="Admin")?SomeWidget():Container(),
从代码中可以看出,它只构建所需的小部件。例如,如果条件为true,那么它将构建SomeWidget,否则它将构建容器

主要的好处是它将提高应用程序的性能,如果不需要它,它将不会构建SomeWidget。假设您的SomeWidget是一个非常大的widget,其中您从服务器获取数据,在这种情况下,它将继续执行所有认为即使该widget没有显示的操作。因此,我们可以说,我们所做的所有要求都是不值得的


而在第二种情况下,它会继续做所有这些事情,这就是我认为这种方式不好的原因。

您想在这里使用
三元操作,因为用户在与应用程序交互时的角色不会改变,我们使用
Visibility
将其更改为true,以防我们希望用户看到小部件,但在您的情况下,可见项似乎与角色相关,不会更改。

谢谢。另外,这是生产应用程序的一个好方法吗?或者有更好的方法?这是生产中最好的方法。部分解释如下:“使用此小部件不必隐藏子项。隐藏子项的最简单方法就是不包含它…”
(user=="Admin")?SomeWidget():Container(),