Tôi đã sử dụng cả hai Expanded
và Flexible
widget và chúng dường như hoạt động giống nhau. Có sự khác biệt nào giữa hai thứ mà tôi đã bỏ qua không?
Tôi đã sử dụng cả hai Expanded
và Flexible
widget và chúng dường như hoạt động giống nhau. Có sự khác biệt nào giữa hai thứ mà tôi đã bỏ qua không?
Câu trả lời:
Expanded
chỉ là cách viết tắt của Flexible
Sử dụng mở rộng theo cách này:
Expanded(
child: Foo(),
);
hoàn toàn tương đương với:
Flexible(
fit: FlexFit.tight,
child: Foo(),
);
Bạn có thể muốn sử dụng Flexible
hơn Expanded
khi bạn muốn một sự khác biệt fit
, hữu ích trong một số bố cục đáp ứng.
Sự khác biệt giữa FlexFit.tight
và FlexFit.loose
là lỏng lẻo sẽ cho phép con của nó có kích thước tối đa trong khi chặt buộc con đó phải lấp đầy tất cả không gian có sẵn.
Maximum size
và Available space
có nghĩa là điều tương tự ở đây?
Flexible.tight
sẽ buộc bọn trẻ phải chiếm toàn bộ không gian có sẵn và Flexible.loose
để bọn trẻ làm những gì chúng muốn. Một số trẻ em có thể chiếm toàn bộ không gian và một số thì không, tùy thuộc vào loại của chúng.
Tiện ích con trong Linh hoạt theo mặc định là WRAP_CONTENT mặc dù bạn có thể thay đổi nó bằng cách sử dụng tham số Fit.
Tiện ích con trong Đã mở rộng là MATCH_PARENT, bạn có thể thay đổi nó bằng cách sử dụng linh hoạt .
Expanded
- nó Flexible
phù hợp với bộ
class Expanded extends Flexible {
const Expanded({
Key key,
int flex = 1,
@required Widget child,
}) : super(
key: key,
flex: flex,
fit: FlexFit.tight,
child: child
);
}
Bạn có thể sử dụng Linh hoạt để thay đổi kích thước các tiện ích con trong các hàng và cột . Nó chủ yếu được sử dụng để điều chỉnh không gian của các widget con khác nhau trong khi vẫn giữ mối quan hệ với các widget cha của chúng.
Trong khi đó, Expanded thay đổi các ràng buộc được gửi đến con của các hàng và cột ; nó giúp lấp đầy không gian có sẵn ở đó. Do đó, khi bạn bọc con mình trong một tiện ích Mở rộng, nó sẽ lấp đầy các khoảng trống.
Cung cấp những video này từ kênh YouTube chính thức của Flutter chỉ để giúp đỡ những người có thể tìm kiếm video này trong tương lai sắp tới ...
Sự khác biệt duy nhất nếu bạn sử dụng Flexible
thay thế Expanded
, là Flexible
cho phép con của nó có cùng chiều rộng hoặc nhỏ hơn Flexible
chính nó, trong khi Expanded
buộc con của nó phải có cùng chiều rộng chính xác của Expanded
. Nhưng cả hai Expanded
và Flexible
bỏ qua chiều rộng của con cái của họ khi tự định cỡ.
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!’))),
]
)
Lưu ý : Điều này có nghĩa là không thể mở rộng Row
trẻ em tương ứng với kích thước của chúng. Hàng sử dụng chiều rộng chính xác của con hoặc bỏ qua hoàn toàn khi bạn sử dụng Expanded
hoặc Flexible
.
Expanded () không hơn gì Linh hoạt () với
Flexible (fit: FlexFit.tight) = Expanded()
nhưng, sử dụng linh hoạt fit :FlexFit.loose
theo mặc định.
FlexFit.tight = Muốn vừa khít với phụ huynh chiếm nhiều không gian nhất có thể.
FlexFit.loose = Muốn vừa với phụ huynh, chiếm ít không gian nhất có thể cho chính nó.
flex
yếu tố này. Xem tài liệu củaExpanded
tiện ích để biết thêm thông tin.