Flutter TabBar Navigator

直接看代碼案例快速入手Flutter

本文介紹BottomNavigationBar, TabBar, Navigator.

BottomNavigationBar是底部導(dǎo)航欄,類似與iOS中的UITabViewController, Navigator可以處理頁面之間的導(dǎo)航,TabBar一般用于次級導(dǎo)航欄,也可以作為底部導(dǎo)航欄。

??下載GitHub倉庫,直接體驗

BottomNavigationBar

Scaffold(
    appBar: AppBar(
    title: Text(
        "${runtimeType.toString().substring(0, runtimeType.toString().length - 9)} Example"),
    ),
    body: Center(
    child: Column(
        crossAxisAlignment: CrossAxisAlignment.center,
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
        Text('Hello, Flutter! $_selectedIndex'),
        ],
    ),
    ),
    bottomNavigationBar: BottomNavigationBar(
    items: const [
        BottomNavigationBarItem(
        icon: Icon(Icons.home),
        label: 'Home',
        ),
        BottomNavigationBarItem(
        icon: Icon(Icons.search),
        label: 'Search',
        ),
        BottomNavigationBarItem(
        icon: Icon(Icons.settings),
        label: 'Settings',
        ),
    ],
    currentIndex: _selectedIndex,
    onTap: _onItemTapped,
    ),
);

Navigator

// 直接跳轉(zhuǎn)進(jìn)TextPage
Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => const RichTextPage()),
);

// 傳遞一個字符參數(shù)和閉包給TextPage
Navigator.push(
    context,
    MaterialPageRoute(
        builder: (context) => TextPage(
            text: 'Example Text',
            onTextChange: (String newText) {
                debugPrint('Text changed: $newText');
            },
        )),
);

TabBar

// 顯示在頂部的TabBar
Scaffold(
    appBar: AppBar(
    title: const Text('DefaultTabController Example'),
    bottom: const TabBar(
        tabs: [
        Tab(text: 'Tab 1'),
        Tab(text: 'Tab 2'),
        Tab(text: 'Tab 3'),
        ],
    ),
    ),
    body: const TabBarView(
    children: [
        Center(child: Text('Tab 1 Content')),
        Center(child: Text('Tab 2 Content')),
        Center(child: Text('Tab 3 Content')),
    ],
    ),
),
// 顯示在底部的TabBar
Scaffold(
    appBar: AppBar(
    title: const Text('DefaultTabController Example'),
    ),
    body: const TabBarView(
    children: [
        Center(child: Text('Tab 1 Content')),
        Center(child: Text('Tab 2 Content')),
        Center(child: Text('Tab 3 Content')),
    ],
    ),
    bottomNavigationBar: Container(
    color: Theme.of(context).primaryColor, // 設(shè)置與 AppBar 相同的背景色
    child: const SafeArea(
        child: SizedBox(
        height: kToolbarHeight, // 設(shè)置標(biāo)準(zhǔn)工具欄高度
        child: TabBar(
            tabs: [
            Tab(icon: Icon(Icons.home), text: 'Tab 1'),
            Tab(icon: Icon(Icons.star), text: 'Tab 2'),
            Tab(icon: Icon(Icons.settings), text: 'Tab 3'),
            ],
        ),
        ),
    ),
    ),
)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容