Flutter 快速开始
Flutter 版本为原生 Widget,不使用 WebView。
安装
bash
flutter pub add yotsuba_gantt当前 Alpha 版本也可以显式锁定,避免预发布阶段的 API 变化影响业务:
yaml
dependencies:
yotsuba_gantt: ^0.1.0-alpha.2官方演示与 Android APK
isla4ever/yotsuba-gantt-flutter 是 Flutter 独立开源仓库。它同时承担两个角色:
| 目录 | 用途 |
|---|---|
仓库根目录 lib/ | yotsuba_gantt 组件包源码、测试与 pub.dev 发布配置 |
example/ | 通过 pub.dev 依赖接入组件的完整演示应用,不使用本地 path 替代 |
不准备 Flutter 开发环境时,可以直接从 GitHub Releases 下载 Android APK。每个版本同时提供 .apk.sha256 文件;Alpha APK 使用演示签名,只用于安装体验和组件接入验证。
macOS 或 Linux 可以在下载目录核对文件:
bash
shasum -a 256 -c Yotsuba-Gantt-Android-0.1.0-alpha.2.apk.sha256需要查看、调试或二次开发演示应用时:
bash
git clone https://github.com/isla4ever/yotsuba-gantt-flutter.git
cd yotsuba-gantt-flutter/example
flutter pub get
flutter run最小组件
dart
import 'package:flutter/material.dart';
import 'package:yotsuba_gantt/yotsuba_gantt.dart';
final tasks = <YgTask>[
YgTask(
id: 'design',
title: '交互设计',
owner: '小叶',
start: DateTime(2026, 8, 3),
end: DateTime(2026, 8, 12),
progress: .68,
barStyle: YgBarStyle.progress,
),
];
YotsubaGantt(
tasks: tasks,
viewMode: YgViewMode.week,
autoFocus: YgAutoFocus.dense,
onTaskChanged: (change) {
// 用 change.task 更新状态管理或后端。
},
)日期范围
组件只接收 rangeStart / rangeEnd,不会强绑定日期选择器。Material 应用可以使用 showDateRangePicker:
dart
final next = await showDateRangePicker(
context: context,
firstDate: DateTime(2020),
lastDate: DateTime(2035),
initialDateRange: selectedRange,
);
if (next != null) {
setState(() => selectedRange = next);
}控制器
dart
final controller = YgGanttController();
await controller.scrollToDate(DateTime.now());
await controller.scrollTaskIntoView('design');
await controller.scrollToRow(5000);
controller.setView(YgViewMode.month);
await controller.fitToTasks();Flutter 公开类型和 Builder 见 Flutter API。
