flutter_physics_ui

pub package License: MIT Platform

Physics-based UI elements that respond to touch and gravity. Create engaging, interactive user interfaces with realistic physics simulations.

Features

  • 🎯 Touch Responsive: UI elements respond naturally to touch interactions
  • 🌍 Gravity Physics: Realistic gravity effects and physics simulations
  • πŸ“± Multi-Platform: Supports all 6 platforms (iOS, Android, Web, Windows, macOS, Linux)
  • ⚑ WASM Compatible: Optimized web performance with WebAssembly
  • πŸš€ High Performance: Built with Flutter's rendering engine for smooth animations
  • 🎨 Customizable: Easy to customize physics parameters and visual styles

Platform Support

Platform Status Notes
iOS βœ… Supported Full physics engine support
Android βœ… Supported Optimized for mobile performance
Web βœ… Supported WASM compatible for best performance
Windows βœ… Supported Native Windows physics rendering
macOS βœ… Supported Native macOS physics rendering
Linux βœ… Supported Native Linux physics rendering

Getting Started

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  flutter_physics_ui: ^0.0.1

Basic Usage

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

class PhysicsExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Physics UI Example')),
      body: Center(
        child: PhysicsContainer(
          child: Text('Touch me!'),
          physics: PhysicsProperties(
            gravity: 9.8,
            friction: 0.8,
            restitution: 0.7,
          ),
        ),
      ),
    );
  }
}

API Reference

PhysicsContainer

A container widget that applies physics effects to its child.

PhysicsContainer({
  required Widget child,
  PhysicsProperties? physics,
  VoidCallback? onTap,
  VoidCallback? onPhysicsUpdate,
})

PhysicsProperties

Configuration for physics behavior.

PhysicsProperties({
  double gravity = 9.8,
  double friction = 0.5,
  double restitution = 0.8,
  Vector2? initialVelocity,
  bool enableRotation = true,
})

Examples

Check out the example/ directory for complete working examples:

  • Basic physics container
  • Interactive physics playground
  • Custom physics behaviors
  • Platform-specific optimizations

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

If you encounter any issues or have questions, please:

  1. Check the issue tracker
  2. Create a new issue with detailed information
  3. Join our community discussions

Made with ❀️ by Dhia Bechattaoui

Libraries

flutter_physics_ui
A Flutter package providing physics-based UI elements that respond to touch and gravity.