flutter-duskmoon
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseFlutter DuskMoon UI Design System
Flutter DuskMoon UI设计系统
Complete component library for Flutter apps with codegen-driven theming, adaptive (Material/Cupertino) widgets, platform-aware settings UI, feedback helpers, and data visualization.
这是一套适用于Flutter应用的完整组件库,具备代码生成驱动的主题系统、自适应(Material/Cupertino)组件、平台感知的设置UI、反馈工具以及数据可视化功能。
Quick Start
快速开始
Umbrella package (recommended)
集成包(推荐使用)
Add to get theme + widgets + settings + feedback + forms in one import:
duskmoon_uiyaml
undefined添加包,可一次性导入主题、组件、设置、反馈及表单功能:
duskmoon_uiyaml
undefinedpubspec.yaml
pubspec.yaml
dependencies:
duskmoon_ui: ^1.4.0
```dart
import 'package:duskmoon_ui/duskmoon_ui.dart';dependencies:
duskmoon_ui: ^1.4.0
```dart
import 'package:duskmoon_ui/duskmoon_ui.dart';Individual packages
独立包
yaml
dependencies:
duskmoon_theme: ^1.4.0 # Theme only
duskmoon_widgets: ^1.4.0 # Adaptive widgets
duskmoon_settings: ^1.4.0 # Settings UI
duskmoon_feedback: ^1.4.0 # Dialogs, toasts, snackbars
duskmoon_form: ^1.4.0 # BLoC-based form management
duskmoon_visualization: ^1.4.0 # Data visualization charts
duskmoon_theme_bloc: ^1.4.0 # BLoC persistence
duskmoon_adaptive_scaffold: ^1.4.0 # Responsive scaffold
duskmoon_code_engine: ^1.4.0 # Code editor engineyaml
dependencies:
duskmoon_theme: ^1.4.0 # 仅主题功能
duskmoon_widgets: ^1.4.0 # 自适应组件
duskmoon_settings: ^1.4.0 # 设置UI
duskmoon_feedback: ^1.4.0 # 对话框、提示框、消息条
duskmoon_form: ^1.4.0 # 基于BLoC的表单管理
duskmoon_visualization: ^1.4.0 # 数据可视化图表
duskmoon_theme_bloc: ^1.4.0 # BLoC持久化
duskmoon_adaptive_scaffold: ^1.4.0 # 响应式脚手架
duskmoon_code_engine: ^1.4.0 # 代码编辑器引擎Skill Modules
功能模块
Detailed documentation is split by package:
- duskmoon_theme.md — Theme system, color schemes, text themes, extensions
- duskmoon_widgets.md — 19 adaptive widgets (Material/Cupertino) plus markdown rendering, markdown input, and code editor
- duskmoon_settings.md — Platform-aware settings UI (Material/Cupertino/Fluent)
- duskmoon_feedback.md — Dialogs, snackbars, toasts, bottom sheets
- duskmoon_form.md — BLoC-based form state management with 13 widget builders and 9 field BLoCs
- duskmoon_visualization.md — Data visualization: line, bar, scatter, heatmap, network graph, map chart
- duskmoon_theme_bloc.md — BLoC for persisting theme via SharedPreferences
- duskmoon_adaptive_scaffold.md — Responsive scaffold with M3 adaptive layout, breakpoints, and slot-based composition
- duskmoon_code_engine.md — Pure Dart code editor engine with 19 language grammars, incremental parsing, and syntax highlighting
详细文档按包拆分:
- duskmoon_theme.md — 主题系统、配色方案、文本主题及扩展
- duskmoon_widgets.md — 19个自适应组件(Material/Cupertino),支持markdown渲染、markdown输入及代码编辑器
- duskmoon_settings.md — 平台感知的设置UI(Material/Cupertino/Fluent)
- duskmoon_feedback.md — 对话框、消息条、提示框、底部弹窗
- duskmoon_form.md — 基于BLoC的表单状态管理,包含13个组件构建器和9个字段BLoC
- duskmoon_visualization.md — 数据可视化:折线图、柱状图、散点图、热力图、网络图、地图图表
- duskmoon_theme_bloc.md — 基于SharedPreferences的BLoC主题持久化
- duskmoon_adaptive_scaffold.md — 响应式脚手架,支持M3自适应布局、断点及基于插槽的组合
- duskmoon_code_engine.md — 纯Dart代码编辑器引擎,支持19种语言语法、增量解析及语法高亮
Minimal App Example
最简应用示例
dart
import 'package:flutter/material.dart';
import 'package:duskmoon_ui/duskmoon_ui.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
return MaterialApp(
theme: DmThemeData.sunshine(),
darkTheme: DmThemeData.moonlight(),
themeMode: ThemeMode.system,
home: const HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
Widget build(BuildContext context) {
return Scaffold(
appBar: DmAppBar(title: const Text('DuskMoon App')),
body: Center(
child: DmButton(
onPressed: () => showDmSuccessToast(
context: context,
message: 'Hello from DuskMoon!',
),
child: const Text('Tap me'),
),
),
);
}
}dart
import 'package:flutter/material.dart';
import 'package:duskmoon_ui/duskmoon_ui.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
return MaterialApp(
theme: DmThemeData.sunshine(),
darkTheme: DmThemeData.moonlight(),
themeMode: ThemeMode.system,
home: const HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
Widget build(BuildContext context) {
return Scaffold(
appBar: DmAppBar(title: const Text('DuskMoon App')),
body: Center(
child: DmButton(
onPressed: () => showDmSuccessToast(
context: context,
message: 'Hello from DuskMoon!',
),
child: const Text('Tap me'),
),
),
);
}
}Architecture Overview
架构概览
duskmoon_theme <- Pure theme, zero external deps
+-- duskmoon_theme_bloc <- BLoC for theme persistence
+-- duskmoon_widgets <- 19 adaptive widgets + markdown + code editor
| +-- duskmoon_code_engine (for DmCodeEditor)
+-- duskmoon_settings <- Settings UI (Material/Cupertino/Fluent)
+-- duskmoon_feedback <- Dialogs, snackbars, toasts, bottom sheets
+-- duskmoon_form <- BLoC-based form management (depends on theme + widgets)
+-- duskmoon_visualization <- Data visualization charts (depends on theme)
+-- duskmoon_code_engine <- Pure Dart code editor (re-exported by umbrella)
|
duskmoon_ui <- Umbrella: re-exports all packages
Provides DmEditorTheme (fromTheme, sunshine, moonlight)
duskmoon_code_engine <- Pure Dart code editor (standalone)
duskmoon_adaptive_scaffold <- Responsive scaffold (forked, independently versioned)duskmoon_theme <- Pure theme, zero external deps
+-- duskmoon_theme_bloc <- BLoC for theme persistence
+-- duskmoon_widgets <- 19 adaptive widgets + markdown + code editor
| +-- duskmoon_code_engine (for DmCodeEditor)
+-- duskmoon_settings <- Settings UI (Material/Cupertino/Fluent)
+-- duskmoon_feedback <- Dialogs, snackbars, toasts, bottom sheets
+-- duskmoon_form <- BLoC-based form management (depends on theme + widgets)
+-- duskmoon_visualization <- Data visualization charts (depends on theme)
+-- duskmoon_code_engine <- Pure Dart code editor (re-exported by umbrella)
|
duskmoon_ui <- Umbrella: re-exports all packages
Provides DmEditorTheme (fromTheme, sunshine, moonlight)
duskmoon_code_engine <- Pure Dart code editor (standalone)
duskmoon_adaptive_scaffold <- Responsive scaffold (forked, independently versioned)Conventions
约定规范
- All public classes use prefix
Dm - Factory classes are with static methods
abstract final - Generated token files use suffix in
.g.dartsrc/generated/ - BLoC classes (user-subclassable) keep original names (e.g., ,
FormBloc); only UI widgets getTextFieldBlocprefixDm - Platform resolution is 4-tier: widget ->
platformOverrideInheritedWidget ->DmPlatformOverride->DuskmoonAppTheme.of(context).platform - has 3 values:
DmPlatformStyle,material,cupertinofluent
- 所有公开类均使用前缀
Dm - 工厂类为类型,包含静态方法
abstract final - 生成的令牌文件使用后缀,存放在
.g.dart目录下src/generated/ - BLoC类(可由用户子类化)保留原名(如、
FormBloc);仅UI组件使用TextFieldBloc前缀Dm - 平台解析分为四层:组件->
platformOverrideInheritedWidget ->DmPlatformOverride->DuskmoonAppTheme.of(context).platform - 包含3个取值:
DmPlatformStyle、material、cupertinofluent