解决flutter移动开发中出现的不能异步间隙使用BuildContest的问题。
网上搜了一圈没找到解决方法,自己没写出来,最后在ai的帮助下解决了这个问题,下面是我遇到的具体问题以及解决方法:
在一个需要弹窗的地方,由于这里使用showDialog会出现不能异步间隙使用BuildContext的问题,我的代码如下:
Widget build(
BuildContext context) {
return Scaffold(
body:
Row(
IconButton(
onPressed: () async {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title:Text('1'),
content:Text('2'),
actions:[
TextButton(
child:Text('3'),
onPressed:() async {
Navigator.pop(context);
}
)]
}
)
)
);
}
解决方法如下:
在这种情况下,我们可以将BuildContext存储放在一个变量中,然后在异步操作中使用该变量。
Widget build(
BuildContext context) {
return Scaffold(
body:
Row(
IconButton(
onPressed: () async {
// 存储BuildContext
BuildContext dialogContext;
showDialog(
context: context,
builder: (BuildContext context) {
dialogContext = context; // 存储BuildContext
return AlertDialog(
title:Text('1'),
content:Text('2'),
actions:[
TextButton(
child:Text('3'),
onPressed:() async {
Navigator.pop(dialogContext); // 关闭弹窗,使用存储的BuildContext
}
)]
}
)
)
);
}