Skip to content

Flutter 快速开始

Flutter 版本为原生 Widget,不使用 WebView。

安装

bash
flutter pub add yotsuba_gantt

最小组件

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

以 MIT License 开源