mac_notch_ui 0.0.4 copy "mac_notch_ui: ^0.0.4" to clipboard
mac_notch_ui: ^0.0.4 copied to clipboard

PlatformmacOS

A Flutter package to create a "Notch" style UI on macOS with smooth animations and hover effects, similar to dynamic islands.

notch_3 (1) (1)# macOS Notch UI

A Flutter package that brings the native macOS notch experience to your Flutter desktop apps. Create interactive, animated, and customizable notch-style windows that hover at the top of the screen.

Designed with a focus on native performance and Flutter flexibility. notch_3 (1) (1)

✨ Features #

  • Native macOS Integration: Uses native NSWindow for a seamless "always-on-top" experience.
  • Smooth Animations: Native-driven animations for opening, closing, and resizing with a delightful bounce effect.
  • Flutter Content: Render any Flutter widget inside the notch.
  • Hover Detection: Automatically expands or reacts when the mouse hovers over the notch area.
  • Dynamic Resizing: distinct open and closed sizes with smooth interpolation.
  • Customizable Appearance:
    • Adjust width, height, and corner radius.
    • Configurable blur intensity (Glassmorphism).
    • Custom background colors and opacity.
  • Screenshare Privacy: Option to automatically hide the notch during screen sharing or screenshots.
  • Multi-Monitor Support: (Experimental) Works across different screens.

📦 Installation #

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

dependencies:
  mac_notch_ui: ^1.0.0

🚀 Usage #

The easiest way to use this package is with the MacNotchWidget, which handles all the animations and state management for you.

1. Initialize the Plugin #

In your main() or base widget, enable the notch mode.

final _macNotchUiPlugin = MacNotchUi();

@override
void initState() {
  super.initState();
  // Initialize transparent window and notch mode
  _macNotchUiPlugin.enableNotchMode(blurIntensity: 1.0);
}

2. Use the Widget #

Wrap your content in MacNotchWidget.

MacNotchWidget(
  isOpen: _isExpanded, // Control state
  onExpansionChanged: (isOpen) => setState(() => _isExpanded = isOpen),
  
  // Customization
  closedSize: const Size(130, 30),
  openSize: const Size(500, 300),
  openRadius: 24,
  blurIntensity: 0.8,
  
  builder: (closeNotch) {
    return Container(
      padding: EdgeInsets.all(20),
      child: Column(
        children: [
          Text("My Notch App"),
          ElevatedButton(
            onPressed: closeNotch, 
            child: Text("Close")
          ),
        ],
      ),
    );
  },
)

⚙️ Advanced Configuration #

Controller API #

You can control the native window directly using the MacNotchUi class:

// Resize the window directly
await MacNotchUi().animateWindowSize(500, 400, radius: 20, duration: 0.5);

// Update background blur
await MacNotchUi().setBlurIntensity(0.5);

// Hide from screenshares
await MacNotchUi().setScreenshareVisibility(false);

Hover Detection #

Listen to the hover stream to build passive interactions:

MacNotchUi().onHoverZone.listen((isHovered) {
  if (isHovered) {
    print("Mouse is over the notch!");
    // Trigger expansion or show a preview
  }
});

🔧 Platform Support #

Platform Supported
macOS
Windows
Linux
Mobile

Note: This package relies on macOS-specific windowing APIs (NSWindow, NSVisualEffectView).

❤️ Contributing #

Contributions are welcome! If you find a bug or want to feature, please open an issue.

✍️ Author #

Created with passion by Ahmed Douss.

2
likes
160
points
205
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package to create a "Notch" style UI on macOS with smooth animations and hover effects, similar to dynamic islands.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSL-1.0 (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on mac_notch_ui

Packages that implement mac_notch_ui