Token导航 LogoToken导航

Agent Skill · 研究检索

flutter-dev(Flutter DEV 搜索)

flutter-dev 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

flutter-dev 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证为 MIT,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 31,660。

总安装 2,661周安装 112GitHub Stars 公开资料未说明下载 932核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:flutter-dev(Flutter DEV 搜索)
来源仓库:https://github.com/bogdanustyak/flutter-expert-skill
仓库路径:skills/flutter-dev
安装命令:
npx skills add https://github.com/bogdanustyak/flutter-expert-skill --skill flutter-dev
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/bogdanustyak/flutter-expert-skill --skill flutter-dev

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

flutter-dev 用于在 DEV.to 等平台搜索 Flutter 开发相关内容,支持关键词筛选与信息聚合。适用于在 Codex、Claude、Cursor、Gemini CLI 中快速获取社区讨论、教程或技术动态。通过 npx skills add 命令从指定仓库安装,具体接口需参照原始技能文档说明。

使用前应确认是否依赖外部 API 或产生网络流量,确保符合组织安全策略。适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

来源仓库内路径:skills/flutter-dev

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/bogdanustyak/flutter-expert-skill --skill flut…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

flutter-dev 怎么安装?

在终端执行 npx skills add https://github.com/bogdanustyak/flutter-expert-skill --skill flutter-dev。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

flutter-dev 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

flutter-dev 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

flutter-dev 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

flutter-dev 用的人多吗?

公开数据是累计安装 2,661 次,近一周安装 112 次,下载 932 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

flutter-dev 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
flutter-dev

Flutter DEV 搜索 · 本页

2,661—需要联网MIT通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Flutter Development Expert

Expert guidance for Flutter and Dart development following official Flutter team best practices.

Core Development Principles

Code Philosophy

  • Apply SOLID principles throughout the codebase
  • Write concise, modern, technical Dart code with functional and declarative patterns
  • Favor composition over inheritance for building complex widgets and logic
  • Prefer immutable data structures, especially for widgets (use StatelessWidget when possible)
  • Separate ephemeral state from app state using appropriate state management
  • Keep functions short with single purpose (strive for less than 20 lines)
  • Use meaningful, descriptive names - avoid abbreviations

Project Structure Assumptions

  • Standard Flutter project structure with lib/main.dart as entry point
  • Organize by logical layers: Presentation (widgets/screens), Domain (business logic), Data (models/API clients), Core (utilities/extensions)
  • For larger projects: organize by feature with presentation/domain/data subfolders per feature

Interaction Guidelines

When generating code:

  • Provide explanations for Dart-specific features (null safety, futures, streams)
  • If request is ambiguous, ask for clarification on functionality and target platform
  • When suggesting new dependencies from pub.dev, explain their benefits
  • Use dart format tool for consistent formatting
  • Use dart fix tool to automatically fix common errors
  • Use the Dart linter with recommended rules to catch issues

Code Quality Standards

Styling Rules

  • Line length: 80 characters or fewer
  • Naming conventions:

- PascalCase for classes - camelCase for members/variables/functions/enums - snake_case for files

  • No trailing comments
  • Use arrow syntax for simple one-line functions

Error Handling

  • Anticipate and handle potential errors - never fail silently
  • Use try-catch blocks with appropriate exception types
  • Use custom exceptions for code-specific situations
  • Proper async/await usage with robust error handling

Documentation

  • Add dartdoc comments to all public APIs (classes, constructors, methods, top-level functions)
  • Write clear comments for complex/non-obvious code
  • Use /// for doc comments
  • Start with single-sentence summary ending with period
  • Comment why code is written a certain way, not what it does

Dart Best Practices

Type System & Null Safety

  • Write soundly null-safe code
  • Leverage Dart's null safety features
  • Avoid ! operator unless value is guaranteed non-null
  • Use pattern matching features where they simplify code
  • Use records to return multiple types when defining a class is cumbersome
  • Prefer exhaustive switch statements/expressions (no break needed)

Async Programming

  • Use Futures, async, await for single asynchronous operations
  • Use Streams for sequences of asynchronous events
  • Ensure proper error handling in async operations

Class & Library Organization

  • Define related classes within the same library file
  • For large libraries: export smaller private libraries from single top-level library
  • Group related libraries in same folder

Flutter Best Practices

Widget Design

  • Widgets (especially StatelessWidget) are immutable
  • When UI needs to change, Flutter rebuilds widget tree
  • Prefer composing smaller widgets over extending existing ones
  • Use small, private Widget classes instead of private helper methods returning widgets
  • Break down large build() methods into smaller, reusable private Widget classes
  • Use const constructors whenever possible to reduce rebuilds

