Menu
CoddyTech

פרמטרים בעלי שם ונדרשים

חלק מהיחידה רשימות ומסכים במסלול ה-Flutter של Coddy. שיעור 13 מתוך 33.

עם שלושה או ארבעה שדות, קשה לקרוא את Book('Dune', 'Frank Herbert', 412), וקל להחליף בטעות בין שתי מחרוזות. פרמטרים בעלי שם מציינים את שם השדה בכל קריאה:

class Book {
  final String title;
  final int pages;

  Book({required this.title, required this.pages});
}

Book(title: 'Dune', pages: 412)

הסוגריים המסולסלים בבנאי הופכים את הפרמטרים לבעלי שם. כותבים כל אחד מהם בצורה name: value, בכל סדר.

גם הווידג'טים שהשתמשת בהם מקבלים פרמטרים בעלי שם, למשל Text(style: ...) או ListTile(title: ...).

required פירושו שחובה לספק את הפרמטר: אם משמיטים את pages:, העורך מציג שגיאה לפני שהאפליקציה מופעלת.

challenge icon

אתגר

בינוני

הצג כמה עמודים יש בכל ספר:

  • הוסף שדה final int pages; ל־Book
  • שנה את הבנאי כך שישתמש בפרמטרים בעלי שם וחובה, וכתוב את הספרים כך: Book(title: 'Dune', author: 'Frank Herbert', pages: 412). ב־Emma יש 474 עמודים וב־Ulysses יש 730
  • הצג 412 pages בסוף כל שורה, בתור ה־trailing: של האריח

נסו בעצמכם

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'),
    ];
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(title: const Text('Books')),
        body: ListView(
          children: [
            for (Book book in books)
              ListTile(
                title: Text(book.title),
                subtitle: Text(book.author),
              ),
          ],
        ),
      ),
    );
  }
}

class Book {
  final String title;
  final String author;

  Book(this.title, this.author);
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה רשימות ומסכים

תרגלו בעצמכם: קומפיילר Flutter אונליין