Agent Skills by ALSEL
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 0品質スコア 50/100

flutter-add-widget-preview

`previews.dart` システムを使用してプロジェクトにインタラクティブなウィジェットプレビューを追加します。新しいUIコンポーネントの作成時や既存画面の更新時に使用することで、一貫したデザインの確認とインタラクティブなテストを実現します。

description の原文を見る

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.

SKILL.md 本文

Flutter ウィジェットのプレビュー

目次

プレビューガイドライン

Flutter ウィジェットプレビューアを使用して、ウィジェットをリアルタイムで、アプリケーション全体のコンテキストから分離した状態でレンダリングします。

  • 対象要素: @Preview アノテーションを、トップレベル関数、クラス内のスタティックメソッド、または必須引数がなく Widget または WidgetBuilder を返すパブリックウィジェットコンストラクタ/ファクトリに適用します。
  • インポート: プレビューアノテーションにアクセスするために、常に package:flutter/widget_previews.dart をインポートしてください。
  • カスタムアノテーション: Preview クラスを拡張して、複数のウィジェット全体に共通のプロパティ(例:テーマ、ラッパー)を注入するカスタムアノテーションを作成します。
  • 複数の設定: 単一の対象に複数の @Preview アノテーションを適用して、複数のプレビューインスタンスを生成します。または、MultiPreview を拡張して、共通のマルチプレビュー設定をカプセル化します。
  • ランタイム変換: カスタム Preview または MultiPreview クラスの transform() メソッドをオーバーライドして、ランタイムでプレビュー設定を動的に変更します(例:動的な値に基づいて名前を生成する場合、これは const コンテキストでは不可能です)。

制限事項への対応

ウィジェットプレビューアが Web 環境で実行されるため、プレビュー可能なウィジェットを作成する際は、以下の制約を遵守してください。

  • ネイティブ API を使用しない: ネイティブプラグインまたは dart:iodart:ffi の API を使用しないでください。dart:io または dart:ffi に対する推移的な依存関係を持つウィジェットは、呼び出し時に例外をスローします。条件付きインポートを使用して、プレビューモードでこれらをモックするか、バイパスしてください。
  • アセットパス: dart:uifromAsset API を経由してロードされるアセットには、パッケージベースのパス(例:assets/my_image.png ではなく packages/my_package_name/assets/my_image.png)を使用してください。
  • パブリックコールバック: プレビューアノテーションに提供されるすべてのコールバック引数がパブリックで定数であることを確認して、コード生成要件を満たしてください。
  • 制約: ウィジェットが無制約の場合、@Preview アノテーションの size パラメータを使用して明示的な制約を適用します。プレビューアはデフォルトでウィジェットをビューポートの約半分に制約します。

ワークフロー

ウィジェットプレビューを作成する

新しいウィジェットプレビューを実装するときに、このチェックリストをコピーして追跡してください。

  • package:flutter/widget_previews.dart をインポートします。
  • 有効な対象を特定します(トップレベル関数、スタティックメソッド、または引数なしのパブリックコンストラクタ)。
  • @Preview アノテーションをその対象に適用します。
  • 必要に応じてプレビューパラメータ(namegroupsizethemebrightness など)を設定します。
  • 複数のウィジェットに同じ設定を適用する場合、設定を Preview を拡張するカスタムクラスに抽出します。

プレビューと交互作用する

ウィジェットプレビューアを起動して対話するために、適切な条件付きワークフローに従ってください。

サポートされている IDE(Android Studio、IntelliJ、Flutter 3.38+ を備えた VS Code)を使用している場合:

  1. IDE を起動します。ウィジェットプレビューアが自動的に起動します。
  2. サイドバーの「Flutter Widget Preview」タブを開きます。
  3. 左下の「Filter previews by selected file」を切り替えて、現在のアクティブファイル外のプレビューを表示したい場合は、切り替えます。

コマンドラインを使用している場合:

  1. Flutter プロジェクトのルートディレクトリに移動します。
  2. flutter widget-preview start を実行します。
  3. 自動的に開いた Chrome 環境を表示します。

フィードバックループ:プレビュー反復処理

  1. ウィジェットコードまたはプレビュー設定を変更します。
  2. ウィジェットプレビューアの自動更新を監視します。
  3. グローバル状態(例:スタティック初期化子)が変更された場合:右下のグローバルホットリスタートボタンをクリックします。
  4. ローカルウィジェット状態のみをリセットする必要がある場合:特定のプレビューカード上の個別ホットリスタートボタンをクリックします。
  5. IDE/CLI コンソールでエラーを確認 → 修正 → 繰り返します。

基本的なプレビュー

import 'package:flutter/widget_previews.dart';
import 'package:flutter/material.dart';

@Preview(name: 'My Sample Text', group: 'Typography')
Widget mySampleText() {
  return const Text('Hello, World!');
}

ランタイム変換を使用したカスタムプレビュー

import 'package:flutter/widget_previews.dart';
import 'package:flutter/material.dart';

final class TransformativePreview extends Preview {
  const TransformativePreview({
    super.name,
    super.group,
  });

  PreviewThemeData _themeBuilder() {
    return PreviewThemeData(
      materialLight: ThemeData.light(),
      materialDark: ThemeData.dark(),
    );
  }

