Gezinme Çubuğuyla Sekmeler
Coddy'nin Flutter Journey'sinin Listeler ve Ekranlar bölümünün bir parçası. Ders 23 / 33.
Birçok uygulama, ana sayfalarını ekranın alt kısmındaki sekmelerde tutar. NavigationBar bu sekmeleri oluşturur; onu Scaffold'un bottomNavigationBar: özelliğine verirsiniz.
NavigationBar(
selectedIndex: index,
onDestinationSelected: (int i) {
setState(() {
index = i;
});
},
destinations: const [
NavigationDestination(icon: Icon(Icons.home), label: 'Home'),
NavigationDestination(icon: Icon(Icons.settings), label: 'Settings'),
],
)Her NavigationDestination, bir simgesi ve etiketi olan bir sekmedir. selectedIndex, 0'dan başlayarak hangi sekmenin vurgulandığını belirtir. Bir sekmeye dokunulduğunda onDestinationSelected sekmenin indeksini alır.
Çubuk, sekmeyi kendi başına hatırlamaz: index değerini durumunuzda tutar ve setState ile değiştirirsiniz. Gövde, bu indekse ait sayfayı gösterir; burada bu, bir widget listesindeki pages[index] değeridir.
Görev
KolayÇubuğun üç sekmesi var, ancak sekmelere dokunmak hiçbir işe yaramıyor. Dokunulan sekmenin vurgulanması ve ilgili sayfanın gösterilmesi için onDestinationSelected: ekle: Favoriler için Favorites page, Ayarlar için Settings page gösterilsin.
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 StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
int index = 0;
final List<Widget> pages = const [
Center(child: Text('Home page')),
Center(child: Text('Favorites page')),
Center(child: Text('Settings page')),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('My App')),
body: pages[index],
bottomNavigationBar: NavigationBar(
selectedIndex: index,
destinations: const [
NavigationDestination(icon: Icon(Icons.home), label: 'Home'),
NavigationDestination(icon: Icon(Icons.favorite), label: 'Favorites'),
NavigationDestination(icon: Icon(Icons.settings), label: 'Settings'),
],
),
);
}
}
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çlar6Sekmeler, Ç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