<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Boilplate</title>
    <description>The latest articles on DEV Community by Boilplate (@boilplate).</description>
    <link>https://dev.to/boilplate</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F539603%2F832fcad0-793f-4da4-9110-e404759a4ed8.png</url>
      <title>DEV Community: Boilplate</title>
      <link>https://dev.to/boilplate</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/boilplate"/>
    <language>en</language>
    <item>
      <title>How to blur in Flutter</title>
      <dc:creator>Boilplate</dc:creator>
      <pubDate>Wed, 30 Dec 2020 19:19:09 +0000</pubDate>
      <link>https://dev.to/boilplate/how-to-blur-in-flutter-5891</link>
      <guid>https://dev.to/boilplate/how-to-blur-in-flutter-5891</guid>
      <description>&lt;p&gt;The documentation unfortunately isn't the best when it comes to blurring in Flutter. To me it really feels like a workaround solution which somehow became the norm. &lt;/p&gt;

&lt;p&gt;You're supposed to use &lt;code&gt;BackdropFilter&lt;/code&gt; for which you should first create a &lt;code&gt;Stack&lt;/code&gt;, then reposition all the widgets back, after which you maybe even reposition the blur and clip it if you don't want it over the whole screen.&lt;/p&gt;

&lt;p&gt;Even though that can sometimes be the right solution, I'll show you when to use it and when not to.&lt;/p&gt;

&lt;p&gt;All code snippets of screens are linked above the pictures.&lt;/p&gt;




&lt;h3&gt;
  
  
  Table of contents
&lt;/h3&gt;

&lt;p&gt;- Single widget blur&lt;br&gt;
- Background blur&lt;br&gt;
- Part of screen blur&lt;br&gt;
- Dialog/Bottom Sheet background blur&lt;br&gt;
- Conclusion&lt;/p&gt;


&lt;h2&gt;
  
  
  Single widget blur
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Boilplate/flutter-blur-examples/blob/master/lib/screens/single_widget_screen.dart" rel="noopener noreferrer"&gt;Example screen of simple blur&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frsm55aov7c4kggzxequ9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frsm55aov7c4kggzxequ9.png" alt="Example picture that shows a blurred image using ImageFiltered without a Stack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Turns out there is this simple widget you can just wrap around whatever you want blurred. It's called &lt;strong&gt;&lt;code&gt;ImageFiltered&lt;/code&gt;&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;I don't know why there is a widget of the week video for &lt;code&gt;BackdropFilter&lt;/code&gt;, but not for this one. I suspect it will come in the near future.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;EDIT&lt;/em&gt;: They added a widget of the week video for it. Turns out it's even more performant than &lt;code&gt;BackgroundFilter&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Here's how you use it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;ImageFiltered&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;imageFilter:&lt;/span&gt; &lt;span class="n"&gt;ImageFilter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;sigmaX:&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;sigmaY:&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;  &lt;span class="c1"&gt;// Widget that is blurred&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Background blur
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Boilplate/flutter-blur-examples/blob/master/lib/screens/background_screen.dart" rel="noopener noreferrer"&gt;Example of a blurred background image&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9ca71thqxqv4n7h82eyo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9ca71thqxqv4n7h82eyo.png" alt="Example of a blurred background using BackdropFilter"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To create the frosted glass effect in the background, you're gonna have to use a &lt;code&gt;Stack&lt;/code&gt; and &lt;strong&gt;&lt;code&gt;BackdropFilter&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You want to have your background widgets as the first children inside the &lt;code&gt;Stack&lt;/code&gt;, so that the rest are stacked on top of them. &lt;code&gt;BackdropFilter&lt;/code&gt; blurs &lt;em&gt;only&lt;/em&gt; the widgets above it. &lt;/p&gt;

&lt;p&gt;The child parameter is required and doesn't get blurred. Don't leave it as &lt;code&gt;null&lt;/code&gt; because the blur effect won't happen! I often find myself setting it to just an empty &lt;code&gt;Container&lt;/code&gt; &lt;em&gt;with a transparent color&lt;/em&gt;, for readability sakes. That way I know everything after &lt;code&gt;BackdropFilter&lt;/code&gt; isn't affected.&lt;/p&gt;

&lt;p&gt;Example of a blurred background image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;Stack&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;children:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="n"&gt;Container&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nl"&gt;decoration:&lt;/span&gt; &lt;span class="n"&gt;BoxDecoration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="nl"&gt;image:&lt;/span&gt; &lt;span class="n"&gt;DecorationImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="nl"&gt;image:&lt;/span&gt; &lt;span class="n"&gt;AssetImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'assets/your_asset_image.jpeg'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                    &lt;span class="nl"&gt;fit:&lt;/span&gt; &lt;span class="n"&gt;BoxFit&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;cover&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;BackdropFilter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="nl"&gt;filter:&lt;/span&gt; &lt;span class="n"&gt;ImageFilter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;sigmaX:&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;sigmaY:&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Container&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Not blurred'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You usually don't put &lt;code&gt;BackdropFilter&lt;/code&gt; inside &lt;code&gt;Container&lt;/code&gt;, it's just a convenience in this case. Not giving the &lt;code&gt;Container&lt;/code&gt; a child and having &lt;code&gt;BackdropFilter&lt;/code&gt; as the second element in this list has the same effect.&lt;/p&gt;

