1. ホーム
  2. flutter

[解決済み] FlutterのshrinkWrapプロパティは何をするのですか?

2022-12-11 08:10:26

質問

私はFlutterの初心者で、この技術をとても学びたいと思っています。の動作が理解できません。 shrinkWrap プロパティを ListView . を理解することができませんでした。 Flutter ドキュメント .

どのように解決するのですか?

通常 ListView (と同様に GridView , PageViewCustomScrollView ) は、リストアイテムがより少ないスペースを必要とする場合でも、親要素によって与えられた利用可能なスペースをすべて埋めようとします。

とは shrinkWrap: true を使うと、この挙動を変更することができます。 ListView が必要なスペースだけを占有するように変更することができます (アイテムが増えた場合でもスクロールします)。

この例を見てください。

import 'package:flutter/material.dart';

void main() => runApp(App());

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(),
        body: Center(
          child: Container(
            margin: EdgeInsets.all(32),
            decoration: BoxDecoration(border: Border.all(color: Colors.red)),
            child: ListView(
              shrinkWrap: false,
              children: <Widget>[
                ListTile(title: Text('Item 1')),
                ListTile(title: Text('Item 2')),
                ListTile(title: Text('Item 3')),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

とは shrinkWrap: false :

とは shrinkWrap: true :

これを AlertDialog s: 項目が少ないときは、ダイアログをできるだけ小さくする。項目が多いときは、画面の高さをいっぱいにして、リストをスクロールできるようにします。