İçeriğe geç / Skip to content / Zum Inhalt
Ahmet Balaman LogoAhmet Balaman

Flutter: TabBar und TabBarView verwenden

Ahmet Balaman
FlutterTabBarTabsNavigationWidgetUI

Mit TabBar und TabBarView können wir mehrere Seiten auf demselben Bildschirm anzeigen. Zwischen den Seiten wechseln wir durch Tippen auf einen Tab oder durch Wischen nach links und rechts.

Live-Demo

Sie können dieses Widget im interaktiven Beispiel unten ausprobieren:

💡 Falls das Beispiel oben nicht lädt, klicken Sie auf DartPad, um es in einem neuen Tab auszuführen.

Grundlegende Verwendung

Für die Verwendung der TabBar wird ein TabController benötigt:

class MyPage extends StatefulWidget {
  @override
  State<MyPage> createState() => _MyPageState();
}

class _MyPageState extends State<MyPage> with SingleTickerProviderStateMixin {
  late TabController _tabController;

  @override
  void initState() {
    super.initState();
    _tabController = TabController(length: 3, vsync: this);
  }

  @override
  void dispose() {
    _tabController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Tabs'),
        bottom: TabBar(
          controller: _tabController,
          tabs: [
            Tab(text: 'Tab 1'),
            Tab(text: 'Tab 2'),
            Tab(text: 'Tab 3'),
          ],
        ),
      ),
      body: TabBarView(
        controller: _tabController,
        children: [
          Center(child: Text('Page 1')),
          Center(child: Text('Page 2')),
          Center(child: Text('Page 3')),
        ],
      ),
    );
  }
}

Einfache Verwendung mit DefaultTabController

DefaultTabController(
  length: 3,
  child: Scaffold(
    appBar: AppBar(
      bottom: TabBar(
        tabs: [
          Tab(icon: Icon(Icons.home)),
          Tab(icon: Icon(Icons.search)),
          Tab(icon: Icon(Icons.person)),
        ],
      ),
    ),
    body: TabBarView(
      children: [
        HomeTab(),
        SearchTab(),
        ProfileTab(),
      ],
    ),
  ),
)

Eigenschaften der TabBar

Eigenschaft Beschreibung
tabs Liste der Tab-Widgets
controller TabController
indicatorColor Farbe der Unterstreichung
indicatorWeight Stärke der Unterstreichung
labelColor Farbe des ausgewählten Tabs
unselectedLabelColor Farbe nicht ausgewählter Tabs
isScrollable Scrollbare Tabs

Tab mit Symbol und Text

Tab(
  icon: Icon(Icons.home),
  text: 'Home',
)

// Icon only
Tab(icon: Icon(Icons.search))

// Text only
Tab(text: 'Profile')

Tabs programmatisch wechseln

// Go to specific tab
_tabController.animateTo(2);

// Get current index
int currentIndex = _tabController.index;

// Listen to tab changes
_tabController.addListener(() {
  print('Active tab: ${_tabController.index}');
});

Scrollbare Tabs

Wenn es viele Tabs gibt:

TabBar(
  isScrollable: true, // Horizontal scrolling enabled
  tabs: [
    Tab(text: 'Tab 1'),
    Tab(text: 'Tab 2'),
    Tab(text: 'Tab 3'),
    Tab(text: 'Tab 4'),
    Tab(text: 'Tab 5'),
  ],
)

Zusammenfassung

  • TabBar: Zeigt die Tab-Buttons
  • TabBarView: Zeigt die Inhalte der Tabs
  • TabController: Verwaltet den Zustand der Tabs
  • SingleTickerProviderStateMixin: Für die Animation erforderlich
  • DefaultTabController: Wrapper für die einfache Verwendung

Tabs eignen sich ideal, um mehrere Inhalte auf einem Bildschirm anzuzeigen.

Kommentare