Flutter addPostFrameCallback 方法的使用

5 min read

Flutter 中的 addPostFrameCallback 方法用于在 StatefulWidget 更新完成后执行一些操作,例如在获取 Widget 的宽高之后进行布局调整。它需要传入一个回调函数,该回调函数会在 Widget 更新完成之后立即执行。

示例代码:

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  double _width = 0;
  double _height = 0;

  @override
  Widget build(BuildContext context) {
    return Container(
      width: _width,
      height: _height,
      child: Text('Hello World'),
    );
  }

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      setState(() {
        _width = 100;
        _height = 100;
      });
    });
  }
}

在上述例子中,我们需要在 Widget 渲染完成后再根据实际的宽高对其进行布局。我们使用 addPostFrameCallback 方法来监听 Widget 更新完成事件,并在回调函数中进行布局调整。这样,我们就能够在 Widget 的实际宽高确定之后再进行布局,而不会出现占位问题。