newton_particles 0.3.0 copy "newton_particles: ^0.3.0" to clipboard
newton_particles: ^0.3.0 copied to clipboard

Create stunning animations with configurable particle emitters. Add rain, smoke, and more effects to your Flutter app!

Newton logo

License: MIT pub package

Particle Emitter for Flutter #

Newton is a highly configurable particle emitter package for Flutter, now with advanced support for both deterministic and physics-based animations. With Newton, you can create captivating animations such as rain, smoke, explosions, and more, along with realistic physics-driven effects like gravity and collisions. This allows you to easily add both visually stunning and physically accurate effects to your Flutter applications, enhancing the user experience with dynamic and interactive animations.

ezgif-2-55326df4fb

Features #

  • Highly Configurable: Newton offers an extensive range of options to fine-tune your particle animations. You can adjust particle appearance, behavior, movement, and physics properties, providing complete control over your animations.

  • Interactive Animation Configurator: Create your particle animations visually using the included app configurator. Experiment with different settings, preview animations in real-time, and copy the generated code directly into your project.

  • Custom Particle Design: Design your particle effects to seamlessly integrate with your app’s aesthetic. Use custom shapes, colors, and sizes to craft truly unique animations that suit your needs.

  • Comprehensive Documentation: Detailed guides and examples are available to help you easily create popular particle effects like rain, smoke, and explosions.

  • Widget Collisions: Particles can interact with Flutter widgets using NewtonCollider, creating engaging interactive effects with accurate physics including support for rounded corners.

  • Efficient Performance: Newton is optimized for performance, ensuring smooth animations even on lower-end devices without compromising on visual quality.

Installation #

To use Newton, simply add it as a dependency in your pubspec.yaml file:

dependencies:
  newton_particles: ^0.3.0

Then, run flutter pub get to fetch the package.

What's New in 0.3.0 #

Breaking Changes #

  • Renamed Physics Effects: RelativisticEffect is now PhysicsEffect and RelativisticEffectConfiguration is now PhysicsEffectConfiguration for better clarity. The old names are deprecated.
  • Revamped Configuration API: Configuration properties are now organized into logical groups (PhysicsProperties, VisualProperties, EmissionProperties, etc.) for better type safety and code organization. See the Migration Guide for upgrade instructions.

Major Features #

  • Widget Collisions: New NewtonCollider widget allows particles to collide with Flutter widgets! Create interactive effects where particles bounce off UI elements with accurate physics, including support for rounded corners, friction, and restitution.
  • Effect Presets: Quick-start presets for common effects including confetti, rain, snow, explosions, and fountains. Perfect for rapid prototyping or production use.
  • Code Generator: Enhanced configurator now allows you to copy generated code directly! Configure your effects visually and get ready-to-use Dart code with a single click.
  • Particle Pool: Memory-efficient particle reuse system that reduces allocations and improves performance.
  • Debug Data Stream: Real-time monitoring of particle effects with debugDataStream for tracking active particles and performance metrics.

Performance Improvements #

  • Viewport Culling: Particles outside the visible area are now automatically culled, dramatically improving performance for large particle counts.
  • Optimized Rendering: Improved particle sorting and fixture caching for smoother animations.
  • Optimized Collider Reporting: Reduced unnecessary work in collider position reporting.

Bug Fixes #

  • Fixed clearEffects() not triggering widget rebuilds
  • Fixed colliders stopping to work when configuration properties change
  • Improved collider stability and preservation during widget rebuilds
  • Enhanced collider syncing to physics effects

Usage #

  1. Import the Newton package:
import 'package:newton_particles/newton_particles.dart';
  1. Create a Newton widget and add it to your Flutter UI with the desired effects:
Newton(
    // Add any kind of effects to your UI
    // For example:
    effectConfigurations: [
        PhysicsEffectConfiguration(
            physicsProperties: const PhysicsProperties(
                gravity: Gravity.earthGravity,
                angle: NumRange.single(90),
                velocity: NumRange.between(Velocity.stationary, Velocity.stationary),
            ),
            visualProperties: const VisualProperties(
                endScale: NumRange.single(1),
                fadeOutThreshold: NumRange.between(0.6, 0.8),
            ),
            emissionProperties: const EmissionProperties(
                origin: Offset.zero,
                maxOriginOffset: Offset(1, 0),
                particleLifespan: DurationRange.between(Duration(seconds: 7), Duration(seconds: 10)),
            ),
            particleConfiguration: const ParticleConfiguration(
                shape: CircleShape(),
                size: Size(5, 5),
            ),
        ),
    ],
)

Try our effect configurator to tweak your effect and copy the generated code directly into your project.

Example #

For a quick start, here's an example of creating a simple rain effect using Newton:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Newton Rain Example')),
        body: Newton(
          effectConfigurations: [
            PhysicsEffectConfiguration(
              physicsProperties: const PhysicsProperties(
                gravity: Gravity.earthGravity,
                angle: NumRange.single(90),
                velocity: NumRange.between(Velocity.stationary, Velocity.stationary),
              ),
              visualProperties: const VisualProperties(
                endScale: NumRange.single(1),
                fadeOutThreshold: NumRange.between(0.6, 0.8),
              ),
              emissionProperties: const EmissionProperties(
                origin: Offset.zero,
                maxOriginOffset: Offset(1, 0),
                particleLifespan: DurationRange.between(Duration(seconds: 7), Duration(seconds: 10)),
              ),
              particleConfiguration: const ParticleConfiguration(
                shape: CircleShape(),
                size: Size(5, 5),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Documentation #

For detailed documentation and examples, visit the Newton Documentation.

Contributing #

We welcome contributions from the community! If you find any issues or have ideas for improvements, feel free to open an issue or submit a pull request on GitHub.

License #

This project is licensed under the MIT License.


Note: This package is under active development, and breaking changes might be introduced in future versions until a stable 1.0.0 release. Please review the changelog when updating versions.

110
likes
160
points
6.39k
downloads

Publisher

verified publisher7omtech.fr

Weekly Downloads

Create stunning animations with configurable particle emitters. Add rain, smoke, and more effects to your Flutter app!

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

collection, flutter, forge2d, uuid, vector_math

More

Packages that depend on newton_particles