Performance Optimization

  • Use ListView.builder or SliverList for long lists (lazy-loaded)
  • Use compute() to run expensive calculations in separate isolate (e.g., JSON parsing)
  • Avoid expensive operations (network calls, complex computations) in build() methods
  • Use const constructors in build() methods to minimize rebuilds

Responsive Design

  • Use LayoutBuilder or MediaQuery for responsive UIs
  • Ensure mobile responsive design across different screen sizes
  • Test on mobile and web platforms

State Management

Prefer Flutter's built-in solutions unless third-party explicitly requested:

Built-in Solutions (in order of simplicity)

  1. ValueNotifier + ValueListenableBuilder - Simple, local state with single value
final ValueNotifier<int> _counter = ValueNotifier<int>(0);

ValueListenableBuilder<int>(
  valueListenable: _counter,
  builder: (context, value, child) => Text('Count: $value'),
);
  1. ChangeNotifier + ListenableBuilder - Complex/shared state across widgets
class CounterModel extends ChangeNotifier {
  int _count = 0;
  int get count => _count;
  void increment() {
    _count++;
    notifyListeners();
  }
}

ListenableBuilder(
  listenable: counterModel,
  builder: (context, child) => Text('${counterModel.count}'),
);
  1. Streams + StreamBuilder - Sequences of asynchronous events
  2. Futures + FutureBuilder - Single async operations

Advanced Patterns

  • MVVM: Model-View-ViewModel pattern for robust applications
  • Dependency Injection: Use manual constructor injection for explicit dependencies
  • Provider: Only if explicitly requested for DI beyond manual injection

Navigation

GoRouter (Recommended)

Use go_router for declarative navigation, deep linking, and web support:

// Add dependency
flutter pub add go_router

// Configure router
final GoRouter _router = GoRouter(
  routes: [
    GoRoute(
      path: '/',
      builder: (context, state) => const HomeScreen(),
      routes: [
        GoRoute(
          path: 'details/:id',
          builder: (context, state) {
            final String id = state.pathParameters['id']!;
            return DetailScreen(id: id);
          },
        ),
      ],
    ),
  ],
);

// Use in MaterialApp
MaterialApp.router(routerConfig: _router);
  • Configure redirect property for authentication flows
  • Use for deep-linkable routes

Navigator (Built-in)

Use for short-lived screens not needing deep links (dialogs, temporary views):

Navigator.push(context, MaterialPageRoute(builder: (context) => DetailsScreen()));
Navigator.pop(context);

Package Management

Using pub Tool

  • Add dependency: flutter pub add <package_name>
  • Add dev dependency: flutter pub add dev:<package_name>
  • Add override: flutter pub add override:<package_name>:1.0.0
  • Remove dependency: dart pub remove <package_name>

External Packages

  • Search pub.dev for suitable, stable packages
  • Explain benefits when suggesting new dependencies

Data Handling

JSON Serialization

Use json_serializable and json_annotation:

import 'package:json_annotation/json_annotation.dart';
part 'user.g.dart';

@JsonSerializable(fieldRename: FieldRename.snake)
class User {
  final String firstName;
  final String lastName;

  User({required this.firstName, required this.lastName});

  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
  Map<String, dynamic> toJson() => _$UserToJson(this);
}

Code Generation

  • Ensure build_runner is dev dependency
  • Run after modifications: dart run build_runner build --delete-conflicting-outputs

Logging

Use dart:developer for structured logging:

import 'dart:developer' as developer;

// Simple messages
developer.log('User logged in successfully.');

// Structured error logging
try {
  // code
} catch (e, s) {
  developer.log(
    'Failed to fetch data',
    name: 'myapp.network',
    level: 1000, // SEVERE
    error: e,
    stackTrace: s,
  );
}

UI & Theming

Material Design 3 & ThemeData

Use ColorScheme.fromSeed() for harmonious palettes:

MaterialApp(
  theme: ThemeData(
    colorScheme: ColorScheme.fromSeed(
      seedColor: Colors.deepPurple,
      brightness: Brightness.light,
    ),
    textTheme: TextTheme(
      displayLarge: TextStyle(fontSize: 57, fontWeight: FontWeight.bold),
      bodyMedium: TextStyle(fontSize: 14, height: 1.4),
    ),
  ),
  darkTheme: ThemeData(
    colorScheme: ColorScheme.fromSeed(
      seedColor: Colors.deepPurple,
      brightness: Brightness.dark,
    ),
  ),
  themeMode: ThemeMode.system,
);

Custom Theme Extensions

For custom design tokens beyond standard ThemeData:

@immutable
class MyColors extends ThemeExtension<MyColors> {
  const MyColors({required this.success, required this.danger});
  final Color? success;
  final Color? danger;

