美文网首页Flutter
Flutter 高斯模糊效果详解

Flutter 高斯模糊效果详解

作者: StevenHu_Sir | 来源:发表于2019-10-10 12:29 被阅读0次

1.高斯模糊不限定大小

1.1-代码封装

import 'dart:ui';
/// describe
/// 高斯模糊效果合集
/// created by hujintao
/// created at 2019-09-12
//
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:fpdxapp/utils/screen.dart';

/// 矩形高斯模糊效果
class BlurRectWidget extends StatefulWidget {
  final Widget child;

  /// 模糊值
  final double sigmaX;
  final double sigmaY;

  /// 透明度
  final double opacity;

  /// 外边距
  final EdgeInsetsGeometry blurMargin;

  /// 圆角
  final BorderRadius borderRadius;

  const BlurRectWidget({
    Key key,
    this.child,
    this.sigmaX,
    this.sigmaY,
    this.opacity,
    this.blurMargin,
    this.borderRadius,
  }) : super(key: key);

  @override
  _BlurRectWidgetState createState() => _BlurRectWidgetState();
}

class _BlurRectWidgetState extends State<BlurRectWidget> {
  @override
  Widget build(BuildContext context) {
    return Container(
      margin: widget.blurMargin != null
          ? widget.blurMargin
          : EdgeInsets.only(bottom: ScreenUtil().setHeight(20)),
      child: ClipRRect(
        borderRadius: widget.borderRadius == null ? BorderRadius.only(
            topLeft: Radius.circular(10), topRight: Radius.circular(10)) : widget.borderRadius,
        child: BackdropFilter(
          filter: ImageFilter.blur(
            sigmaX: this.widget.sigmaX != null ? this.widget.sigmaX : 10,
            sigmaY: this.widget.sigmaY != null ? this.widget.sigmaY : 10,
          ),
          child: Container(
            color: Colors.white10,
            child: this.widget.opacity != null
                ? Opacity(
                    opacity: widget.opacity,
                    child: this.widget.child,
                  )
                : this.widget.child,
          ),
        ),
      ),
    );
  }
}

1.2 使用

Stack(
  overflow: Overflow.clip,
  alignment: Alignment(-1, 1),
  children: <Widget>[
    // 背景图片
    Container(
      decoration: BoxDecoration(
          color: Color(0xffF3F4F5),
          borderRadius: BorderRadius.only(
            topLeft: Radius.circular(10.0),
            topRight: Radius.circular(10.0),
          ),
          image: DecorationImage(
              image: NetworkImage(getBackgroundImage(item)),
              fit: BoxFit.cover) //设置图片的填充模式
          ),
      margin: EdgeInsets.only(bottom: ScreenUtil().setHeight(20)),
    ),
    // 矩形高斯模糊效果
    BlurRectWidget(
      child: Container(),
      sigmaY: alpha,
      sigmaX: alpha,
    ), 
    ],
)

1.3 效果图

image.png

2.高斯模糊限定容器大小

关键代码

// 头像
  Stack(
    alignment: Alignment.center,
    children: <Widget>[
      // 头像
      Container(
        width: ScreenUtil().setWidth(90),
        height: ScreenUtil().setWidth(90),
        decoration: BoxDecoration(
            color: Colors.blue,
            borderRadius: BorderRadius.circular(
                ScreenUtil().setWidth(45)),
            image: DecorationImage(
              alignment: Alignment.center,
              image: NetworkImage(
                item != null && item.user.headimgurl != null
                    ? item.user.headimgurl
                    : '',
              ),
            )),
      ),
      // 高斯模糊
      Stack(
        children: <Widget>[
          Center(
            child: ClipOval(
              child: BackdropFilter(
                filter: ImageFilter.blur(
                  sigmaX: alpha,
                  sigmaY: alpha,
                ),
                child: Container(
                  alignment: Alignment.center,
                  width: ScreenUtil().setWidth(90),
                  height: ScreenUtil().setWidth(90),
                  child: Text(
                    '   ',
                    style: TextStyle(fontSize: 20),
                  ),
                  color: Colors.white10,
                ),
              ),
            ),
          ),
        ],
      )
    ],
  ),

效果图

image.png

相关文章

  • Flutter 高斯模糊效果详解

    1.高斯模糊不限定大小 1.1-代码封装 1.2 使用 1.3 效果图 2.高斯模糊限定容器大小 关键代码 效果图

  • flutter高斯模糊效果(二)

    高斯模糊_毛玻璃效果代码拿过就能使用,需要传一个图片Url哦~具体代码如下: 效果如下: 请关注我的简书吧,以后我...

  • 快速模糊算法

    图片模糊算法有均值模糊和高斯模糊,均值模糊快速但效果不如高斯,高斯模糊效果好但效率慢。 一种快速模糊算法:算法取自...

  • 高斯模糊

    高斯模糊 【iOS 开发】实现毛玻璃(高斯模糊)效果 - CocoaChina_让移动开发更简单

  • 抄来的一个高斯模糊

    抄来的高斯模糊效果不错

  • flutter 高斯实现模糊

    flutter的高斯模糊其实是一个模糊化处理的Container元素块 定位在图片的上层

  • 图片高斯模糊效果

    iOS开发的时候有的时候需要将图片设置模糊,或者通过点击下拉方法,去除模糊。关于图片实现高斯模糊效果有三种方式,C...

  • 苹果高斯模糊效果

    http://blog.csdn.net/niuhailei/article/details/52457201

  • 背景高斯模糊效果

  • Android高斯模糊效果

    参考:https://android.ctolib.com/github-BlurView.html效果: 1、添...

网友评论

    本文标题:Flutter 高斯模糊效果详解

    本文链接:https://www.haomeiwen.com/subject/rpbopctx.html