boardview 0.1.2 boardview: ^0.1.2 copied to clipboard
This is a custom Flutter widget that can create a draggable BoardView or also known as a kanban. The view can be reordered with drag and drop.
import 'package:boardview/board_item.dart';
import 'package:boardview/board_list.dart';
import 'package:boardview/boardview_controller.dart';
import 'package:flutter/material.dart';
import 'package:boardview/boardview.dart';
import 'BoardItemObject.dart';
import 'BoardListObject.dart';
class BoardViewExample extends StatelessWidget {
List<BoardListObject> _listData = [
BoardListObject(title: "List title 1"),
BoardListObject(title: "List title 2"),
BoardListObject(title: "List title 3")
];
//Can be used to animate to different sections of the BoardView
BoardViewController boardViewController = new BoardViewController();
@override
Widget build(BuildContext context) {
List<BoardList> _lists = List<BoardList>();
for (int i = 0; i < _listData.length; i++) {
_lists.add(_createBoardList(_listData[i]));
}
return BoardView(
lists: _lists,
boardViewController: boardViewController,
);
}
Widget buildBoardItem(BoardItemObject itemObject) {
return BoardItem(
onStartDragItem: (int listIndex, int itemIndex, BoardItemState state) {
},
onDropItem: (int listIndex, int itemIndex, int oldListIndex,
int oldItemIndex, BoardItemState state) {
//Used to update our local item data
var item = _listData[oldListIndex].items[oldItemIndex];
_listData[oldListIndex].items.removeAt(oldItemIndex);
_listData[listIndex].items.insert(itemIndex, item);
},
onTapItem: (int listIndex, int itemIndex, BoardItemState state) async {
},
item: Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(itemObject.title),
),
));
}
Widget _createBoardList(BoardListObject list) {
List<BoardItem> items = new List();
for (int i = 0; i < list.items.length; i++) {
items.insert(i, buildBoardItem(list.items[i]));
}
return BoardList(
onStartDragList: (int listIndex) {
},
onTapList: (int listIndex) async {
},
onDropList: (int listIndex, int oldListIndex) {
//Update our local list data
var list = _listData[oldListIndex];
_listData.removeAt(oldListIndex);
_listData.insert(listIndex, list);
},
headerBackgroundColor: Color.fromARGB(255, 235, 236, 240),
backgroundColor: Color.fromARGB(255, 235, 236, 240),
header: [
Expanded(
child: Padding(
padding: EdgeInsets.all(5),
child: Text(
list.title,
style: TextStyle(fontSize: 20),
))),
],
items: items,
);
}
}