4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Flutter]TextFieldを2行に指定する方法

Posted at

Group 51.png

こんにちわ。

今日も元気に記事を書いていきます。基礎固めをしたいと思い、Flutterの基礎を勉強し始めています。

さあ、今回は個人開発で役立った方法を紹介します。

主題

TextFieldを使っていると1行のみに制限したい場合や、複数行にしたい場合があります。

  • 1行のみにしたい場合
  • 複数行にしたい場合

この2つはとても簡単です。以下に例をご紹介します。

1行のみのTextField

const TextField(
  maxLines: 1,
),

MaxLinesを2行に設定した

  • maxLinesを2にしたのに、3行以上になってしまう??
  • 理由は現在解明中(理由を知っている方がいたら教えてください!)
const TextField(
  maxLines: 2,
),

本題

2行に指定する方法

2行にしたい場合は、ちょっとした工夫が必要になります。
以下が工夫したコードとなります。

TextField(
  maxLines: 2,
  inputFormatters: [
    TextInputFormatter.withFunction(
      (TextEditingValue oldValue, TextEditingValue newValue) {
        int numLines = '\n'.allMatches(newValue.text).length;
        if (numLines > 1) {
           return oldValue;
        }
        return newValue;
      },
    ),
  ],
 ),

解説

このコードの解説の前にやりたいことを挙げてみます。

  • TextFieldを2行以上にしたい
  • TextFieldが3行になったときに、2行になるように修正したい。
//ユーザーがTextFieldに入力する内容を制御するためのフォーマッター
TextInputFormatter.withFunction(
  //oldValue・・・変更前のテキスト 
  //newValue・・・ユーザーが入力しようとしているテキスト
  (TextEditingValue oldValue, TextEditingValue newValue) {
    //TextFieldの改行数をカウントしている。
    int numLines = '\n'.allMatches(newValue.text).length;
    //ユーザーが入力しようとしているテキストが2行以内である場合は、oldValueのまま
    if (numLines > 1) {
      return oldValue;
    }
    return newValue;
  },
),

どうでしょうか?僕なりに解説をしてみました。言葉で解説すると、

1、変更前のテキスト(oldValue)とユーザーが入力しようとしているテキスト(newValue)を比較する。
2、ユーザーが入力しようとしているテキストの改行数をカウントする
3、改行数が3行以上であれば、oldValueのままにする。
4、改行数が2行以内であれば、newValueの値になる。

ということです。

最後に

Widgetひとつとっても、調べれば調べるほど深いですね。面白い。
全然知らなかったのでとても勉強になりました。

少しでもいいUIができればいいなと思います。いいFlutterライフを送りましょう。

アプリの宣伝

アプリ名

「大喜利メーカー」

アプリの概要

  • 一本グランプリ風の画像を自由に生成することができる
  • 自分の考えたお題を投稿することができる
  • 文字の位置や大きさを自由自在に変更することができる

iOSのリンク

Androidはリリースするの忘れていたので、後日リリース予定です。

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?