Community이미지github.com

flutter/flutter-theming-apps

Flutter 앱의 시각적 외관을 테마 시스템을 사용하여 사용자 정의합니다. 애플리케이션의 전역 스타일, 색상 또는 타이포그래피를 정의할 때 사용하세요.

flutter-theming-apps란 무엇인가요?

이 스킬은 Flutter 애플리케이션에서 테마 시스템을 활용하여 전역적인 시각적 스타일을 정의하고 적용하는 방법을 제공합니다. 개발자가 색상 팔레트, 타이포그래피, 위젯 기본 스타일 등을 일관성 있게 구성하고, 다크 모드 및 다양한 디바이스 환경에 대응할 수 있도록 돕습니다. 주로 Flutter 프레임워크를 지원하며, Material Design 기반의 테마 설정을 비롯해 커스텀 ThemeData와 ThemeExtension을 사용한 고급화도 가능합니다. 이 스킬은 `ThemeData` 객체 생성, `Theme.of(context)` 접근, `MaterialApp`의 `theme` 속성 설정 등 공식 문서와 모범 사례에 기반한 가이드를 제공하여 효율적인 UI 일관성 유지에 기여합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/flutter/skills/tree/main/skills/flutter-theming-apps

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

flutter-theming-apps은(는) 무엇을 하나요?

Flutter 앱의 시각적 외관을 테마 시스템을 사용하여 사용자 정의합니다. 애플리케이션의 전역 스타일, 색상 또는 타이포그래피를 정의할 때 사용하세요.

개요

이 스킬은 Flutter의 테마 시스템을 활용하여 앱 전체에 일관된 스타일을 적용하는 방법을 안내합니다. 주요 기능은 다음과 같습니다:

  • 전역 색상 및 타이포그래피 정의: ThemeData를 사용하여 앱 전체의 기본 색상과 글꼴 스타일을 설정합니다.
  • 다크 모드 지원: darkTheme 속성을 통해 다크 테마를 별도로 구성하고 전환할 수 있습니다.
  • 위젯별 기본 스타일 지정: 버튼, 텍스트 필드 등 특정 위젯의 기본 속성을 테마로 사전 정의합니다.
  • 커스텀 테마 확장: ThemeExtension을 사용하여 고유한 디자인 토큰을 추가하고 관리합니다.

사용 방법

기본 테마 설정

MaterialApp(
  theme: ThemeData(
    primarySwatch: Colors.blue,
    fontFamily: 'Roboto',
    textTheme: TextTheme(
      headline1: TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold),
      bodyText1: TextStyle(fontSize: 16.0),
    ),
  ),
  home: MyHomePage(),
)

다크 모드 추가

MaterialApp(
  theme: ThemeData.light(),
  darkTheme: ThemeData.dark(),
  themeMode: ThemeMode.system, // 시스템 설정에 따라 자동 전환
  home: MyHomePage(),
)

위젯 테마 접근

Widget build(BuildContext context) {
  return Text(
    'Hello, Flutter!',
    style: Theme.of(context).textTheme.headline1,
  );
}

커스텀 테마 확장 (ThemeExtension)

class CustomColors extends ThemeExtension<CustomColors> {
  final Color? brandColor;
  final Color? accentColor;

  CustomColors({this.brandColor, this.accentColor});

  @override
  ThemeExtension<CustomColors> copyWith({Color? brandColor, Color? accentColor}) {
    return CustomColors(
      brandColor: brandColor ?? this.brandColor,
      accentColor: accentColor ?? this.accentColor,
    );
  }

  @override
  ThemeExtension<CustomColors> lerp(ThemeExtension<CustomColors>? other, double t) {
    if (other is! CustomColors) return this;
    return CustomColors(
      brandColor: Color.lerp(brandColor, other.brandColor, t),
      accentColor: Color.lerp(accentColor, other.accentColor, t),
    );
  }
}

참고 사항

  • Flutter의 공식 Theme 문서를 함께 참조하세요.
  • 테마 변경 시 MaterialApp을 다시 빌드해야 적용됩니다.
  • 성능 최적화를 위해 테마 객체는 가능한 한 상위 위젯에서 한 번만 정의하는 것이 좋습니다.

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

관련 스킬