在 Flutter 中,您可以通过以下两种方式重新获取 BuildContext

  1. build 方法中获取: BuildContextWidget 的一个属性,可以在 build 方法中直接获取到 BuildContext。例如:
@override
Widget build(BuildContext context) {
  return RaisedButton(
    onPressed: () {
      // 获取到新的 BuildContext
      BuildContext newContext = context;
      // 使用新的 BuildContext
      showDialog(
        context: newContext,
        builder: (BuildContext context) {
          return AlertDialog(
            title: Text('Dialog'),
            content: Text('This is a dialog.'),
            actions: <Widget>[
              FlatButton(
                child: Text('OK'),
                onPressed: () {
                  Navigator.of(context).pop();
                },
              ),
            ],
          );
        },
      );
    },
    child: Text('Open Dialog'),
  );
}
  1. 使用 Builder 组件: Builder 是一个特殊的 Widget,它会在 build 方法被调用时获取到 BuildContext。可以将需要重新获取 BuildContext 的部分放在 Builder 组件内部。例如:
@override
Widget build(BuildContext context) {
  return RaisedButton(
    onPressed: () {
      showDialog(
        context: context,
        builder: (BuildContext context) {
          return AlertDialog(
            title: Text('Dialog'),
            content: Builder(
              builder: (BuildContext context) {
                // 在这里重新获取 BuildContext
                BuildContext newContext = context;

                return Text('This is a dialog.');
              },
            ),
            actions: <Widget>[
              FlatButton(
                child: Text('OK'),
                onPressed: () {
                  Navigator.of(context).pop();
                },
              ),
            ],
          );
        },
      );
    },
    child: Text('Open Dialog'),
  );
}

以上两种方式都可以重新获取到 BuildContext,根据具体情况选择使用。

Flutter 重新获取 BuildContext - 两种方法详解

原文地址: https://www.cveoy.top/t/topic/zd4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录