Menu
CoddyTech

map ile Verilerden Widget'lar

Coddy'nin Flutter Journey'sinin Listeler ve Ekranlar bölümünün bir parçası. Ders 15 / 33.

Bir listenin map yöntemi, her öğe üzerinde bir işlev çalıştırarak yeni bir liste oluşturur. Verilerden oluşan bir listeyi widget'lardan oluşan bir listeye dönüştürmenin yolu budur:

ListView(
  children: books.map((book) => ListTile(title: Text(book.title))).toList(),
)

(book) => ListTile(...) kısa bir işlevdir: bir book alır ve okun ardından kutucuğu döndürür. map, bu işlevi her kitap için sırayla çağırır.

map henüz bir List döndürmez, bu yüzden sonuna .toList() ekleyin: children: bir listeye ihtiyaç duyar. Koleksiyon for döngüsü de aynı işi yapar. Okumayı daha kolay bulduğunuzu kullanın; gerçek uygulamalarda ikisini de göreceksiniz.

map verileri başka verilere de dönüştürür: books.map((book) => book.title).toList(), başlıklardan oluşan bir List<String> listesidir.

challenge icon

Görev

Kolay

Listede beş kitap var, ancak ekranda elle yazılmış üç kutucuk görünüyor. Üç kutucuğu books.map(...).toList() ile değiştir; böylece her kitap, başlığı ve alt başlık olarak yazarıyla birlikte bir kutucukta gösterilir.

Kendin dene

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);
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Listeler ve Ekranlar bölümündeki tüm dersler

Kendi başına pratik yap: Online Flutter derleyicisi