Flutter之毛玻璃/模糊效果

2021-04-13  本文已影响0人  Janise001

对图片的模糊处理
Flutter没有单独的模糊处理容器,需要部件层层叠加实现模糊效果


毛玻璃/模糊效果图.png

(图片如有侵权,请联系作者删除)

import 'package:flutter/material.dart';
import 'dart:ui';

class FrostedGlassDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Stack(
          children: [
            ConstrainedBox(
              constraints: BoxConstraints.expand(),
              child: Image.network(
                  'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2496571732,442429806&fm=26&gp=0.jpg'),
            ),
            Center(
              child: ClipRect(  // 可裁切矩形
                child: BackdropFilter(  // 背景过滤器
                  filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0),
                  child: Opacity(
                    opacity: 0.5,
                    child: Container(
                      alignment: Alignment.center,
                      height: double.infinity,
                      width: double.infinity,
                      decoration: BoxDecoration(
                        color: Colors.grey.shade500
                      ),
                      child: Text('Janise',style: Theme.of(context).textTheme.display3,),
                    ),
                  ),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

红色背景代码中已删除,可自行添加,
ClipRect 可裁切矩形
BackdropFilter 背景过滤器,其中blur方法中的sigmaX和sigmaY是模糊参数,Opacity为设置透明部件,


图层组成

模糊的面积大小取决于Container的大小,BackdropFilter背景过滤器中filter只对child有用。

上一篇 下一篇

猜你喜欢

热点阅读