How do I do the "frosted glass" effect in Flutter? How do I do the "frosted glass" effect in Flutter? dart dart

How do I do the "frosted glass" effect in Flutter?


You can use the BackdropFilter widget to achieve this effect.

screenshot

import 'dart:ui';import 'package:flutter/material.dart';void main() {  runApp(new MaterialApp(home: new FrostedDemo()));}class FrostedDemo extends StatelessWidget {  @override  Widget build(BuildContext context) {    return new Scaffold(      body: new Stack(        children: <Widget>[          new ConstrainedBox(            constraints: const BoxConstraints.expand(),            child: new FlutterLogo()          ),          new Center(            child: new ClipRect(              child: new BackdropFilter(                filter: new ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0),                child: new Container(                  width: 200.0,                  height: 200.0,                  decoration: new BoxDecoration(                    color: Colors.grey.shade200.withOpacity(0.5)                  ),                  child: new Center(                    child: new Text(                      'Frosted',                      style: Theme.of(context).textTheme.display3                    ),                  ),                ),              ),            ),          ),        ],      ),    );  }}


I think I don't know the exact meaning of 'Frosted'(If my example didnot work here),

import 'package:flutter/material.dart';import 'dart:ui' as ui;void main() => runApp(    MaterialApp(        title: "Frosted glass",        home: new HomePage()    ));class HomePage extends StatelessWidget {  @override  Widget build(BuildContext context) {    return new Scaffold(      body: new Stack(        fit: StackFit.expand,        children: <Widget>[          generateBluredImage(),          new Column(            mainAxisAlignment: MainAxisAlignment.center,            children: <Widget>[              rectShapeContainer(),            ],          ),        ],      ),    );  }  Widget generateBluredImage() {    return new Container(      decoration: new BoxDecoration(        image: new DecorationImage(          image: new AssetImage('assets/images/huxley-lsd.png'),          fit: BoxFit.cover,        ),      ),      //I blured the parent container to blur background image, you can get rid of this part      child: new BackdropFilter(        filter: new ui.ImageFilter.blur(sigmaX: 3.0, sigmaY: 3.0),        child: new Container(          //you can change opacity with color here(I used black) for background.          decoration: new BoxDecoration(color: Colors.black.withOpacity(0.2)),        ),      ),    );  }  Widget rectShapeContainer() {    return Container(      margin: const EdgeInsets.symmetric(horizontal: 40.0, vertical: 10.0),      padding: const EdgeInsets.all(15.0),      decoration: new BoxDecoration(        //you can get rid of below line also        borderRadius: new BorderRadius.circular(10.0),        //below line is for rectangular shape        shape: BoxShape.rectangle,        //you can change opacity with color here(I used black) for rect        color: Colors.black.withOpacity(0.5),        //I added some shadow, but you can remove boxShadow also.        boxShadow: <BoxShadow>[          new BoxShadow(            color: Colors.black26,            blurRadius: 5.0,            offset: new Offset(5.0, 5.0),          ),        ],      ),      child: new Column(        children: <Widget>[          new Text(            'There\'s only one corner of the universe you can be certain of improving and that\'s your own self.',            style: new TextStyle(              color: Colors.white,              fontSize: 20.0,            ),          ),        ],      ),    );  }}

Outcome:

enter image description here

I hope this will help someone.


To achieve the desired output we can use a blurrycontainer package

blurrycontainer make Container with Frosty Glass effect where you can control blur radius, height, blur color etc.

import 'package:flutter/material.dart';import 'package:podo/widgets/blurry_container.dart';class TestApp extends StatelessWidget {  @override  Widget build(BuildContext context) {    return MaterialApp(      debugShowCheckedModeBanner: false,      home: Scaffold(        body: Container(          height: double.infinity,          width: double.infinity,          decoration: BoxDecoration(            color: Colors.white,            image: DecorationImage(              fit: BoxFit.cover,              image: NetworkImage('https://ranjeetrocky.000webhostapp.com/bg5.jpg'),            ),          ),          child: SafeArea(            child: Column(              mainAxisAlignment: MainAxisAlignment.spaceEvenly,              children: <Widget>[                BlurryContainer(                  borderRadius: BorderRadius.circular(20),                  bgColor: Colors.white,                  height: 150,                  width: 250,                ),                BlurryContainer(                  borderRadius: BorderRadius.circular(20),                  bgColor: Colors.black,                  height: 150,                  width: 350,                ),                BlurryContainer(                  borderRadius: BorderRadius.circular(20),                  bgColor: Colors.purple,                  blur: 2,                  height: 120,                  width: 150,                ),                BlurryContainer(                  borderRadius: BorderRadius.circular(20),                  bgColor: Colors.lightBlueAccent,                  height: 180,                  width: 180,                ),              ],            ),          ),        ),      ),    );  }}

enter image description here