# Installation - [Requirements](#requirements) - [Installation](#installation-step) - [Basic Setup](#basic-setup) - [Alternative Setup](#alternative-setup) - [Verify Installation](#verify-installation) Getting started with Wind requires a few configuration steps to ensure utility classes resolve correctly across your application. ## Requirements Before adding Wind to your project, ensure your environment meets these minimum version requirements. We recommend staying on the latest stable versions for the best experience. | Dependency | Minimum Version | Recommended | |:-----------|:----------------|:------------| | Flutter | `>= 3.27.0` | `3.27.0+` | | Dart | `>= 3.4.0` | `3.6.0+` | ## Installation Add `fluttersdk_wind` to your `pubspec.yaml` using the Flutter CLI: ```bash flutter pub add fluttersdk_wind ``` Alternatively, add it manually to your dependencies: ```yaml dependencies: fluttersdk_wind: any # or pin to latest stable from pub.dev/packages/fluttersdk_wind ``` ## Basic Setup To use Wind utilities, you must wrap your application with the `WindTheme` widget. This provides the context needed for responsive breakpoints, dark mode, and state resolution. ### The Builder Pattern (Recommended) The `builder` pattern is the preferred way to initialize Wind. It provides a `controller` that synchronizes Wind's theme state (like dark mode) directly with your `MaterialApp`. Let's look at a typical implementation: ```dart import 'package:flutter/material.dart'; import 'package:fluttersdk_wind/fluttersdk_wind.dart'; void main() => runApp(const MyApp()); class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return WindTheme( // Always use the 'data' parameter for configuration data: WindThemeData(), builder: (context, controller) { return MaterialApp( title: 'Wind App', // Automatically syncs Material theme with Wind's state theme: controller.toThemeData(), home: const HomePage(), ); }, ); } } ``` By using the `builder` pattern, any theme changes triggered via `context.windTheme.toggleTheme()` will instantly propagate to both Wind widgets and native Material components. > [!NOTE] > Ensure you use the `data:` parameter. The `theme:` parameter found in earlier versions is deprecated and will result in compilation errors in v1. ## Alternative Setup If you do not need reactive synchronization with `MaterialApp` or are only using Wind in a specific subtree, you can use the `child` pattern: ```dart WindTheme( data: WindThemeData(), child: MaterialApp( home: const HomePage(), ), ) ``` While this setup works for Wind widgets like `WDiv` or `WText`, native Material widgets will not automatically react to Wind theme changes unless handled manually. ## Verify Installation To verify that Wind is correctly configured, add a `WDiv` with a few utility classes to your project: ```dart class HomePage extends StatelessWidget { const HomePage({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: WDiv( className: 'bg-blue-500 p-6 rounded-xl shadow-lg', child: WText( 'Wind is working!', className: 'text-white font-bold text-xl', ), ), ), ); } } ``` If you see a blue card with white text, the installation is successful.