ブラウザでFlutter!- 7 リストをカスタム。
いい感じのリストにする方法をまとめたいと思います。
基本のリスト
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Flutterでいこう'),
),
body: const MyCustomApp(),
),
);
}
}
class MyCustomApp extends StatefulWidget {
const MyCustomApp({Key? key}) : super(key: key);
@override
State<MyCustomApp> createState() => _MyCustomAppState();
}
class _MyCustomAppState extends State<MyCustomApp> {
@override
Widget build(BuildContext context) {
final _data = ['data1', 'data2', 'data3', 'data4', 'data5'];
return ListView.builder(
itemCount: _data.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(_data[index]),
);
});
}
}
"@override"以降をカスタマイズしていきます。
線付きリスト
"Divider()"を使います。これで上下分けることができるのでその間に線を引く感じです。
@override
Widget build(BuildContext context) {
final _data = ['data1', 'data2', 'data3', 'data4', 'data5'];
return ListView.separated(
itemCount: _data.length,
separatorBuilder: (BuildContext context, int index) {
return const Divider(
height: 20,
thickness: 2,
color: Color.fromARGB(126, 21, 36, 16),
indent: 0,
endIndent: 0,
);
},
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(_data[index]),
);
});
}
これで線が引けます。
スワイプ削除
"Dismissible()"を使ってスワイプ削除できるようにします。
@override
Widget build(BuildContext context) {
final _data = ['data1', 'data2', 'data3', 'data4', 'data5'];
return ListView.builder(
itemCount: _data.length,
itemBuilder: (BuildContext context, int index) {
return Dismissible(
key: Key(_data[index]),
background: Container(
color: Colors.red,
),
confirmDismiss: (direction) async {
return true;
},
onDismissed: (direction) {
},
child: ListTile(
title: Text(_data[index]),
),
);
});
}
リストを右側からスワイプするとデータが消えます。
"Dismissible()"の主な引数は
この記事が気に入ったらサポートをしてみませんか?