  @override
  ThemeExtension<MyColors> copyWith({Color? success, Color? danger}) {
    return MyColors(success: success ?? this.success, danger: danger ?? this.danger);
  }

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

// Register in ThemeData
theme: ThemeData(
  extensions: [MyColors(success: Colors.green, danger: Colors.red)],
),

// Use in widgets
Container(color: Theme.of(context).extension<MyColors>()!.success)

Fonts

Use google_fonts package for custom fonts:

flutter pub add google_fonts

final TextTheme appTextTheme = TextTheme(
  displayLarge: GoogleFonts.oswald(fontSize: 57, fontWeight: FontWeight.bold),
  titleLarge: GoogleFonts.roboto(fontSize: 22, fontWeight: FontWeight.w500),
  bodyMedium: GoogleFonts.openSans(fontSize: 14),
);

Images & Assets

Declare in pubspec.yaml:

flutter:
  uses-material-design: true
  assets:
    - assets/images/
// Local images
Image.asset('assets/images/placeholder.png')

// Network images (always include error handling)
Image.network(
  'https://example.com/image.png',
  loadingBuilder: (context, child, progress) {
    if (progress == null) return child;
    return Center(child: CircularProgressIndicator());
  },
  errorBuilder: (context, error, stackTrace) => Icon(Icons.error),
)

Layout Best Practices

Flexible Layouts

  • Expanded: Fill remaining space in Row/Column
  • Flexible: Shrink to fit (don't combine with Expanded)
  • Wrap: Auto-wrap to next line on overflow
  • SingleChildScrollView: For fixed-size content larger than viewport
  • ListView.builder/GridView.builder: For long lists (lazy loading)
  • FittedBox: Scale/fit single child within parent
  • LayoutBuilder: Responsive layouts based on available space

Stack Layouts

  • Positioned: Precisely place child by anchoring to edges
  • Align: Position using alignments (e.g., Alignment.center)

Overlays

Use OverlayPortal for UI elements on top of everything:

final _controller = OverlayPortalController();

OverlayPortal(
  controller: _controller,
  overlayChildBuilder: (context) => Positioned(
    top: 50,
    left: 10,
    child: Card(child: Text('Overlay content')),
  ),
  child: ElevatedButton(
    onPressed: _controller.toggle,
    child: Text('Toggle'),
  ),
)

Visual Design Principles

Design Guidelines

  • Build beautiful, intuitive UIs following modern design
  • Ensure responsive across screen sizes (mobile & web)
  • Provide intuitive navigation
  • Use typography hierarchy (hero text, headlines, keywords)
  • Apply subtle background textures for premium feel
  • Use multi-layered shadows for depth
  • Incorporate icons for enhanced understanding
  • Interactive elements have shadows with color glow effects

Color Guidelines

  • 60-30-10 Rule: 60% primary/neutral, 30% secondary, 10% accent
  • Contrast Ratios (WCAG 2.1):

- Normal text: 4.5:1 minimum - Large text (18pt or 14pt bold): 3:1 minimum

  • Avoid complementary colors for text/background (causes eye strain)
  • Use complementary colors sparingly for accents

Typography

  • Limit to 1-2 font families
  • Prioritize legibility (sans-serif for UI body text)
  • Line height: 1.4x-1.6x font size
  • Line length: 45-75 characters for body text
  • Avoid all caps for long-form text

Testing

Test Types

  • Unit Tests: package:test for domain logic, data layer, state management
  • Widget Tests: package:flutter_test for UI components
  • Integration Tests: package:integration_test for end-to-end flows

Testing Best Practices

  • Follow Arrange-Act-Assert (Given-When-Then) pattern
  • Prefer package:checks for more expressive assertions
  • Prefer fakes/stubs over mocks
  • If mocks necessary: use mockito or mocktail
  • Aim for high test coverage
  • Write testable code: use file, process, platform packages for dependency injection

Running Tests

flutter test

Accessibility (A11y)

  • Color Contrast: Text minimum 4.5:1 ratio against background
  • Dynamic Text Scaling: Test UI with increased system font size
  • Semantic Labels: Use Semantics widget for clear, descriptive labels
  • Screen Reader Testing: Test with TalkBack (Android) and VoiceOver (iOS)

Analysis & Linting

Include in analysis_options.yaml:

include: package:flutter_lints/flutter.yaml

linter:
  rules:
    # Add additional lint rules here

Additional Resources

For detailed patterns and examples, see:

  • references/navigation_patterns.md - Advanced navigation patterns with GoRouter
  • references/state_patterns.md - Comprehensive state management examples
  • references/theme_patterns.md - Advanced theming and styling patterns

平台分布

Claude Code

29.26%
按下载量换算273

Antigravity

22.8%
按下载量换算212

Gemini CLI

18.07%
按下载量换算168

OpenCode

13.95%
按下载量换算130

Cursor

7.19%
按下载量换算67

windsurf

3.19%
按下载量换算30

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

继续浏览同类 Skills