Tôi có một danh sách các String
s, ví dụ,
var moviesTitles = ['Inception', 'Heat', 'Spider Man'];
và muốn sử dụng moviesTitles.map
để chuyển đổi chúng thành danh sách các Tab
Widget
s trong Flutter.
Tôi có một danh sách các String
s, ví dụ,
var moviesTitles = ['Inception', 'Heat', 'Spider Man'];
và muốn sử dụng moviesTitles.map
để chuyển đổi chúng thành danh sách các Tab
Widget
s trong Flutter.
Câu trả lời:
bạn có thể dùng
moviesTitles.map((title) => Tab(text: title)).toList()
thí dụ:
bottom: new TabBar(
controller: _controller,
isScrollable: true,
tabs:
moviesTitles.map((title) => Tab(text: title)).toList()
,
),
map<T>
trả về một Iterable<T>
thay vì aList<T>
Iterable
đó map()
trả về là lười biếng. Nó chưa được đánh giá, chỉ khi ai đó thực sự lặp lại nó. Việc gọi toList()
, ngoài việc trả về một danh sách thực tế, buộc đánh giá này.
Tôi mới xao xuyến. Tôi thấy rằng một người cũng có thể đạt được nó theo cách này.
tabs: [
for (var title in movieTitles) Tab(text: title)
]
Lưu ý: Nó yêu cầu phiên bản sdk phi tiêu phải> = 2.3.0, xem tại đây
Tôi thử cùng một phương pháp này, nhưng với một danh sách khác với nhiều giá trị hơn trong bản đồ hàm. Vấn đề của tôi là quên một báo cáo trả lại. Cái này rất quan trọng :)
bottom: new TabBar(
controller: _controller,
isScrollable: true,
tabs:
moviesTitles.map((title) { return Tab(text: title)}).toList()
,
),
{}
câu hỏi là hàm một dòng
toList
?