Flutter'da bir parçacığa kenarlık nasıl eklenir?


151

Flutter kullanıyorum ve bir parçacığa bir sınır eklemek istiyorum (bu durumda, bir Metin parçacığı).

TextStyle ve Text'i denedim, ancak nasıl kenarlık ekleyeceğimi göremedim.

Yanıtlar:


305

Ekleyebilir TextFieldbir şekilde childbir karşı Containerbir olduğunu BoxDecorationile bordermülkiyet:

görüntü açıklamasını buraya girin

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"),
)

207

İşte genişletilmiş bir cevap. A DecoratedBox, bir sınır eklemeniz gereken şeydir, ancak Containerkenar boşluğu ve dolgu eklemenin rahatlığı için a kullanıyorum .

İşte genel kurulum.

görüntü açıklamasını buraya girin

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),
    ),
  );
}

nerede BoxDecorationolduğunu

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

Kenarlık genişliği

görüntü açıklamasını buraya girin

Bu bir sınır genişliği 1, 3ve 10sırasıyla.

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

Sınır rengi

görüntü açıklamasını buraya girin

Bunların kenarlık rengi var

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

kod

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

Sınır tarafı

görüntü açıklamasını buraya girin

Bunların bir sınır tarafı var

  • sol (3.0), üst (3.0)
  • alt (13.0)
  • sol (mavi [100], 15.0), üst (mavi [300], 10.0), sağ (mavi [500], 5.0), alt (mavi [800], 3.0)

kod

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,
      ),
    ),
  );
}

Sınır yarıçapı

görüntü açıklamasını buraya girin

Bunlar sınır yarıçapına sahiptir 5, 10ve 30sırasıyla.

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

Devam ediyor

DecoratedBox/ BoxDecorationçok esnektir. Daha birçok fikir için Flutter - BoxDecoration Hile Sayfasını okuyun .


BorderSide'ın BorderRadius ile nasıl kullanılacağını bilen var mı?
HaSnen Tai

@HaSnenTai Herhangi bir çözüm buldunuz mu? Tasarımımda hap benzeri bir şekle sahip kenarlık tabanı vermem gerekiyor. Bunu nasıl başarabilirim?
Robert Williams

@RobertWilliams, özel bir çizim widget'ı kullanırdım.
Suragch

@Suragch Widget, güçlü (hap şeklinde) bir kenarlık gerektiren Metin'dir. Metin widget'ı genişliği sabit değil. Özel çizim widget'ını kullanmak için düzeltme özellikleri sağlamama gerek yok mu?
Robert Williams

@RobertWilliams, tam olarak ne yapmaya çalıştığını bilmiyorum. Şu anda neyin işe yaramadığını gösteren bir resim ve açıklama içeren yeni bir soru açardım. Buradan bağlantı kurmaktan çekinmeyin.
Suragch

10

Dokümantasyonda belirtildiği gibi flutter, parametrelere göre kompozisyonu tercih eder. Çoğu zaman aradığınız şey bir mülk değil, bunun yerine bir paketleyicidir (ve bazen birkaç yardımcı / "inşaatçı")

Sınırlar için istediğiniz şey DecoratedBox,decoration sınırları belirleyen özelliğe ; aynı zamanda arka plan resimleri veya gölgeler.

Alternatif olarak @Aziza'nın dediği gibi kullanabilirsiniz Container. Hangi birleşimidir DecoratedBox, SizedBoxve birkaç diğer yararlı widget'lar.


7

En iyi yol BoxDecoration () kullanmaktır

avantaj

  • Sen ayarlayabilirsiniz sınırWidget'ın
  • Kenarlık Rengi veya Genişliği ayarlayabilirsiniz
  • Yuvarlak köşe ayarlayabilirsiniz sınırın
  • Widget'ın gölgesini ekleyebilirsiniz

dezavantaj

  • BoxDecorationsadece Containerwidget ile kullanın, böylece widget'ınızıContainer()

Misal

    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"),
    )

görüntü açıklamasını buraya girin


1

BoxDecoration () kullanmak, kenarlığı göstermenin en iyi yoludur.

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

Tam formatı da buradan görüntüleyebilirsiniz


0

Widget'ınızı içermek için Kapsayıcıyı kullanabilirsiniz:

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

-1

Boxdercoration içeren bir kap kullanın.

 BoxDecoration(
    border: Border.all(
      width: 3.0
    ),
    borderRadius: BorderRadius.circular(10.0)
  );
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.