search ESC

Searching…

No results for "".

Type at least 2 characters to search.

Docs

Typography Helpers

Introduction

Wind provides a set of helper functions and extensions to access typography values directly from your Dart code. While utility classes are the primary way to style widgets, these helpers are essential when you need to calculate dimensions, pass styles to standard Material widgets, or build custom components that respect the design system.

Global Functions

These functions provide a safe way to resolve typography values using the current BuildContext.

wFontSize

The wFontSize function retrieves a pixel value from the theme's font size scale. It accepts the size name (e.g., 'sm', 'lg', '2xl') and returns the corresponding double.

double? size = wFontSize(context, 'lg'); // Returns 18.0 (default)

wFontWeight

The wFontWeight function resolves a named font weight into a Flutter FontWeight object.

FontWeight? weight = wFontWeight(context, 'bold'); // Returns FontWeight.w700

Supported weight names include thin, extralight, light, normal, medium, semibold, bold, extrabold, and black.

BuildContext Extensions

For a more ergonomic API, Wind extends BuildContext with shortcut methods. These are wrappers around the global functions and provide a cleaner syntax when working inside a build method.

// Font Size shortcut
final h1Size = context.wFontSizeExt('4xl');

// Font Weight shortcut
final strongWeight = context.wFontWeightExt('bold');

Theme Scale Access

If you need to iterate over the entire scale or access specific metadata, you can retrieve the WindThemeData object directly from the context.

final theme = context.windThemeData;

// Access the raw scales
Map sizes = theme.fontSizes;
Map weights = theme.fontWeights;
Map letterSpacing = theme.tracking;
Map lineHeights = theme.leading;
Map families = theme.fontFamilies;

This is particularly useful when building dynamic UI elements like font pickers or settings menus:

// Example: Listing all available font sizes
return ListView(
  children: context.windThemeData.fontSizes.keys.map((name) {
    return ListTile(
      title: Text('Size: $name'),
      trailing: Text('${context.wFontSizeExt(name)}px'),
    );
  }).toList(),
);

Customizing Scales

You can override any part of the typography system when initializing your WindTheme. This ensures that your custom values are available through all the helper functions described above.

WindTheme(
  data: WindThemeData(
    fontSizes: {
      'display': 120.0,
      'caption': 10.0,
    },
    fontWeights: {
      'heavy': FontWeight.w900,
    },
  ),
  child: MyApp(),
)

Once defined, these custom keys are accessible just like the defaults:

final displaySize = context.wFontSizeExt('display'); // 120.0