重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章给大家分享的是有关怎么在Flutter中使用 TabLayout 布局,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
在衢州等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、成都网站建设 网站设计制作按需开发,公司网站建设,企业网站建设,品牌网站制作,成都全网营销,外贸营销网站建设,衢州网站建设费用合理。
顶部TabBar
使用 flutter create xxxx
创建一个项目
打开项目文件夹,在 lib 目录里创建三个 dart 文件,内容分别如下
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 文件内容,TabLayout布局是个有状态的组件,所以创建组件时要继承 StatefulWidget 类
动图中的 TabBar 是在 Scaffold 中的 appBar 中定义的,也就是说 tabbar 是 appBar的一部分
appBar: AppBar( title: Text(widget.title), bottom: TabBar( controller: tabController, tabs:[ new Tab(text: "问答"), new Tab(text: "分享"), new Tab(text: "博客"), ], ), ),
每个 tabbar 对应的视图是在 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: "问答"), new Tab(text: "分享"), new Tab(text: "博客"), ], ), ), body: TabBarView(controller: tabController, children: [ new first.First(), new second.Second(), new third.Third(), ]), ); } }
底部TabBar
上面定义的是顶部的tabbar,很多app的布局都是底部有见个tabbar,其实底部的定义方法就是将 appBar 属性中的 bottom 给注释掉,然后在跟 appBar 同级的位置定义一个 bottomNavigationBar 属性,其 child 就是 TabBar 组件,tabbar的视图跟上面定义方法是一样的,代码如下
Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), // bottom: TabBar( // controller: tabController, // tabs:[ // new Tab(text: "问答"), // new Tab(text: "分享"), // new Tab(text: "博客"), // ], // ), ), bottomNavigationBar: new Material( color: Colors.blue, child: TabBar( controller: tabController, indicatorColor: Colors.white, tabs: [ new Tab(text: "问答"), new Tab(text: "分享"), new Tab(text: "博客"), ], ), ), body: TabBarView(controller: tabController, children: [ new first.First(), new second.Second(), new third.Third(), ]), ); }
以上就是怎么在Flutter中使用 TabLayout 布局,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。