[flutter] 플러터 GridView에서 아이템을 드래그앤드롭으로 이동하는 방법은?
먼저, pubspec.yaml
파일에 flutter_reorderable_list
패키지를 추가해야 합니다.
dependencies:
flutter_reorderable_list: ^0.1.4
그런 다음, 아래와 같이 Reorderable
위젯을 사용하여 GridView
를 감싸면 됩니다.
import 'package:flutter/material.dart';
import 'package:flutter_reorderable_list/flutter_reorderable_list.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Reorderable GridView')),
body: MyGridView(),
),
);
}
}
class MyGridView extends StatefulWidget {
@override
_MyGridViewState createState() => _MyGridViewState();
}
class _MyGridViewState extends State<MyGridView> {
final _items = List.generate(10, (index) => 'Item $index');
@override
Widget build(BuildContext context) {
return Reorderable(
onReorder: (oldIndex, newIndex) {
setState(() {
if (oldIndex < newIndex) {
newIndex -= 1;
}
final item = _items.removeAt(oldIndex);
_items.insert(newIndex, item);
});
},
child: GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
mainAxisSpacing: 4.0,
crossAxisSpacing: 4.0,
),
itemCount: _items.length,
itemBuilder: (context, index) {
return ListTile(
key: Key('$index'),
title: Text(_items[index]),
);
},
),
);
}
}
이렇게 하면 Reorderable
위젯으로 GridView
아이템을 드래그하여 위치를 바꿀 수 있게 됩니다.