  @override
  Preview transform() {
    final originalPreview = super.transform();
    final builder = originalPreview.toBuilder();
    
    builder
      ..name = 'Transformed - ${originalPreview.name}'
      ..theme = _themeBuilder;

    return builder.toPreview();
  }
}

@TransformativePreview(name: 'Custom Themed Button')
Widget myButton() => const ElevatedButton(onPressed: null, child: Text('Click'));

MultiPreview の実装

import 'package:flutter/widget_previews.dart';
import 'package:flutter/material.dart';

/// ライトモードとダークモードのプレビューを自動的に作成します。
final class MultiBrightnessPreview extends MultiPreview {
  const MultiBrightnessPreview({required this.name});

  final String name;

  @override
  List<Preview> get previews => const [
        Preview(brightness: Brightness.light),
        Preview(brightness: Brightness.dark),
      ];

  @override
  List<Preview> transform() {
    final previews = super.transform();
    return previews.map((preview) {
      final builder = preview.toBuilder()
        ..group = 'Brightness'
        ..name = '$name - ${preview.brightness!.name}';
      return builder.toPreview();
    }).toList();
  }
}

@MultiBrightnessPreview(name: 'Primary Card')
Widget cardPreview() => const Card(child: Padding(padding: EdgeInsets.all(8.0), child: Text('Content')));

ライセンス: BSD-3-Clause(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
flutter
リポジトリ
flutter/skills
ライセンス
BSD-3-Clause
最終更新
不明

Source: https://github.com/flutter/skills / ライセンス: BSD-3-Clause

関連スキル

汎用デザイン・クリエイティブ⭐ リポ 1,739

nano-banana-2

inference.sh CLIを通じてGoogle Gemini 3.1 Flash Image Preview(Nano Banana 2)で画像を生成します。テキストから画像を生成する機能、画像編集、最大14枚の複数画像入力、Google Searchグラウンディング機能に対応しています。トリガーワード:「nano banana 2」「nanobanana 2」「gemini 3.1 flash image」「gemini 3 1 flash image preview」「google image generation」

by openakita
汎用デザイン・クリエイティブ⭐ リポ 815

octocode-slides

洗練されたマルチファイル形式のHTMLプレゼンテーションを生成します。6段階のフロー(概要 → リサーチ → アウトライン → デザイン → 実装 → レビュー)で構成されています。各スライドは独立したHTMLファイルとなり、iframeで読み込まれます。「スライドを作成してほしい」「プレゼンテーションを作ってほしい」「HTMLスライドを生成してほしい」「デックを構築してほしい」といった依頼や、ノート・ドキュメント・コードを洗練されたプレゼンテーションに変換する際に使用できます。

by bgauryy
汎用デザイン・クリエイティブ⭐ リポ 482

gpt-image2-ppt

OpenAIのgpt-image-2を使用して、視覚的に優れたPPTスライドを生成します。Spatial Glass、Tech Blue、Editorial Monoなど10種類のキュレーション済みスタイルに対応し、ユーザーが提供したPPTXファイルを模倣するテンプレートクローンモードも搭載しています。HTMLビューアと16:9形式のPPTXファイルを出力します。プレゼンテーション、スライド、ピッチデック、投資家向けPPT、雑誌風PPTの作成依頼などで活用してください。

by JuneYaooo
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 299

nano-banana

Nano Banana PRO(Gemini 3 Pro Image)およびNano Banana(Gemini 2.5 Flash Image)を使用したAI画像生成機能です。以下の場合に活用できます:(1)テキストプロンプトからの画像生成、(2)既存画像の編集、(3)インフォグラフィックス、ロゴ、商品写真、ステッカーなどのプロフェッショナルなビジュアルアセット制作、(4)複数画像での人物キャラクターの一貫性保持、(5)正確なテキスト描画を含む画像生成、(6)AI生成ビジュアルが必要なあらゆるタスク。「画像を生成」「画像を作成」「写真を作る」「ロゴをデザイン」「インフォグラフィックスを作成」「AI画像」「nano banana」またはその他の画像生成リクエストをトリガーとして機能します。

by majiayu000
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 299

oiloil-ui-ux-guide

モダンでクリーンなUI/UXガイダンス・レビュースキルです。新機能や既存システム(Webアプリ)に対して、実行可能なUI/UX改善提案、デザイン原則、デザインレビューチェックリストが必要な場合に活用できます。CRAP(コントラスト・反復・配置・近接)をベースに、タスクファーストなUX、情報設計、フィードバック・システムステータス、一貫性、affordances、エラー防止・復旧、認知負荷を重視します。モダンミニマルスタイル(クリーン・余白・タイポグラフィ主導)を強制し、不要なテキストを削減、アイコンとしての絵文字を禁止し、統一されたアイコンセットから直感的で洗練されたアイコンを推奨します。

by majiayu000
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 299

axiom-hig-ref

Apple Human Interface Guidelines リファレンス — 色(セマンティックカラー、カスタムカラー、パターン)、背景(マテリアル階層、ダイナミック背景)、タイポグラフィ(標準スタイル、カスタムフォント、Dynamic Type)、SF Symbols(レンダリングモード、色、多言語対応)、ダークモード、アクセシビリティ、プラットフォーム固有の考慮事項を網羅したガイドラインです。

by majiayu000
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: flutter · flutter/skills · ライセンス: BSD-3-Clause