颤抖跳过ListView或PageView中的子级

时间:2019-02-23 14:19:25

标签: dart flutter

假设我PageView中有四个孩子,

PageView(
  children: <Widget>[
    Page1(),
    Page2(),
    Page3(), // how to skip this when a condition is false
    Page4(),
  ],
)

Page3的值为bool时,我想显示true,我该怎么做,我想放一个null,但我不允许这样做那。

3 个答案:

答案 0 :(得分:1)

一种方法是使用-使用sync*函数。

如果Page2为true,则会显示

condition

bool condition = true;

PageView(
          children: List.unmodifiable(() sync* {
            yield Center(child: Text('Page1'));   //Page 1
            if (condition) {
              yield Center(child: Text('Page2'));  // Page2(conditional)
            }
            // yield* children;
            yield Center(child: Text('Page3'));  //Page3
          }()),
        ),

答案 1 :(得分:0)

似乎这样是使事情发生的更好方法。

List<Widget> list = [];
if (condition) {
  list = [
    Page1(),
    Page2(),
    Page3(), 
    Page4(),
  ];
} else {
  list = [
    Page1(),
    Page2(),
    Page4(),
  ];
}

return PageView(children: list);

答案 2 :(得分:0)

从Dart 2.2.2开始,您可以使用常规random.seed(2) min_rescale = -0.001 max_rescale = 0.001 close2 = [min_rescale + random.random() * (max_rescale - min_rescale) for x in range(100)] sns.distplot(close2, hist=True, kde=True, bins=5, color = 'darkblue', hist_kws={'edgecolor':'black'}, kde_kws={'linewidth': 4}) 条件。

if