Размытие фона не обновляется - PullRequest
0 голосов
/ 17 июня 2020

Я пробовал увеличить размытие фона с помощью ползунка диалогового окна Alert, но он не обновляется. Когда я напечатал значение, отображается значение обновления. Причина этого. 1004 *

Контейнер, который я хочу сделать размытым

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,),
                                   ),

1 Ответ

1 голос
/ 17 июня 2020

Есть ли setState () после showDialog ()? Попробуйте сделать как показано ниже.

при вызове 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);

...