Menu
CoddyTech

רשת שנוצרה באמצעות בונה

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

לרשת של מאה תמונות יש אותה בעיה כמו לרשימה ארוכה: אי אפשר לכתוב כל אריח, ובניית כולם בבת אחת איטית. GridView.builder בונה אריחים כשהם נכנסים לגלילה, בדומה ל־ListView.builder:

GridView.builder(
  gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
    crossAxisCount: 3,
  ),
  itemCount: photos.length,
  itemBuilder: (context, index) {
    return Image.network(photos[index]);
  },
)

השם הארוך, SliverGridDelegateWithFixedCrossAxisCount, מגדיר את פריסת הרשת: מספר קבוע של אריחים בכל שורה. הוא מקבל את crossAxisCount ואת המרווחים ש־GridView.count קיבל ישירות.

itemCount ו־itemBuilder פועלים כמו ברשימה: הבונה מקבל את ה־index של כל אריח, החל מ־0.

challenge icon

אתגר

קל

לוח השנה מציג רק את השבוע הראשון של June, שנכתב ידנית. החלף את GridView.count ב-GridView.builder שמציג את כל 30 הימים, ממוספרים מ-1, שבעה בכל שורה.

נסו בעצמכם

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(title: const Text('June')),
        body: GridView.count(
          padding: const EdgeInsets.all(8),
          crossAxisCount: 7,
          mainAxisSpacing: 4,
          crossAxisSpacing: 4,
          children: [
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('1'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('2'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('3'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('4'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('5'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('6'),
            ),
            Container(
              alignment: Alignment.center,
              color: Colors.teal.shade100,
              child: const Text('7'),
            ),
          ],
        ),
      ),
    );
  }
}
quiz iconבחנו את עצמכם

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

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

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