Flutter 重新获取 BuildContext - 两种方法详解
在 Flutter 中,您可以通过以下两种方式重新获取 BuildContext:
- 在
build方法中获取:BuildContext是Widget的一个属性,可以在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'),
);
}
- 使用
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,根据具体情况选择使用。
原文地址: https://www.cveoy.top/t/topic/zd4 著作权归作者所有。请勿转载和采集!