gpt4 book ai didi

flutter - 背景模糊不更新

转载 作者:行者123 更新时间:2023-12-03 04:45:26 26 4
gpt4 key购买 nike

我尝试通过警报对话框 slider 增加背景模糊,但它没有更新。当我打印值时,它显示更新值。这是什么原因造成的。

这是我的警报对话框

_blurdialog(BuildContext context){

showDialog<void>(context:context,builder:(context){
return AlertDialog(
title: const Text('Background Blur'),
content: StatefulBuilder(
builder:(BuildContext context, StateSetter setState) {
return Column(
mainAxisSize:MainAxisSize.min,
children:[
Container(

child: Slider(
value: _blurvalue,
min: 0,
max: 5,
divisions: 5,
onChanged: (value) {
setState(() {
_blurvalue = value;
});
}
),
),
]);
}),
actions: <Widget>[
FlatButton(
child: const Text('Done'),
onPressed: () {

Navigator.of(context).pop(_blurvalue);
print(_blurvalue);
},
),
]
);});
}

我想要模糊的容器
Stack(children: <Widget>[ClipRect(
child: BackdropFilter(filter: ui.ImageFilter.blur(sigmaX: _blurvalue,
sigmaY: _blurvalue),
child: Container(color: Colors.black.withOpacity(0),
height: 400,
width: 400,),
),

最佳答案

showDialog() 之后有 setState() 吗?
请尝试如下操作。

当您使用 await 调用 showDialog 并接收数据时。
并调用 setState()。

_blurdialog(BuildContext context) async {
var newBlurValue = await showDialog<void>(context:context,builder:(context){ return
AlertDialog(
title: const Text('Background Blur'),
content: StatefulBuilder(
builder:(BuildContext context, StateSetter setState) {
return Column(
mainAxisSize:MainAxisSize.min,
children:[
Container(

child: Slider(
value: _blurvalue,
min: 0,
max: 5,
divisions: 5,
onChanged: (value) {
setState(() {
_blurvalue = value;
});
}
),
),
]);
}),
actions: <Widget>[
FlatButton(
child: const Text('Done'),
onPressed: () {

Navigator.of(context).pop(_blurvalue);
print(_blurvalue);
},
),
] );});
setState(() => _blurvalue = newBlurValue);
}

------------- or ---------------
Future<dynamic> _blurdialog(BuildContext context) async {
return await showDialog<void>(context:context,builder:(context){ return
AlertDialog(
title: const Text('Background Blur'),
content: StatefulBuilder(
builder:(BuildContext context, StateSetter setState) {
return Column(
mainAxisSize:MainAxisSize.min,
children:[
Container(

child: Slider(
value: _blurvalue,
min: 0,
max: 5,
divisions: 5,
onChanged: (value) {
setState(() {
_blurvalue = value;
});
}
),
),
]);
}),
actions: <Widget>[
FlatButton(
child: const Text('Done'),
onPressed: () {

Navigator.of(context).pop(_blurvalue);
print(_blurvalue);
},
),
] );});
}

...

var newBlur = await _blurdialog(context);
setState(() => _blurvalue = newBlur);

关于flutter - 背景模糊不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62421552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com