Bir Ekrana Veri Gönder
Coddy'nin Flutter Journey'sinin Listeler ve Ekranlar bölümünün bir parçası. Ders 21 / 33.
Bir ayrıntı ekranı tek bir öğeyi, dokunduğun öğeyi gösterir. Ekran bir araç takımıdır, bu yüzden verisini her araç takımının aldığı şekilde alır: oluşturucusu aracılığıyla.
class PlanetScreen extends StatelessWidget {
const PlanetScreen({super.key, required this.planet});
final Planet planet;
...
}Ekran, gezegeni bir final alanında tutar ve onu build içinde okur: Text(planet.name). super.key, her araç takımının alabileceği anahtardır; onu ilk sırada tut.
Ekranı yönlendirdiğin yerde, dokunulan satırın gezegenini ilet:
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => PlanetScreen(planet: planet)),
);
},Artık tek bir ekran sınıfı herhangi bir gezegeni gösterir. Hangisini göstereceğine liste karar verir.
Görev
OrtaHerhangi bir gezegene dokun: ekran her zaman Mercury yazar. PlanetScreen ekranının dokunulan gezegeni göstermesini sağla:
- ona bir
final Planet planet;alanı verequired this.planetparametresi ekle - uygulama çubuğunda
planet.namedeğerini, ortada ise (gezegenin adı ve uydu sayısıyla birlikte)Mars has 2 moonsmetnini göster - ekranı açarken dokunulan
planetdeğerini geçir
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) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
final List<Planet> planets = const [
Planet(name: 'Mercury', moons: 0),
Planet(name: 'Venus', moons: 0),
Planet(name: 'Earth', moons: 1),
Planet(name: 'Mars', moons: 2),
Planet(name: 'Jupiter', moons: 95),
Planet(name: 'Saturn', moons: 146),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Planets')),
body: ListView(
children: [
for (Planet planet in planets)
ListTile(
title: Text(planet.name),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const PlanetScreen()),
);
},
),
],
),
);
}
}
class PlanetScreen extends StatelessWidget {
const PlanetScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Mercury')),
body: const Center(
child: Text('Mercury has 0 moons'),
),
);
}
}
class Planet {
final String name;
final int moons;
const Planet({required this.name, required this.moons});
}
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
1Kaydırılabilir Listeler
Kaydırılan Bir ListeListe ÖğeleriBaş ve SonBir Liste Öğesine DokunmaSatırlar Arasındaki Ayraçlar2Verilerden Listeler
Bir Oluşturucu ile Satırlar OluşturmaSatırları NumaralandırmaAyırıcılarla Satırlar5Birden Fazla Ekran
Yeni Bir Ekran AçGeri OkBir Düğmeyle Geri DönBir Ekrana Veri GönderSonucu Geri Al6Sekmeler, Çekmeceler ve Kaydırma Hareketleri
Gezinme Çubuğuyla SekmelerAçık Sekme İçin Dolu SimgelerYan ÇekmeceSilmek İçin KaydırınKaydırmayı Geri AlınKendi başına pratik yap: Online Flutter derleyicisi