[flutter] DataTable에서 행 이동 및 복사하는 방법
Flutter의 DataTable은 효과적으로 데이터를 표 형식으로 표시하는 데 사용됩니다. 테이블에서 행을 이동하거나 복사하는 기능은 때로 유용할 수 있습니다. 이 글에서는 Flutter 앱에서 DataTable에서 행을 이동하고 복사하는 방법에 대해 배워보겠습니다.
DataTable 소개
DataTable은 Flutter의 테이블 위젯 중 하나로, 행과 열로 구성된 데이터를 표 형식으로 나타냅니다. 데이터의 정렬, 선택, 필터링 등 다양한 작업을 수행할 수 있는 강력한 기능을 제공합니다.
DataTable에서 행 이동하기
DataTable에서 특정 행을 다른 위치로 이동하는 방법을 살펴보겠습니다. 아래 예제는 DataTable에서 드래그 앤 드롭을 사용하여 행을 이동하는 방법을 보여줍니다.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: MyDataTable(),
),
);
}
}
class MyDataTable extends StatefulWidget {
@override
_MyDataTableState createState() => _MyDataTableState();
}
class _MyDataTableState extends State<MyDataTable> {
List<DataRow> _rows = [
DataRow(cells: [
DataCell(Text('A1')),
DataCell(Text('B1')),
]),
DataRow(cells: [
DataCell(Text('A2')),
DataCell(Text('B2')),
]),
DataRow(cells: [
DataCell(Text('A3')),
DataCell(Text('B3')),
]),
];
@override
Widget build(BuildContext context) {
return DataTable(
columns: [
DataColumn(label: Text('Column A')),
DataColumn(label: Text('Column B'))
],
rows: _rows,
);
}
}
DataTable에서 행 복사하기
DataTable에서 한 행을 복사하여 나머지 행에 삽입하는 방법을 살펴보겠습니다. 아래 예제는 복제된 행을 삽입하는 방법을 보여줍니다.
class _MyDataTableState extends State<MyDataTable> {
List<DataRow> _rows = [
DataRow(cells: [
DataCell(Text('A1')),
DataCell(Text('B1')),
]),
DataRow(cells: [
DataCell(Text('A2')),
DataCell(Text('B2')),
]),
DataRow(cells: [
DataCell(Text('A3')),
DataCell(Text('B3')),
]),
];
void _duplicateRow(int index) {
setState(() {
_rows.insert(index, _rows[index]); // 복제된 행 삽입
});
}
@override
Widget build(BuildContext context) {
return DataTable(
columns: [
DataColumn(label: Text('Column A')),
DataColumn(label: Text('Column B'))
],
rows: _rows,
// 각 행의 복제 버튼 추가
rowDecoration: BoxDecoration(color: MaterialStateProperty.all(Colors.grey[200])),
dataRowHeight: 40,
dataRowColor: MaterialStateProperty.resolveWith((Set<MaterialState> states) {
return states.contains(MaterialState.selected) ? Colors.blue[200] : null;
}),
dataTextStyle: TextStyle(fontSize: 14),
dataRowHeight: 50,
columnSpacing: 100,
showCheckboxColumn: false,
columns: <DataColumn>[
DataColumn(label: Text('Column A')),
DataColumn(label: Text('Column B')),
DataColumn(label: Text('Action')),
],
rows: _rows
.asMap()
.entries
.map(
(row) => DataRow(cells: [
DataCell(Text('A${row.key + 1}')),
DataCell(Text('B${row.key + 1}')),
DataCell(ElevatedButton(
onPressed: () => _duplicateRow(row.key),
child: Text('복제'),
)),
]),
)
.toList(),
);
}
}
위의 예제에서, _duplicateRow
함수는 선택한 위치에 행을 복제하여 삽입합니다.
이제 위의 코드를 사용하여 DataTable에서 행을 이동하고 복사할 수 있게 되었습니다. 이러한 기능은 데이터를 효율적으로 관리하고 사용자 경험을 개선하는 데 도움이 될 수 있습니다.
더 많은 정보와 도움이 필요하다면, Flutter 공식 문서를 확인해보십시오.
Happy coding! 🚀