Flutter原子反应动画插件atomic_reaction的使用

Flutter原子反应动画插件atomic_reaction的使用

Atomic Reaction

Pub.dev Badge GitHub Build Badge MIT License Badge Very Good Analysis Style Badge

Atomic Reaction 是一个用于Flutter的状态管理库,它利用原子设计原则来创建模块化和可扩展的状态管理解决方案。它旨在为您的Flutter应用程序提供清晰的状态、事件和操作管理结构。

开始使用

要将Atomic Reaction集成到您的Flutter项目中,请遵循以下简单步骤:

  1. pubspec.yaml文件中添加依赖项:

    dependencies:
      atomic_reaction: ^1.0.0
    

    ^1.0.0替换为pub.dev上可用的最新版本。

  2. 运行flutter pub get以安装包。

  3. 在Dart代码中导入库:

    import 'package:atomic_reaction/atomic_reaction.dart';
    

示例用法

以下是一个基本示例,演示如何在Flutter应用程序中使用Atomic Reaction来管理状态和事件。此示例包括一个简单的计数器应用。

// 定义一个分子来管理原子之间的交互
class CounterMolecule extends Molecule {
  CounterMolecule() {
    on(incrementEvent, (_) => counterState.value++);
    on(decrementEvent, (_) => counterState.value--);
    on(
      resetEvent,
      (_) {
        counterState.value = 0;
        showSnackBarAction('Counter reseted');
      },
      // 使用修饰符防止事件重复触发
      modifier: ListenerModifiers.debounceTime(const Duration(seconds: 1)),
    );
  }

  // 定义状态、事件和动作
  final counterState = StateAtom<int>(0);
  final incrementEvent = EventVoidAtom();
  final decrementEvent = EventVoidAtom();
  final resetEvent = EventVoidAtom();
  final showSnackBarAction = ActionAtom<String>();

  // 声明该分子管理的原子
  [@override](/user/override)
  List<Atom> get atoms => [
        counterState,
        incrementEvent,
        decrementEvent,
        resetEvent,
        showSnackBarAction,
      ];
}

// 定义主页小部件
class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final counterMolecule = CounterMolecule();

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 处理由分子触发的动作
    return ActionBond(
      atom: counterMolecule.showSnackBarAction,
      onAction: (snackBarText) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text(snackBarText)),
        );
      },
      child: Scaffold(
        appBar: AppBar(
          backgroundColor: Theme.of(context).colorScheme.inversePrimary,
          title: Text(widget.title),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              const Text(
                'You have pushed the button this many times:',
              ),
              // 监听状态原子以获取状态变化的通知
              StateBond(
                atom: counterMolecule.counterState,
                builder: (_, value) => Text(
                  '$value',
                  style: Theme.of(context).textTheme.headlineMedium,
                ),
              ),
            ],
          ),
        ),
        floatingActionButton: Row(
          mainAxisAlignment: MainAxisAlignment.end,
          mainAxisSize: MainAxisSize.min,
          children: [
            // 使用事件原子触发分子中的事件
            FloatingActionButton(
              onPressed: counterMolecule.incrementEvent,
              tooltip: 'Increment',
              child: const Icon(Icons.add),
            ),
            const SizedBox(width: 8),
            // 使用事件原子触发分子中的事件
            FloatingActionButton(
              onPressed: counterMolecule.decrementEvent,
              tooltip: 'Decrement',
              child: const Icon(Icons.remove),
            ),
            const SizedBox(width: 8),
            // 使用事件原子触发分子中的事件
            FloatingActionButton(
              onPressed: counterMolecule.resetEvent,
              tooltip: 'Reset',
              child: const Icon(Icons.refresh),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter原子反应动画插件atomic_reaction的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter原子反应动画插件atomic_reaction的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


atomic_reaction 是一个 Flutter 插件,用于创建类似于原子反应或粒子效果的动画。它可以帮助你在应用中实现炫酷的动画效果,比如粒子爆炸、粒子聚集等。以下是如何使用 atomic_reaction 插件的基本步骤。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  atomic_reaction: ^0.0.1  # 请检查最新版本

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

2. 导入插件

在你的 Dart 文件中导入 atomic_reaction 插件:

import 'package:atomic_reaction/atomic_reaction.dart';

3. 使用 AtomicReaction 组件

AtomicReactionatomic_reaction 插件中的主要组件,用于创建粒子动画。你可以通过配置 AtomicReaction 的参数来定制动画效果。

以下是一个简单的示例,展示如何使用 AtomicReaction

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

class AtomicReactionDemo extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Atomic Reaction Demo'),
      ),
      body: Center(
        child: AtomicReaction(
          // 配置粒子数量
          particleCount: 100,
          // 配置粒子颜色
          particleColor: Colors.blue,
          // 配置粒子大小
          particleSize: 5.0,
          // 配置动画持续时间
          duration: Duration(seconds: 2),
          // 配置动画触发方式
          trigger: AtomicReactionTrigger.tap,
          // 配置动画效果
          effect: AtomicReactionEffect.explode,
          child: Container(
            width: 100,
            height: 100,
            decoration: BoxDecoration(
              color: Colors.red,
              shape: BoxShape.circle,
            ),
          ),
        ),
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: AtomicReactionDemo(),
  ));
}
回到顶部