其他分享
首页 > 其他分享> > 19 Flutter 自定义AppBar 定义顶部Tab切换 // 底部Tab结合顶部Tab实现类似头条页面布局(27分36秒

19 Flutter 自定义AppBar 定义顶部Tab切换 // 底部Tab结合顶部Tab实现类似头条页面布局(27分36秒

作者:互联网

19 Flutter 自定义AppBar 定义顶部Tab切换 底部Tab结合顶部Tab实现类似头条页面布局

一、Flutter AppBar 自定义顶部按钮图 标、颜色

在这里插入图片描述
左侧家图标按钮

leading: IconButton(
          icon: Icon(Icons.search),
          // 这个也可以有事件~
          onPressed: () {
            print("object");
          },

          // 右侧家图标
        ),

在这里插入图片描述
右侧家图标按钮IconButton

actions: [
          IconButton(
              icon: Icon(Icons.featured_play_list),
              onPressed: () {
                print("sss");
              })
        ],

在这里插入图片描述

除去上面的debug图标debugShowCheckedModeBanner: false,
在这里插入图片描述
centerTitle: true,
在这里插入图片描述

二、Flutter AppBar 中自定义 TabBar 实 现顶部 Tab 切换

在这里插入图片描述

DefaultTabController要放在MaterialApp外面 Scaffold里面
在这里插入图片描述

import 'package:flutter/material.dart';

class AppBardemoPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DefaultTabController(
        length: 2,
        child: Scaffold(
          appBar: AppBar(
              title: Text('FlutterDemo'),
              bottom: TabBar(tabs: <Widget>[Tab(text: "热门"), Tab(text: "推荐")])),
          body: TabBarView(
            children: <Widget>[
              ListView(
                children: <Widget>[
                  ListTile(title: Text("这是第一个 tab")),
                  ListTile(title: Text("这是第一个 tab")),
                  ListTile(title: Text("这是第一个 tab"))
                ],
              ),
              ListView(
                children: <Widget>[
                  ListTile(title: Text("这是第二个 tab")),
                  ListTile(title: Text("这是第二个 tab")),
                  ListTile(title: Text("这是第二个 tab"))
                ],
              )
            ],
          ),
        ),
      ),
    );
  }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当增加到了12个之后 寄可以进行滚动了
在这里插入图片描述

四、Flutter AppBar 中自定义 TabBar 实 现 Tabs 的另一种方法

import 'package:flutter/material.dart';

class AppBardemoPage extends StatefulWidget {
  AppBardemoPage({Key key}) : super(key: key);
  _AppBardemoPageState createState() => _AppBardemoPageState();
}

class _AppBardemoPageState extends State<AppBardemoPage>
    with SingleTickerProviderStateMixin {
  TabController _tabController;
  @override
  void dispose() {
    _tabController.dispose();
    super.dispose();
  }

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

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text('顶部 tab 切换'),
        bottom: new TabBar(
          tabs: <Widget>[
            new Tab(
              icon: new Icon(Icons.directions_bike),
            ),
            new Tab(
              icon: new Icon(Icons.directions_boat),
            ),
            new Tab(
              icon: new Icon(Icons.directions_bus),
            ),
          ],
          controller: _tabController,
        ),
      ),
      body: new TabBarView(
        controller: _tabController,
        children: <Widget>[
          new Center(child: new Text('自行车')),
          new Center(child: new Text('船')),
          new Center(child: new Text('巴士')),
        ],
      ),
    );
  }
}

标签:tab,自定义,title,顶部,Text,AppBar,Tab,new
来源: https://blog.csdn.net/CeciliaXinn/article/details/115558706