Używam Fluttera i chciałbym dodać obramowanie do widgetu (w tym przypadku widgetu Tekst).
Próbowałem TextStyle i Text, ale nie widziałem, jak dodać obramowanie.
Odpowiedzi:
Oto rozszerzona odpowiedź. A DecoratedBoxjest tym, czego potrzebujesz, aby dodać obramowanie, ale używam go Containerdla wygody dodawania marginesów i dopełnienia.
Oto ogólna konfiguracja.
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),
),
);
}
gdzie BoxDecorationjest
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(),
);
}
Mają one szerokość obramowania 1, 3oraz 10odpowiednio.
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(
width: 1, // <--- border width here
),
);
}
Te mają kolor obramowania
Colors.redColors.blueColors.greenKod
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(
color: Colors.red, // <--- border color
width: 5.0,
),
);
}
Te mają stronę graniczną
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,
),
),
);
}
Te mają granic promienie 5, 10i 30odpowiednio.
BoxDecoration myBoxDecoration() {
return BoxDecoration(
border: Border.all(
width: 3.0
),
borderRadius: BorderRadius.all(
Radius.circular(5.0) // <--- border radius here
),
);
}
DecoratedBox/ BoxDecorationsą bardzo elastyczne. Przeczytaj ściągawkę Flutter - BoxDecoration, aby znaleźć wiele innych pomysłów.
Jak stwierdzono w dokumentacji, flutter przedkłada kompozycję nad parametry. W większości przypadków to, czego szukasz, nie jest właściwością, ale opakowaniem (a czasem kilku pomocników / „konstruktorów”)
W przypadku granic to, czego chcesz DecoratedBox, ma decorationwłaściwość definiującą granice; ale także obrazy tła lub cienie.
Alternatywnie, jak powiedział @Aziza, możesz użyć Container. Który jest połączeniem DecoratedBox, SizedBoxa kilka innych przydatnych widżetów.
Najlepszym sposobem jest użycie BoxDecoration ()
Korzyść
Niekorzyść
BoxDecorationużywaj tylko z Containerwidżetem, więc chcesz zawinąć swój widżetContainer()
Przykład
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"),
)
Używanie BoxDecoration () to najlepszy sposób na pokazanie obramowania.
Container(
decoration: BoxDecoration(
border: Border.all(
color: Color(0xff000000),
width: 4,
)),
child: //Your child widget
),
Możesz również wyświetlić pełny format tutaj