Flutter图像模糊效果插件flutter_blur_shower的使用

Flutter图像模糊效果插件flutter_blur_shower的使用

flutter_blur_shower

A Flutter package to apply Gaussian blur to the background of dialogs, popups, and modalBottomSheets.

特性

  • 对对话框背景应用高斯模糊。
  • 对模态底部面板背景应用高斯模糊。
  • 简单易用的API。

安装

pubspec.yaml 文件中添加 flutter_blur_shower 依赖:

dependencies:
  flutter_blur_shower: ^0.1.0

然后运行 flutter pub get 来安装包。

使用

初始化

在使用模糊效果之前,使用 FlutterBlurShower 进行初始化,设置所需的模糊强度和背景颜色:

FlutterBlurShower.init(
  sigma: 10.0,
  backgroundColor: Colors.black.withOpacity(0.5),
);

显示模糊对话框

要显示一个带有模糊背景的对话框,可以使用 showBlurDialog

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

void _showDialog(BuildContext context) {
  showBlurDialog(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: Text('Blur Dialog'),
        content: Text('This is a dialog with a blurred background.'),
        actions: [
          TextButton(
            child: Text('Close'),
            onPressed: () {
              Navigator.of(context).pop();
            },
          ),
        ],
      );
    },
  );
}

显示模糊模态底部面板

要显示一个带有模糊背景的模态底部面板,可以使用 showBlurModalBottomSheet

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

void _showModalBottomSheet(BuildContext context) {
  showBlurModalBottomSheet(
    context: context,
    builder: (BuildContext context) {
      return Container(
        height: 200,
        child: Center(
          child: Text('This is a modal bottom sheet with a blurred background.'),
        ),
      );
    },
  );
}

API 参考

FlutterBlurShower

  • FlutterBlurShower.init({required double sigma, required Color backgroundColor})

    使用给定的 sigma(模糊强度)和 backgroundColor 初始化 FlutterBlurShower

  • FlutterBlurShower.instance

    FlutterBlurShower 的单例实例。

  • double get sigma

    返回模糊强度值。

  • Color get backgroundColor

    返回背景颜色。

示例

以下是一个完整的示例,演示如何使用 flutter_blur_shower

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

void main() {
  FlutterBlurShower.init(
    sigma: 10.0,
    backgroundColor: Colors.black.withOpacity(0.5),
  );

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Blur Shower Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                child: const Text('Show Blur Dialog'),
                onPressed: () => _showDialog(context),
              ),
              ElevatedButton(
                child: const Text('Show Blur Modal Bottom Sheet'),
                onPressed: () => _showModalBottomSheet(context),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void _showDialog(BuildContext context) {
    showBlurDialog(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: const Text('Blur Dialog'),
          content: const Text('This is a dialog with a blurred background.'),
          actions: [
            TextButton(
              child: const Text('Close'),
              onPressed: () {
                Navigator.of(context).pop();
              },
            ),
          ],
        );
      },
    );
  }

  void _showModalBottomSheet(BuildContext context) {
    showBlurModalBottomSheet(
      context: context,
      builder: (BuildContext context) {
        return const SizedBox(
          height: 200,
          child: Center(
            child: Text('This is a modal bottom sheet with a blurred background.'),
          ),
        );
      },
    );
  }
}

更多关于Flutter图像模糊效果插件flutter_blur_shower的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter图像模糊效果插件flutter_blur_shower的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter应用中使用flutter_blur_shower插件来实现图像模糊效果的代码示例。

首先,确保你的pubspec.yaml文件中已经添加了flutter_blur_shower依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_blur_shower: ^x.y.z  # 请将x.y.z替换为当前最新版本号

然后,运行flutter pub get来获取依赖。

接下来,在你的Dart文件中使用flutter_blur_shower。下面是一个完整的示例,展示如何在Flutter应用中实现图像模糊效果:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Blur Shower Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Image.network(
                'https://via.placeholder.com/600x400',
                width: 300,
                height: 200,
              ),
              SizedBox(height: 20),
              BlurShower(
                imageUrl: 'https://via.placeholder.com/600x400',
                width: 300,
                height: 200,
                blur: 20, // 模糊强度,数值越大越模糊
                blurType: BlurType.light, // 模糊类型,可以是light或heavy
                child: Container(
                  color: Colors.black.withOpacity(0.3), // 覆盖层颜色及透明度
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 导入必要的包:导入flutter/material.dartflutter_blur_shower/flutter_blur_shower.dart

  2. 定义主应用:在MyApp中,我们创建了一个简单的MaterialApp,并在其home属性中设置了一个Scaffold

  3. 添加原始图像:使用Image.network从网络加载一个图像,并设置其宽度和高度。

  4. 添加模糊效果的图像:使用BlurShower组件,该组件接受图像URL、宽度、高度、模糊强度(blur)和模糊类型(blurType)等参数。BlurType可以是lightheavy,表示不同的模糊效果。child参数是一个覆盖在模糊图像上的容器,可以自定义其颜色和透明度。

请注意,BlurShower组件内部实际上是通过一些渲染技巧来实现模糊效果的,因此它可能需要一些时间来完成图像的加载和模糊处理,特别是在图像较大或网络较慢的情况下。

此外,由于flutter_blur_shower是一个第三方库,其API可能会随着版本的更新而发生变化,因此请确保查阅最新的文档以获取最准确的信息。

回到顶部