はじめに
Flutterにて、ListViewウィジェットを使用する際に、余白を設定する位置によって表示が変わりました。
この記事では、余白の設定の位置によって、どのような表示になるのかまとめます。
余白を設定する位置について
ListViewウェジェットの親にPaddingウィジェットを配置する
ListViewウィジェットの親にPaddingウィジェットを配置すると、ListViewウィジェットの外側に余白が設定されることになります。
これは、スクロール可能領域の外側に余白ができるため、スクロール可能領域にテキスト等があると、見切れる形で表示されます。
ListViewウィジェットのコンストラクタにて、paddingパラメーターに設定する
ListViewのコンストラクタにて、paddingというパラメーターが準備されています。
このパラメーターに設定することで、ListViewウィジェットの内側に余白が設定されることになります。
これは、スクロール可能領域の内側に余白ができるため、スクロール可能領域にテキスト等があっても、見切れることはありません。
実装例
ListViewウェジェットの親にPaddingウィジェットを配置する
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: const Text('Test'),
),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: ListView(children: const [
Text('testtesttest'),
// ...(スクロールできるくらいのウィジェット)
]),
),
);
}
}
ListViewウィジェットのコンストラクタにて、paddingパラメーターに設定する
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: const Text('Test'),
),
body: ListView(
padding: const EdgeInsets.all(20.0),
children: const [
Text('testtesttest'),
// ...(スクロールできるくらいのウィジェット)
],
),
);
}
}
まとめ
ListViewは、余白の設定方法によって、表示が変わります。
上手く使いこなして、ユーザービリティの高い画面を開発しましょう!