Search packages, repositories and app categories

appflowy_board cover
Package detailsv0.1.2

appflowy_board

AppFlowyBoard is a board-style widget that consists of multi-groups. It supports drag and drop between different groups.

AndroidiOSmacOSWindowsLinux
30-day downloads
3.3K
Likes
225
Pub points
130

Install package

flutter pub add appflowy_board

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

AppFlowyBoard is a Flutter widget designed for creating board-style interfaces with multiple groups, enabling intuitive drag-and-drop interactions between groups. It's ideal for organizing tasks, projects, or content in a visual, flexible layout. Built for cross-platform use, it supports Android, iOS, macOS, Windows, and Linux. The widget is part of the AppFlowy ecosystem, emphasizing productivity and user-friendly data management. Its modular design allows developers to customize group behavior and item interactions seamlessly.

Use cases

  • Task management
  • Project planning
  • Content organization
  • Visual workflow design
  • Collaborative editing

Key features

  • Multi-group board layout
  • Drag-and-drop between groups
  • Cross-platform support
  • Customizable group items
  • Extensible UI components

Suitable for

  • Productivity apps
  • Kanban-style tools
  • Dashboard builders
  • Developer tools
  • Interactive data displays

Considerations

  • Requires understanding of Flutter gestures
  • May need additional state management
  • Limited documentation beyond GitHub
  • Best suited for medium to large boards
  • Depends on AppFlowy ecosystem for full functionality

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

appflowy_board

AppFlowy Board

A customizable and draggable Kanban Board widget for Flutter

Discord • Twitter

AppFlowyBoard

Intro

appflowy_board is a customizable and draggable Kanban Board widget for Flutter. You can use it to create a Kanban Board tool like those in Trello.

Check out appflowy_board to see to build a BoardView database.

AppFlowyBoard

Getting Started

Add the AppFlowy Board Flutter package to your environment.

With Flutter:

flutter pub add appflowy_board
flutter pub get

This will add a line like this to your package's pubspec.yaml:

dependencies:
  appflowy_board: ^0.1.0

Create your first board

Initialize an AppFlowyBoardController for the board. It contains the data used by the board. You can register callbacks to receive the changes of the board.


final AppFlowyBoardController controller = AppFlowyBoardController(
  onMoveGroup: (fromGroupId, fromIndex, toGroupId, toIndex) {
    debugPrint('Move item from $fromIndex to $toIndex');
  },
  onMoveGroupItem: (groupId, fromIndex, toIndex) {
    debugPrint('Move $groupId:$fromIndex to $groupId:$toIndex');
  },
  onMoveGroupItemToGroup: (fromGroupId, fromIndex, toGroupId, toIndex) {
    debugPrint('Move $fromGroupId:$fromIndex to $toGroupId:$toIndex');
  },
);

Provide an initial value of the board by initializing the AppFlowyGroupData. It represents a group data and contains list of items. Each item displayed in the group requires to implement the AppFlowyGroupItem class.


void initState() {
  final group1 = AppFlowyGroupData(id: "To Do", items: [
    TextItem("Card 1"),
    TextItem("Card 2"),
  ]);
  final group2 = AppFlowyGroupData(id: "In Progress", items: [
    TextItem("Card 3"),
    TextItem("Card 4"),
  ]);

  final group3 = AppFlowyGroupData(id: "Done", items: []);

  controller.addGroup(group1);
  controller.addGroup(group2);
  controller.addGroup(group3);
  super.initState();
}

class TextItem extends AppFlowyGroupItem {
  final String s;
  TextItem(this.s);

  @override
  String get id => s;
}

Finally, return a AppFlowyBoard widget in the build method.


@override
Widget build(BuildContext context) {
  return AppFlowyBoard(
    controller: controller,
    cardBuilder: (context, group, groupItem) {
      final textItem = groupItem as TextItem;
      return AppFlowyGroupCard(
        key: ObjectKey(textItem),
        child: Text(textItem.s),
      );
    },
    groupConstraints: const BoxConstraints.tightFor(width: 240),
  );
}

Usage Example

To quickly grasp how it can be used, look at the /example/lib folder. First, run main.dart to play with the demo.

Second, let's delve into multi_board_list_example.dart to understand a few key components:

  • A Board widget is created via instantiating an AppFlowyBoard object.
  • In the AppFlowyBoard object, you can find the AppFlowyBoardController, which is defined in board_data.dart, is fed with pre-populated mock data. It also contains callback functions to materialize future user data.
  • Three builders: AppFlowyBoardHeaderBuilder, AppFlowyBoardFooterBuilder, AppFlowyBoardCardBuilder. See below image for what they are used for.

AppFlowyBoard

Glossary

Please refer to the API documentation.

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

Please look at CONTRIBUTING.md for details.

Categories

Dependencies

Dependency list 2 items

Source repository

Projects using this package