Flutter水波纹动画效果插件ripple_container的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter水波纹动画效果插件ripple_container的使用

特性

RippleContainer 提供了一个多功能的 Box 小部件,可以在 Flutter 应用程序中应用水波纹效果。

主要特性包括:

  • 应用水波纹效果
  • 简单直观的使用方式
  • 各种自定义选项(背景颜色、水波纹颜色、速度、大小等)
  • 兼容所有 Flutter 项目

如何使用

以下是一个简单的示例代码,展示如何在 Flutter 应用中使用 RippleContainer:

RippleContainer(
  width: 200,
  height: 100,
  backgroundColor: Colors.blueAccent,
  margin: const EdgeInsets.all(10),
  borderRadius: BorderRadius.circular(30),
  splashColor: Colors.amber,
  border: const Border.fromBorderSide(BorderSide(color: Colors.grey)),
  boxShadow: [
    BoxShadow(
      color: Colors.black.withOpacity(0.5),
      offset: const Offset(0, 2),
      blurRadius: 10,
    )
  ],
  onTap: () => tapTest('Button OnTap'),
  onLongPress: () => tapTest('Button OnLongPress'),
  child: const Text('Hi'),
)

示例

以下是一些示例代码,帮助你更好地理解如何使用 RippleContainer:

示例代码

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

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            RippleContainer(
              width: 200,
              height: 100,
              decoration: ContainerDecoration(
                backgroundColor: Colors.blueAccent,
                margin: const EdgeInsets.all(10),
                borderRadius: BorderRadius.circular(30),
                splashColor: Colors.amber,
                border: const Border.fromBorderSide(BorderSide(color: Colors.grey)),
                boxShadow: [
                  BoxShadow(
                    color: Colors.black.withOpacity(0.5),
                    offset: const Offset(0, 2),
                    blurRadius: 10,
                  )
                ],
              ),
              onTap: () => tapTest('Button OnTap'),
              onLongPress: () => tapTest('Button OnLongPress'),
              child: const Text('Hi'),
            ),
            Container(
              width: 200,
              height: 100,
              decoration: const BoxDecoration(
                  border: Border.fromBorderSide(BorderSide(color: Colors.red))),
              child: const Text('Hi'),
            )
          ],
        ),
      ),
    );
  }

  void tapTest(String testMessage) =>
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text(
            testMessage,
            style: TextStyle(color: Colors.white),
          ),
          duration: Duration(seconds: 1),
          showCloseIcon: true,
        ),
      );
}

展示效果

RippleContainer 示例

RippleContainer(
  width: 200,
  height: 100,
  backgroundColor: Colors.blueAccent,
  margin: const EdgeInsets.all(10),
  borderRadius: BorderRadius.circular(30),
  splashColor: Colors.amber,
  border: const Border.fromBorderSide(BorderSide(color: Colors.grey)),
  boxShadow: [
    BoxShadow(
      color: Colors.black.withOpacity(0.5),
      offset: const Offset(0, 2),
      blurRadius: 10,
    )
  ],
  onTap: () => tapTest('Button OnTap'),
  onLongPress: () => tapTest('Button OnLongPress'),
  child: const Text('Hi'),
)

原始 Container 示例

Container(
  width: 200,
  height: 100,
  decoration: const BoxDecoration(
    border: Border.fromBorderSide(BorderSide(color: Colors.red)),
  ),
  child: const Text('Hi'),
)

更多关于Flutter水波纹动画效果插件ripple_container的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter水波纹动画效果插件ripple_container的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter应用中使用ripple_container插件来实现水波纹动画效果的代码案例。首先,你需要确保你的Flutter项目中已经添加了ripple_container依赖。如果还没有添加,可以在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  ripple_container: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter应用中使用RippleContainer来实现水波纹动画效果。下面是一个完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Ripple Container Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: RippleContainerDemo(),
    );
  }
}

class RippleContainerDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Ripple Container Demo'),
      ),
      body: Center(
        child: RippleContainer(
          // 设置RippleContainer的属性
          color: Colors.grey[200],
          borderRadius: BorderRadius.circular(20),
          rippleColor: Colors.blue.withOpacity(0.5),
          rippleDuration: Duration(seconds: 1),
          rippleBorderRadius: BorderRadius.circular(50),
          child: Container(
            width: 200,
            height: 200,
            decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.circular(20),
            ),
            child: Center(
              child: Text(
                'Tap Me',
                style: TextStyle(fontSize: 24, color: Colors.blue),
              ),
            ),
          ),
          onTap: () {
            // 触发水波纹动画的回调函数
            print('Ripple Container tapped!');
          },
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个RippleContainerDemo页面,其中包含一个RippleContainerRippleContainer有以下主要属性:

  • color:容器背景颜色。
  • borderRadius:容器边框圆角。
  • rippleColor:水波纹的颜色。
  • rippleDuration:水波纹动画的持续时间。
  • rippleBorderRadius:水波纹的圆角半径。
  • child:容器的子组件。
  • onTap:点击容器时触发的回调函数。

当你运行这个应用并点击RippleContainer时,你会看到水波纹动画效果。

请注意,ripple_container插件的版本号和API可能会随着时间的推移而变化,因此请查阅最新的官方文档或pub.dev页面以获取最新信息和用法。

回到顶部