fledge_window 0.1.2
fledge_window: ^0.1.2 copied to clipboard
Window management plugin for the Fledge ECS game framework. Provides fullscreen, borderless, and windowed modes with runtime switching.
fledge_window #
Window management plugin for Fledge games. Fullscreen, borderless, and windowed modes with runtime switching.
Features #
- Window Modes: Fullscreen, borderless, and windowed
- Runtime Switching: Toggle modes during gameplay
- Display Info: Query monitor resolution and properties
- Window Events: React to resize, focus, and mode changes
Installation #
dependencies:
fledge_window: ^0.1.0
Quick Start #
import 'package:fledge_ecs/fledge_ecs.dart';
import 'package:fledge_window/fledge_window.dart';
void main() async {
// Fullscreen game
final app = App()
..addPlugin(WindowPlugin.fullscreen(title: 'My Game'))
..addPlugin(TimePlugin());
await app.run();
}
Window Modes #
Three modes are supported:
- Fullscreen: True exclusive fullscreen
- Borderless: Frameless window matching display size
- Windowed: Standard window with title bar
Runtime Mode Switching #
// Toggle fullscreen
world.toggleFullscreen();
// Set specific mode
world.setWindowMode(WindowMode.borderless);
// Cycle through modes
world.cycleWindowMode();
Listening to Events #
for (final event in world.eventReader<WindowModeChanged>().read()) {
print('Mode: ${event.previousMode} -> ${event.newMode}');
}
for (final event in world.eventReader<WindowResized>().read()) {
// Update camera viewport
}
for (final event in world.eventReader<WindowFocusChanged>().read()) {
if (!event.isFocused) {
// Pause game
}
}
Querying State #
final state = world.windowState;
print('Mode: ${state?.mode}');
print('Size: ${state?.size}');
final info = world.displayInfo;
print('Primary: ${info?.primary.name}');
print('Resolution: ${info?.primary.size}');
Documentation #
See the Window Guide for detailed documentation.
Related Packages #
- fledge_ecs - Core ECS framework
- fledge_input - Input handling
- fledge_audio - Audio (pauses on focus loss)
License #
Apache 2.0 - See LICENSE for details.