Skip to main content

添加 Material 点击涟漪效果

遵循 Material Design 指南的小部件在点击时会显示涟漪动画。

Flutter 提供了 InkWell 小部件来实现此效果。 使用以下步骤创建涟漪效果:

  1. 创建一个支持点击的小部件。
  2. 使用 InkWell 小部件将其包装起来,以管理点击回调和涟漪动画。
dart
// InkWell 包装了自定义扁平按钮小部件。
InkWell(
  // 当用户点击按钮时,显示一个 SnackBar。
  onTap: () {
    ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
      content: Text('Tap'),
    ));
  },
  child: const Padding(
    padding: EdgeInsets.all(12),
    child: Text('Flat Button'),
  ),
)

交互式示例

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

void main() => runApp(const MyApp());

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

  @override
  Widget build(BuildContext context) {
    const title = 'InkWell Demo';

    return const MaterialApp(
      title: title,
      home: MyHomePage(title: title),
    );
  }
}

class MyHomePage extends StatelessWidget {
  final String title;

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(title),
      ),
      body: const Center(
        child: MyButton(),
      ),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    // InkWell 包装了自定义扁平按钮小部件。
    return InkWell(
      // 当用户点击按钮时,显示一个 SnackBar。
      onTap: () {
        ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
          content: Text('Tap'),
        ));
      },
      child: const Padding(
        padding: EdgeInsets.all(12),
        child: Text('Flat Button'),
      ),
    );
  }
}