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.