카테고리 없음
Flutter-ListView, Dismissible
춘행이
2020. 11. 1. 15:39
728x90
위 사진처럼 listview를 만들고 listview 아이템들을 옆으로 스와이프 해서 삭제하는 걸 만들어 보겠습니다.
import 'package:flutter/material.dart';
class MyListView extends StatefulWidget {
@override
_MyListViewState createState() => _MyListViewState();
}
class _MyListViewState extends State<MyListView> {
final items = List<String>.generate(20, (i) => "Item ${i + 1}");
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('listview'),
),
body: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
final item=items[index];
return Dismissible(
background: Container(color: Colors.red,),
direction: DismissDirection.startToEnd,//왼쪽에서 오른쪽오 스와이프
onDismissed: (direction){//값을 완전히 삭제
setState(() {
if(direction== DismissDirection.startToEnd){
items.removeAt(index);
}
});
},
child: ListTile(
title: Text('${items[index]}'),
),
key: Key(item),
);
},
),
);
}
}
final items = List <String>. generate(20, (i) => "Item ${i + 1}");
리스트뷰를 선언하고 generate에 20은 아이템의 갯수, (i) => "Item ${i + 1}"는 람다식으로 Item1 2 3 으로 숫자를 늘려가며 아이템 이름을 선언해주는 것입니다.
ListTile
리스트뷰의 아이템들을 말한다
Dismissible
background : 스와이프 할 때 보이는 화면 설정
direction : 스와이프를 어느 방향으로 할지 결정
onDismissed : 값을 완전히 삭제시키는 것 setState를 넣어서 설정한다.
728x90