Widżety z danych za pomocą map
Część sekcji Listy i ekrany ścieżki Flutter w Coddy. Lekcja 15 z 33.
Metoda map listy tworzy nową listę, uruchamiając funkcję dla każdego elementu. Dzięki niej możesz przekształcić listę danych w listę widżetów:
ListView(
children: books.map((book) => ListTile(title: Text(book.title))).toList(),
)(book) => ListTile(...) to krótka funkcja: przyjmuje jeden book i zwraca kafelek znajdujący się za strzałką. map wywołuje ją dla każdej książki, po kolei.
map nie zwraca jeszcze List, więc zakończ wyrażenie przez .toList(): children: wymaga listy. Kolekcja for wykonuje to samo zadanie. Użyj tego rozwiązania, które łatwiej ci się czyta; w prawdziwych aplikacjach zobaczysz oba.
map przekształca też dane w inne dane: books.map((book) => book.title).toList() to List<String> zawierająca tytuły.
Wyzwanie
ŁatwyLista zawiera pięć książek, ale na ekranie wyświetlane są trzy kafelki wpisane ręcznie. Zastąp te trzy kafelki wyrażeniem books.map(...).toList(), aby każda książka miała kafelek z tytułem i autorem w podtytule.
Spróbuj swoich sił
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
final List<Book> books = [
Book('Dune', 'Frank Herbert'),
Book('Emma', 'Jane Austen'),
Book('Ulysses', 'James Joyce'),
Book('Coraline', 'Neil Gaiman'),
Book('Beloved', 'Toni Morrison'),
];
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(title: const Text('Books')),
body: ListView(
children: [
ListTile(
title: Text(books[0].title),
subtitle: Text(books[0].author),
),
ListTile(
title: Text(books[1].title),
subtitle: Text(books[1].author),
),
ListTile(
title: Text(books[2].title),
subtitle: Text(books[2].author),
),
],
),
),
);
}
}
class Book {
final String title;
final String author;
Book(this.title, this.author);
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Listy i ekrany
1Przewijane listy
Lista z przewijaniemElementy listyPoczątek i koniecDotknij elementu listySeparatory między wierszami4Własne klasy
Klasa dla Twoich danychNazwane i wymagane parametryPola, które mogą być pusteWidżety z danych za pomocą mapFiltrowanie listy za pomocą whereWyszukiwanie w mapie5Więcej niż jeden ekran
Otwórz nowy ekranStrzałka wsteczWróć za pomocą przyciskuPrześlij dane do ekranuOdbierz wynik6Karty, szuflady i gesty przesunięcia
Karty z paskiem nawigacyjnymWypełnione ikony dla otwartej kartyBoczna szufladaPrzesuń, aby usunąćCofnij przesunięciePoćwicz samodzielnie: Kompilator Flutter online