Флаттер: сортировка, перетаскивание между несколькими списками или столбцами
Я изучал некоторые библиотеки сортировки списков, такие как flutter_list_drag_and_drop, reorderable_list, flutter_reorderable_list, dragable_flutter_list и другие, но все они работают только с одним списком.
То, что я хочу сделать, может быть понято на изображении ниже, как раз то, что есть в приложении Trello.
Какие-нибудь библиотеки предложений или как это сделать?
5 ответов
Я изучал некоторые библиотеки сортировки списков, такие как flutter_list_drag_and_drop, reorderable_list, flutter_reorderable_list, dragable_flutter_list и другие, но все они работают только с одним списком.
Правильно! Все текущие доступные библиотеки работают только с одним списком.
У меня есть еще один плагин под названием orderable_stack
который основан на списке "элементов данных"
Пожалуйста, обратитесь orderable_stack для более подробной информации.
Также вы можете обратиться по этой ссылке для более перетаскиваемых реализаций.
Примечание: в настоящее время orderable_stack
несовместим с Dart 2
Надеюсь, это поможет вам
Я использую плагин бордового флаттера.
import 'package:boardview/board_item.dart';
import 'package:boardview/board_list.dart';
import 'package:boardview/boardview.dart';
@override
Widget build(BuildContext context) {
List<BoardList> boardList = List<BoardList>();
List<BoardItem> boardItem = List<BoardItem>();
boardItem.add(new BoardItem(
boardList: BoardListState(),
item: boarditem(),
test: '1',
));
boardList.add(BoardList(
index: 1,
items: boardItem,
header: header()
));
Widget header() {
return Row( ... );}
Widget boarditem() {
return Card( ... );}
return BoardView(
lists: boardList,
);
}
Если вы все еще изучаете, проверьте . Я разработчик этого пакета, добавляю пример, чтобы прояснить реализацию.
import 'package:flutter/material.dart';
import 'package:kanban_board/custom/board.dart';
import 'package:kanban_board/models/inputs.dart';
class Example extends StatefulWidget {
const Example({super.key});
@override
State<Example> createState() => _ExampleState();
}
class _ExampleState extends State<Example> {
@override
Widget build(BuildContext context) {
return KanbanBoard(
List.generate(
8,
(index) => BoardListsData(
items: List.generate(
50,
(index) => Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Lorem ipsum dolor sit amet, Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. $index",
style: TextStyle(
fontSize: 19,
height: 1.3,
color: Colors.grey.shade800,
fontWeight: FontWeight.w500)),
),
)),
),
onItemLongPress: (cardIndex, listIndex) {},
onItemReorder:
(oldCardIndex, newCardIndex, oldListIndex, newListIndex) {},
onListLongPress: (listIndex) {},
onListReorder: (oldListIndex, newListIndex) {},
onItemTap: (cardIndex, listIndex) {},
onListTap: (listIndex) {},
onListRename: (oldName, newName) {},
backgroundColor: Colors.white,
displacementY: 124,
displacementX: 100,
textStyle: TextStyle(
fontSize: 19,
height: 1.3,
color: Colors.grey.shade800,
fontWeight: FontWeight.w500),
);
}
}
Демо в kanban_boardkanban_board :
Просто чтобы ответить на этот старый вопрос и на случай, если кто-то вроде меня ищет в 2021 году, вот пакет, который может управлять перетаскиванием элементов из одного списка в другой и перетаскивать эти списки сами.Пакет Flutter от pub.dev
Учебник можно найти здесь: Учебник Йоханнеса Милке
Если вы все еще не нашли хорошего решения, есть плагин для flutter boardview.
Он имеет те же функции, что и перетаскиваемые списки Trellos.
(PS Я его разработчик, создавал лень, поэтому для него нет примеров гифок)