Communitygithub.com

flutter/flutter-theming

Comment personnaliser le thème de votre application à l'aide du système de thèmes de Flutter

Qu'est-ce que flutter-theming ?

Cette compétence vous guide dans la personnalisation des thèmes de votre application Flutter en exploitant le puissant système de thèmes intégré. Elle explique comment définir un thème global via `ThemeData`, appliquer des couleurs, des typographies et des styles de composants cohérents dans toute l'application. Vous apprendrez à utiliser `Theme.of(context)` pour accéder au thème courant, à créer des thèmes enfants avec `Theme` pour des personnalisations localisées, et à gérer les variations clair/sombre. Cette compétence est utile pour tout développeur Flutter souhaitant maintenir une identité visuelle homogène, réduire la duplication de code et offrir une expérience utilisateur harmonieuse. Elle est compatible avec tous les environnements utilisant Flutter (mobile, web, desktop) et s'appuie sur les API de thèmes de Flutter, sans dépendances externes.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/flutter/skills/tree/main/skills/flutter-theming

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait flutter-theming ?

Comment personnaliser le thème de votre application à l'aide du système de thèmes de Flutter

Introduction

Flutter fournit un système de thèmes puissant et flexible qui vous permet de définir des couleurs, des polices, des styles de boutons et bien plus encore de manière centralisée. Au lieu de paramétrer manuellement chaque widget, vous pouvez définir un thème global une seule fois et y accéder dans toute votre application.

Définition d'un thème global

Le thème global de votre application est défini via la propriété theme du MaterialApp (ou CupertinoApp). Utilisez le constructeur ThemeData() pour spécifier les valeurs par défaut.

MaterialApp(
  theme: ThemeData(
    primarySwatch: Colors.blue,
    fontFamily: 'Roboto',
    textTheme: TextTheme(
      headline1: TextStyle(fontSize: 72.0, fontWeight: FontWeight.bold),
      bodyText1: TextStyle(fontSize: 14.0, color: Colors.grey[600]),
    ),
  ),
  home: MyHomePage(),
);

Accès au thème courant

Pour utiliser le thème dans vos widgets, utilisez Theme.of(context). Cela vous donne accès à toutes les propriétés du thème courant.

Widget build(BuildContext context) {
  return Text(
    'Bonjour le monde',
    style: Theme.of(context).textTheme.headline1,
  );
}

Personnalisation locale avec Theme

Si vous souhaitez remplacer certaines parties du thème pour un sous-arbre de widgets, utilisez le widget Theme().

Theme(
  data: Theme.of(context).copyWith(
    primaryColor: Colors.red,
    textTheme: Theme.of(context).textTheme.copyWith(
      bodyText1: TextStyle(color: Colors.redAccent),
    ),
  ),
  child: Column(
    children: [
      Text('Ce texte sera rouge'),
      ElevatedButton(
        onPressed: () {},
        child: Text('Bouton rouge'),
      ),
    ],
  ),
);

Thèmes clair et sombre

Vous pouvez définir des thèmes séparés pour le mode clair et le mode sombre en utilisant les propriétés theme et darkTheme.

MaterialApp(
  theme: ThemeData.light(),
  darkTheme: ThemeData.dark(),
  themeMode: ThemeMode.system, // respecte les préférences système
  home: MyHomePage(),
);

Extension de thème

Vous pouvez également étendre le thème avec vos propres propriétés en utilisant ThemeData.extensions ou en écrivant votre propre classe d'extension.

Pour aller plus loin

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

flutter/flutter-accessibility

Configure your Flutter app to support assistive technologies like Screen Readers

flutter/flutter-accessibility-audit

Triggers an accessibility scan through the widget_inspector and automatically adds Semantics widgets or missing labels to the source code.

flutter/flutter-adding-home-screen-widgets

Adds home screen widgets to a Flutter app for Android and iOS. Use when providing glanceable app information or quick actions on the device home screen.

flutter/flutter-add-integration-test

Configures Flutter Driver for app interaction and converts MCP actions into permanent integration tests. Use when adding integration testing to a project, exploring UI components via MCP, or automating user flows with the integration_test package.

flutter/flutter-add-widget-preview

Adds interactive widget previews to the project using the previews.dart system. Use when creating new UI components or updating existing screens to ensure consistent design and interactive testing.

flutter/flutter-add-widget-test

Implement a component-level test using `WidgetTester` to verify UI rendering and user interactions (tapping, scrolling, entering text). Use when validating that a specific widget displays correct data and responds to events as expected.

flutter/flutter-animating-apps

Implements animated effects, transitions, and motion in a Flutter app. Use when adding visual feedback, shared element transitions, or physics-based animations.

flutter/flutter-animation

Add animated effects to your Flutter app

flutter/flutter-apply-architecture-best-practices

Architects a Flutter application using the recommended layered approach (UI, Logic, Data). Use when structuring a new project or refactoring for scalability.

flutter/flutter-app-size

Measure and reduce the size of the Flutter app bundle, APK, or IPA

flutter/flutter-architecting-apps

Architects a Flutter application using the recommended layered approach (UI, Logic, Data). Use when structuring a new project or refactoring for scalability.

flutter/flutter-architecture

Use the Flutter team's recommended app architecture

flutter/flutter-building-forms

Builds Flutter forms with validation and user input handling. Use when creating login screens, data entry forms, or any multi-field user input.

flutter/flutter-building-layouts

Builds Flutter layouts using the constraint system and layout widgets. Use when creating or refining the UI structure of a Flutter application.

flutter/flutter-building-plugins

Builds Flutter plugins that provide native interop for other apps to use. Use when creating reusable packages that bridge Flutter with platform-specific functionality.

flutter/flutter-build-responsive-layout

Use `LayoutBuilder`, `MediaQuery`, or `Expanded/Flexible` to create a layout that adapts to different screen sizes. Use when you need the UI to look good on both mobile and tablet/desktop form factors.

flutter/flutter-caching

Cache data in a Flutter app

flutter/flutter-caching-data

Implements caching strategies for Flutter apps to improve performance and offline support. Use when retaining app data locally to reduce network requests or speed up startup.

flutter/flutter-concurrency

Execute long-running tasks in a background thread in Flutter

flutter/flutter-databases

Work with databases in a Flutter app

Skills associés