Come aggiungere un bordo a un widget in Flutter?


151

Sto usando Flutter e vorrei aggiungere un bordo a un widget (in questo caso, un widget Testo).

Ho provato TextStyle e Text, ma non ho visto come aggiungere un bordo.

Risposte:


304

È possibile aggiungere TextFieldun as childa a Containerche ha una proprietà BoxDecorationwith border:

inserisci qui la descrizione dell'immagine

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

206

Ecco una risposta estesa. A DecoratedBoxè ciò di cui hai bisogno per aggiungere un bordo, ma sto usando a Containerper comodità di aggiungere margine e riempimento.

Ecco la configurazione generale.

inserisci qui la descrizione dell'immagine

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

dove il BoxDecorationè

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

Larghezza del bordo

inserisci qui la descrizione dell'immagine

Questi hanno una larghezza di confine 1, 3e 10rispettivamente.

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

Colore del bordo

inserisci qui la descrizione dell'immagine

Questi hanno un colore del bordo di

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

Codice

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

Bordo laterale

inserisci qui la descrizione dell'immagine

Questi hanno un lato di confine

  • sinistra (3.0), in alto (3.0)
  • in basso (13,0)
  • sinistra (blu [100], 15.0), superiore (blu [300], 10.0), destra (blu [500], 5.0), inferiore (blu [800], 3.0)

Codice

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

Raggio di confine

inserisci qui la descrizione dell'immagine

Questi hanno raggi confine 5, 10e 30, rispettivamente.

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

Continua

DecoratedBox/ BoxDecorationsono molto flessibili. Leggi Flutter - Box Cheat Sheet per molte altre idee.


Qualcuno sa come usare BorderSide con BorderRadius?
— HaSnen Tai

@HaSnenTai Hai trovato una soluzione? Nel mio design ho bisogno di dare il bordo inferiore con la forma di una pillola. Come posso raggiungere questo obiettivo?
— Robert Williams,

@RobertWilliams, vorrei utilizzare un widget di disegno personalizzato.
— Suragch,

@Suragch Il widget è Testo che ha bisogno di un bordo forte (a forma di pillola). La larghezza del widget di testo non è fissa. Per utilizzare un widget di disegno personalizzato non dovrò fornire proprietà di correzione?
— Robert Williams,

@RobertWilliams, non so esattamente cosa stai cercando di fare. Aprirò una nuova domanda con un'illustrazione e una spiegazione di ciò che attualmente non funziona. Sentiti libero di collegarti ad esso da qui.
— Suragch,

10

Come indicato nella documentazione, il flutter preferisce la composizione ai parametri. Il più delle volte ciò che stai cercando non è una proprietà, ma piuttosto un wrapper (e talvolta alcuni helper / "costruttore")

Per i bordi ciò che vuoi è DecoratedBox, che ha una decorationproprietà che definisce i bordi; ma anche immagini di sfondo o ombre.

In alternativa, come ha detto @Aziza, puoi usare Container. Che è la combinazione di DecoratedBox, SizedBoxe pochi altri widget utili.


7

Il modo migliore è usare BoxDecoration ()

Vantaggio

  • È possibile impostare il bordo del widget
  • È possibile impostare Colore o Larghezza del bordo
  • È possibile impostare l' angolo arrotondato del bordo
  • È possibile aggiungere Ombra del widget

Svantaggio

  • BoxDecorationutilizzare solo con il Containerwidget, quindi si desidera avvolgere il widgetContainer()

Esempio

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

inserisci qui la descrizione dell'immagine


1

L'uso di BoxDecoration () è il modo migliore per mostrare il bordo.

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

Puoi anche visualizzare il formato completo qui


0

Puoi usare Container per contenere il tuo widget:

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

-1

Usa un contenitore con Boxdercoration.

 BoxDecoration(
    border: Border.all(
      width: 3.0
    ),
    borderRadius: BorderRadius.circular(10.0)
  );
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.