Użyłem obu Expanded
i Flexible
widżetów i wydają się działać tak samo.
Jaka jest różnica między rozszerzoną a elastyczną?
Użyłem obu Expanded
i Flexible
widżetów i wydają się działać tak samo.
Jaka jest różnica między rozszerzoną a elastyczną?
Odpowiedzi:
Expanded
to tylko skrót od Flexible
Korzystanie z rozszerzonego w ten sposób:
Expanded(
child: Foo(),
);
jest ściśle równoważne z:
Flexible(
fit: FlexFit.tight,
child: Foo(),
);
Możesz użyć Flexible
go, Expanded
gdy chcesz innyfit
, przydatnego w niektórych responsywnych układach.
Różnica między FlexFit.tight
a FlexFit.loose
polega na tym, że luźne pozwoli dziecku mieć maksymalny rozmiar, a ciasne zmusi dziecko do wypełnienia całej dostępnej przestrzeni.
Maximum size
i Available space
oznacza to samo tutaj?
Flexible.tight
zmusi dzieci do zajęcia całej dostępnej przestrzeni i Flexible.loose
pozwoli dzieciom robić co chcą. Niektóre dzieci mogą zajmować całą przestrzeń, a inne nie, w zależności od ich typów.
Widżety w obszarze Elastyczne są domyślnie WRAP_CONTENT, chociaż można to zmienić za pomocą parametru Dopasuj.
Widżet pod rozwiniętym ma MATCH_PARENT , możesz go zmienić za pomocą flex .
Expanded
- jest Flexible
z dopasowanym krojem
class Expanded extends Flexible {
const Expanded({
Key key,
int flex = 1,
@required Widget child,
}) : super(
key: key,
flex: flex,
fit: FlexFit.tight,
child: child
);
}
Możesz użyć opcji Elastyczny, aby zmienić rozmiar widżetów w wierszach i kolumnach . Służy głównie do dostosowywania przestrzeni różnych widżetów podrzędnych przy zachowaniu relacji z ich widżetami nadrzędnymi.
W międzyczasie Expanded zmienia ograniczenia wysyłane do elementów podrzędnych wierszy i kolumn ; pomaga wypełnić dostępne tam przestrzenie. Dlatego po umieszczeniu dziecka w widżecie rozszerzonym wypełnia on puste przestrzenie.
Udostępnianie tych filmów z oficjalnego kanału Flutter na YouTube tylko po to, aby pomóc ludziom, którzy mogą tego szukać w nadchodzącej przyszłości ...
Jedyną różnicą, jeśli użyjesz Flexible
zamiast Expanded
, jest to, że Flexible
jego element podrzędny ma taką samą lub mniejszą szerokość niż on Flexible
sam, a Expanded
zmusza jego dziecko do posiadania dokładnie tej samej szerokości Expanded
. Ale oboje Expanded
i Flexible
ignoruj szerokość swoich dzieci podczas określania rozmiaru.
Row(children:[
Flexible(
child: Container(color: Colors.red, child: Text('This is a very long text that won’t fit the line.'))),
Flexible(
child: Container(color: Colors.green, child: Text(‘Goodbye!’))),
]
)
Uwaga : Oznacza to, że nie można rozwijać Row
dzieci proporcjonalnie do ich rozmiarów. Wiersz używa dokładnej szerokości dziecka lub całkowicie ją ignoruje, gdy używasz Expanded
lub Flexible
.
Expanded () to nic innego jak Flexible () with
Flexible (fit: FlexFit.tight) = Expanded()
ale Elastyczne używa fit :FlexFit.loose
domyślnie.
FlexFit.tight = Chce ciasno dopasować się do rodzica, zajmując jak najwięcej miejsca.
FlexFit.loose = Chce luźno dopasować się do rodzica, zajmując jak najmniej miejsca dla siebie.
flex
czynnik. Zobacz dokumentacjęExpanded
widżetu, aby uzyskać więcej informacji.