Flutter圆形涟漪导航插件circle_ripple_navigation的使用

Flutter圆形涟漪导航插件circle_ripple_navigation的使用

Circle Ripple Navigation

开始使用

这个插件可以用来创建涟漪导航效果。

步骤 1

定义一个 GlobalKey 用于控制涟漪动画。

GlobalKey<RippleLocationState> rippleControllerKey = GlobalKey();

步骤 2

在需要触发涟漪效果的地方添加 RippleLocation 组件,并设置 rippleController 属性为上面定义的 GlobalKey。当点击按钮时,会触发涟漪动画并切换到新的页面。

floatingActionButton: RippleLocation(
  rippleController: rippleControllerKey,
  child: FloatingActionButton(
    onPressed: () {
      rippleControllerKey.currentState?.pushRippleTransitionPage(
        context,
        Scaffold(appBar: AppBar()),
      );
    },
    child: Icon(Icons.add),
  ),
)

完整示例代码

以下是一个完整的示例代码,展示了如何使用 circle_ripple_navigation 插件。

import 'package:flutter/material.dart';
import 'package:ripple_navigation_dart3/circle_ripple_navigation.dart';

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // 定义一个 GlobalKey 用于控制涟漪动画
  GlobalKey<RippleLocationState> rippleControllerKey = GlobalKey();

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('涟漪导航示例'),
        ),
        // 添加 RippleLocation 组件,并设置 rippleController 属性
        floatingActionButton: RippleLocation(
          rippleController: rippleControllerKey,
          child: FloatingActionButton(
            onPressed: () {
              // 触发涟漪动画并切换到新的页面
              rippleControllerKey.currentState?.pushRippleTransitionPage(
                context,
                Scaffold(appBar: AppBar(title: Text("新页面"))),
              );
            },
            child: Icon(Icons.add),
          ),
        ),
        body: Center(
          child: Text("主页面"),
        ),
      ),
    );
  }
}

更多关于Flutter圆形涟漪导航插件circle_ripple_navigation的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter圆形涟漪导航插件circle_ripple_navigation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


circle_ripple_navigation 是一个用于 Flutter 的插件,它允许你在应用中创建一种独特的圆形涟漪导航效果。这个插件通常用于在用户点击某个按钮或区域时,展示一个从点击点扩散的圆形涟漪效果,然后导航到另一个页面。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 circle_ripple_navigation 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  circle_ripple_navigation: ^1.0.0  # 请检查最新版本

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

使用插件

以下是一个简单的示例,展示如何使用 circle_ripple_navigation 插件来实现圆形涟漪导航效果。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Circle Ripple Navigation'),
      ),
      body: Center(
        child: CircleRippleNavigation(
          child: Text('Tap to Navigate'),
          onTap: () {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => SecondPage()),
            );
          },
        ),
      ),
    );
  }
}

class SecondPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Second Page'),
      ),
      body: Center(
        child: Text('You navigated here!'),
      ),
    );
  }
}

参数说明

CircleRippleNavigation 组件的主要参数包括:

  • child: 要显示的子组件,通常是按钮或文本。
  • onTap: 当用户点击时触发的回调函数,通常用于导航到另一个页面。
  • color: 涟漪的颜色,默认是 Colors.blue
  • radius: 涟漪的最大半径,默认是 100.0
  • duration: 涟漪动画的持续时间,默认是 Duration(milliseconds: 500)

自定义示例

你可以通过调整参数来自定义涟漪效果。例如:

CircleRippleNavigation(
  child: Container(
    padding: EdgeInsets.all(20),
    color: Colors.blue,
    child: Text(
      'Tap Me',
      style: TextStyle(color: Colors.white, fontSize: 20),
    ),
  ),
  onTap: () {
    Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => SecondPage()),
    );
  },
  color: Colors.red,
  radius: 200.0,
  duration: Duration(milliseconds: 1000),
)
回到顶部