&lt;p&gt;The color doesn't have to be transparent. You can have it act as a filter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;BackdropFilter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;filter:&lt;/span&gt; &lt;span class="n"&gt;ImageFilter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;sigmaX:&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;sigmaY:&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Container&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;grey&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;withOpacity&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Part of screen blur
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Boilplate/flutter-blur-examples/blob/master/lib/screens/partial_screen.dart" rel="noopener noreferrer"&gt;Example of partial screen blur&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4wzpw24e46x87mpu6nay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4wzpw24e46x87mpu6nay.png" alt="Example picture that shows a use case for blurring only part of screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whether you want to blur half of the screen or part of a tiny image, you'll always be using &lt;code&gt;BackdropFilter&lt;/code&gt; wrapped with &lt;code&gt;Positioned&lt;/code&gt; and some form of &lt;code&gt;Clip&lt;/code&gt; (&lt;code&gt;ClipRect&lt;/code&gt;, &lt;code&gt;ClipRRect&lt;/code&gt;,&lt;code&gt;ClipOval&lt;/code&gt;, &lt;code&gt;ClipPath&lt;/code&gt;...). &lt;/p&gt;

&lt;p&gt;For the &lt;code&gt;Positioned&lt;/code&gt; widget you have to input all 4 sides, so that it's clear how far away from the edges is the blur. For the &lt;code&gt;Clip&lt;/code&gt; part, the simplest and most common to use is &lt;code&gt;ClipRect&lt;/code&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If there's no clip, the filter will be applied to the full screen. (from &lt;a href="https://api.flutter.dev/flutter/widgets/BackdropFilter-class.html" rel="noopener noreferrer"&gt;&lt;em&gt;BackdropFilter&lt;/em&gt; documentation&lt;/a&gt;)&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;Positioned&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;top:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;bottom:&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;left:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;right:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;ClipRect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;BackdropFilter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="nl"&gt;filter:&lt;/span&gt; &lt;span class="n"&gt;ImageFilter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;sigmaX:&lt;/span&gt; &lt;span class="mf"&gt;7.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;sigmaY:&lt;/span&gt; &lt;span class="mf"&gt;7.0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Container&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Dialog/Bottom Sheet background blur
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/Boilplate/flutter-blur-examples/blob/master/lib/screens/dialog_screen.dart" rel="noopener noreferrer"&gt;No boilerplate blurred dialog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl11jvko68ywcryn1bwjz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fl11jvko68ywcryn1bwjz.png" alt="Example picture that shows a blurred background image of a dog behind dialog"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one is very specific and it basically just eliminates boilerplate for your dialogs and bottom sheets. Those have as their background the &lt;strong&gt;&lt;code&gt;ModalBarrier&lt;/code&gt;&lt;/strong&gt; widget, so we blur that instead of wrapping all our dialogs and bottom sheets with &lt;code&gt;BackdropFilter&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To find the &lt;code&gt;ModalBarrier&lt;/code&gt; file &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;in VS Code press Ctrl + P&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;in IntelliJ double tap Shift&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and search modal_barrier.dart                         &lt;/p&gt;

&lt;p&gt;First make sure to import &lt;code&gt;ImageFilter&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'dart:ui'&lt;/span&gt; &lt;span class="kd"&gt;show&lt;/span&gt; &lt;span class="n"&gt;ImageFilter&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside the build method you want to change this (for me it's line 124)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DecoratedBox&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;decoration:&lt;/span&gt; &lt;span class="n"&gt;BoxDecoration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BackdropFilter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;filter:&lt;/span&gt; &lt;span class="n"&gt;ImageFilter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;sigmaX:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;sigmaY:&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Container&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;Color&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x00000000&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thanks to &lt;a href="https://stackoverflow.com/users/10036882/sahil-kumar" rel="noopener noreferrer"&gt;Sahil Kumar&lt;/a&gt; for this solution!&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The hero of blurring is  &lt;strong&gt;&lt;code&gt;ImageFiltered&lt;/code&gt;&lt;/strong&gt;.  Avoid the hassle of &lt;code&gt;BackdropFilter&lt;/code&gt; - no confusing child &lt;code&gt;Container&lt;/code&gt; that needs a color, less worrying about positioning widgets inside of &lt;code&gt;Stack&lt;/code&gt;. &lt;code&gt;BackdropFilter&lt;/code&gt; only shines when you want to blur part of a widget or screen. &lt;/p&gt;

&lt;p&gt;Are you still confused about blurring in Flutter? Feel free to comment or PM me and I will gladly help you and update this article!&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>blur</category>
      <category>imagefiltered</category>
      <category>backdropfilter</category>
    </item>
  </channel>
</rss>
