Flutterでウィジェットに境界線を追加する方法は?


151

Flutterを使用していて、ウィジェット(この場合はテキストウィジェット)に境界線を追加したいと思います。

TextStyleとTextを試しましたが、境界線を追加する方法がわかりませんでした。

回答:


304

with プロパティを持つにをTextFieldとして追加できます。childContainerBoxDecorationborder

ここに画像の説明を入力してください

new Container(
  margin: const EdgeInsets.all(15.0),
  padding: const EdgeInsets.all(3.0),
  decoration: BoxDecoration(
    border: Border.all(color: Colors.blueAccent)
  ),
  child: Text("My Awesome Border"),
)

205

ここに拡張された答えがあります。A DecoratedBoxはボーダーを追加するために必要なものですが、私はContainerマージンとパディングを追加するためにa を使用しています。

一般的な設定は次のとおりです。

ここに画像の説明を入力してください

Widget myWidget() {
  return Container(
    margin: const EdgeInsets.all(30.0),
    padding: const EdgeInsets.all(10.0),
    decoration: myBoxDecoration(), //             <--- BoxDecoration here
    child: Text(
      "text",
      style: TextStyle(fontSize: 30.0),
    ),
  );
}

どこBoxDecoration

BoxDecoration myBoxDecoration() {
  return BoxDecoration(
    border: Border.all(),
  );
}

ボーダー幅

ここに画像の説明を入力してください

これらは、境界線の幅を持っている1310それぞれ。

BoxDecoration myBoxDecoration() {
  return BoxDecoration(
    border: Border.all(
      width: 1, //                   <--- border width here
    ),
  );
}

ボーダの色

ここに画像の説明を入力してください

これらのボーダー色があります

  • Colors.red
  • Colors.blue
  • Colors.green

コード

BoxDecoration myBoxDecoration() {
  return BoxDecoration(
    border: Border.all(
      color: Colors.red, //                   <--- border color
      width: 5.0,
    ),
  );
}

ボーダーサイド

ここに画像の説明を入力してください

これらの境界面があります

  • 左(3.0)、上(3.0)
  • ボトム(13.0)
  • 左(青[100]、15.0)、上(青[300]、10.0)、右(青[500]、5.0)、下(青[800]、3.0)

コード

BoxDecoration myBoxDecoration() {
  return BoxDecoration(
    border: Border(
      left: BorderSide( //                   <--- left side
        color: Colors.black,
        width: 3.0,
      ),
      top: BorderSide( //                    <--- top side
        color: Colors.black,
        width: 3.0,
      ),
    ),
  );
}

ボーダー半径

ここに画像の説明を入力してください

これらは、国境半径を有し510および30それぞれ。

BoxDecoration myBoxDecoration() {
  return BoxDecoration(
    border: Border.all(
      width: 3.0
    ),
    borderRadius: BorderRadius.all(
        Radius.circular(5.0) //                 <--- border radius here
    ),
  );
}

続けて

DecoratedBox/ BoxDecorationは非常に柔軟です。さらに多くのアイデアについては、Flutter — BoxDecorationチートシートをお読みください。


BorderSideをBorderRadiusで使用する方法を知っている人はいますか?
HaSnen Tai

@HaSnenTai何か解決策を見つけましたか?私のデザインでは、ボーダーの底に丸薬のような形を与える必要があります。どうすればこれを達成できますか?
ロバートウィリアムズ

@RobertWilliams、カスタム描画ウィジェットを使用します。
Suragch

@Suragchウィジェットは、強い(丸薬のような)境界線を必要とするテキストです。テキストウィジェットの幅は固定されていません。カスタム描画ウィジェットを使用する場合、修正プロパティを提供する必要はありませんか?
ロバートウィリアムズ

@RobertWilliams、私はあなたが何をしようとしているのか正確にはわかりません。現在機能していないもののイラストと説明を含む新しい質問を開きます。こちらからお気軽にリンクしてください。
Suragch

10

ドキュメントに記載されているように、フラッターはパラメーターよりもコンポジションを優先します。ほとんどの場合、あなたが探しているのはプロパティではなく、ラッパー(そして時にはいくつかのヘルパー/「ビルダー」)です。

必要なのは境界線です。境界線を定義DecoratedBoxするdecorationプロパティがあります。背景画像や影も含まれます。

または、@ Azizaが言ったように、を使用できますContainer。これはDecoratedBoxSizedBoxと他のいくつかの便利なウィジェットの組み合わせです。


7

最良の方法はBoxDecoration()を使用することです

利点

  • ウィジェットのボーダーを設定できます
  • ボーダーのまたは幅を設定できます
  • ボーダーの丸く設定できます
  • ウィジェットのシャドウを追加できます

不利益

  • BoxDecorationContainerウィジェットでのみ使用するため、ウィジェットをラップしたいContainer()

    Container(
      margin: EdgeInsets.all(10),
      padding: EdgeInsets.all(10),
      alignment: Alignment.center,
      decoration: BoxDecoration(
        color: Colors.orange,
        border: Border.all(
            color: Colors.pink[800],// set border color
            width: 3.0),   // set border width
        borderRadius: BorderRadius.all(
            Radius.circular(10.0)), // set rounded corner radius
        boxShadow: [BoxShadow(blurRadius: 10,color: Colors.black,offset: Offset(1,3))]// make rounded corner of border
      ),
      child: Text("My demo styling"),
    )

ここに画像の説明を入力してください


1

境界線を表示するには、BoxDecoration()を使用するのが最良の方法です。

Container(
  decoration: BoxDecoration(
    border: Border.all(
    color: Color(0xff000000),
    width: 4,
  )),
  child: //Your child widget
),

ここで完全なフォーマットを表示することもできます


0

Containerを使用してウィジェットを含めることができます。

Container(
  decoration: BoxDecoration(
    border: Border.all(
    color: Color(0xff000000),
    width: 1,
  )),
  child: Text()
),

-1

Boxdercorationでコンテナーを使用します。

 BoxDecoration(
    border: Border.all(
      width: 3.0
    ),
    borderRadius: BorderRadius.circular(10.0)
  );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.