扑动statfulWidget刷新两次

时间:2019-09-23 10:36:56

标签: flutter

return MaterialApp(
      home: Scaffold(
        body: RefreshIndicator(
          key: _globalKey,
          onRefresh: refresh,
          child: Sub(),
        ),
      ),
    );

有一个简单的刷新指示符和子窗口小部件

class Sub extends StatefulWidget {
  @override
  _SubState createState() => _SubState();
}

class _SubState extends State<Sub> {
  @override
  Widget build(BuildContext context) {
    print('sub');
    return Container(
      color: Colors.amber,
      child: SingleChildScrollView(
        child: Column(
          children: <Widget>[
            Container(
              height: 300,
              color: Colors.blue,
            ),
            Container(
              height: 300,
              color: Colors.red,
            ),
            Container(
              height: 300,
              color: Colors.green,
            ),
          ],
        ),
      ),
    );
  }
}

Sub小部件在构建时打印“ sub” 关键是当我触摸或只是稍微拖动页面(没有足够的调用refreshindicator)子窗口小部件时重建TWICE。我不知道为什么,我也不知道该怎么打。 (statelesswidget可以解决该问题,但我需要使用statefulwidget)

1 个答案:

答案 0 :(得分:0)

这取决于您想要不重建而实现的目标,但是我使用的替代方法是扑扑图表。在Sub sub1=Sub();build()之外的某个地方创建对象intiState(),此小部件将不会再次重建,并且值将相同。