LoginSignup
8
3

More than 3 years have passed since last update.

【Flutter基礎】Wrapについて

Posted at

概要

FlutterのWidgetの1つであるWrapについて説明します。

Wrap

ColumnやRowによって一列、一行に並ぶWidgetたちを、Wrapはうまいこと折り返してくれます。
具体的な用途としては、Chip(この記事のタイトルの下にある、Flutter・Dart・初心者みたいなパーツ)の折り返し等で利用します。

以下、WrapによってChipを折り返してみた例です。

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class WrapPage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => new _WrapPageState();
}

class _WrapPageState extends State<StatefulWidget> {
  List<Chip> _chips = List<Chip>();
  final _controller = TextEditingController();

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Wrap"),
      ),
      body: Column(
        children: <Widget>[
          TextField(
            enabled: true,
            controller: _controller,
            onSubmitted: _onSubmit,
          ),
          Wrap(children: _chips)
        ],
      ),
    );
  }

  void _onSubmit(String value) {
    print(value);
    setState(() {
      _controller.text = "";
      _chips.add(Chip(
        label: Text(value),
      ));
    });
  }
}

Screenshot (2020_05_10 18_17_26).png

こんな感じでうまいことChipたちを折り返してくれます。

一方、上記のWrap部分をRowに置き換えると、以下のように画面からはみ出してしまいます。

Screenshot (2020_05_10 18_14_34).png

Wrapがちゃんと仕事していることが証明されましたね。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3