本篇文章給大家分享的是有關(guān)怎么在Flutter中使用 TabLayout 布局,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
在衢州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需開(kāi)發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營(yíng)銷(xiāo),外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),衢州網(wǎng)站建設(shè)費(fèi)用合理。
頂部TabBar
使用 flutter create xxxx
創(chuàng)建一個(gè)項(xiàng)目
打開(kāi)項(xiàng)目文件夾,在 lib 目錄里創(chuàng)建三個(gè) dart 文件,內(nèi)容分別如下
First.dart
import "package:flutter/material.dart"; class First extends StatelessWidget { @override Widget build(BuildContext context) { return Material( color: Colors.green, ); } }
Second.dart
import "package:flutter/material.dart"; class Second extends StatelessWidget { @override Widget build(BuildContext context) { return Material( color: Colors.red, ); } }
Third.dart
import "package:flutter/material.dart"; class Third extends StatelessWidget { @override Widget build(BuildContext context) { return Material( color: Colors.yellow, ); } }
修改 main.dart 文件內(nèi)容,TabLayout布局是個(gè)有狀態(tài)的組件,所以創(chuàng)建組件時(shí)要繼承 StatefulWidget 類(lèi)
動(dòng)圖中的 TabBar 是在 Scaffold 中的 appBar 中定義的,也就是說(shuō) tabbar 是 appBar的一部分
appBar: AppBar( title: Text(widget.title), bottom: TabBar( controller: tabController, tabs:[ new Tab(text: "問(wèn)答"), new Tab(text: "分享"), new Tab(text: "博客"), ], ), ),
每個(gè) tabbar 對(duì)應(yīng)的視圖是在 body 里定義的,按照順序初始化好即可
// 引入 dart 文件 import 'First.dart' as first; import 'Second.dart' as second; import 'Third.dart' as third; body: TabBarView(controller: tabController, children:[ new first.First(), new second.Second(), new third.Third(), ]),
完整代碼:
import 'package:flutter/material.dart'; import 'First.dart' as first; import 'Second.dart' as second; import 'Third.dart' as third; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: 'TabLayout Demo'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends Statewith SingleTickerProviderStateMixin { TabController tabController; @override void initState() { super.initState(); tabController = new TabController(length: 3, vsync: this); } @override void dispose() { super.dispose(); tabController.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), bottom: TabBar( controller: tabController, tabs: [ new Tab(text: "問(wèn)答"), new Tab(text: "分享"), new Tab(text: "博客"), ], ), ), body: TabBarView(controller: tabController, children: [ new first.First(), new second.Second(), new third.Third(), ]), ); } }
底部TabBar
上面定義的是頂部的tabbar,很多app的布局都是底部有見(jiàn)個(gè)tabbar,其實(shí)底部的定義方法就是將 appBar 屬性中的 bottom 給注釋掉,然后在跟 appBar 同級(jí)的位置定義一個(gè) bottomNavigationBar 屬性,其 child 就是 TabBar 組件,tabbar的視圖跟上面定義方法是一樣的,代碼如下
Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), // bottom: TabBar( // controller: tabController, // tabs:[ // new Tab(text: "問(wèn)答"), // new Tab(text: "分享"), // new Tab(text: "博客"), // ], // ), ), bottomNavigationBar: new Material( color: Colors.blue, child: TabBar( controller: tabController, indicatorColor: Colors.white, tabs: [ new Tab(text: "問(wèn)答"), new Tab(text: "分享"), new Tab(text: "博客"), ], ), ), body: TabBarView(controller: tabController, children: [ new first.First(), new second.Second(), new third.Third(), ]), ); }
以上就是怎么在Flutter中使用 TabLayout 布局,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。