Flutter 应用之TabBar

本文详细介绍了在Flutter开发中如何使用TabBar进行选项卡切换。通过DefaultTabController和自定义TabController两种方式,配合MaterialApp、Scaffold、TabBar和TabBarView组件,实现选项卡内容的同步显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       本文记录Flutter开发的TabBar使用。 TabBar是选项切换页的意思,在android中通常是使用ViewPage来实现。在Flutter中,TabBar是被定义在Material Component中,所以他的使用需要在MaterialApp中。

      为了让TabBar能正常使用,需要保持选项卡和内容同步,这个工作是由TabController来完成的。可以手动创建一个TabController,也可以使用默认的 DefaultTabController部件。

      一、使用DefaultController

     

new MaterialApp(
      home: new DefaultTabController(length: 3, child: new Scaffold(
        appBar: new AppBar(
          title: new Text('DefaultTabController'),
          bottom: new TabBar(tabs: <Widget>[
            new Tab(text: '1'),
            new Tab(text: '2'),
            new Tab(text: '3'),
          ]),
        ),
        body: new TabBarView(children: <Widget>[
          new Icon(Icons.more),
          new Icon(Icons.more),
          new Icon(Icons.more),
        ]),
      )),
    );

       

二、使用自定义的TabController

class _MyTabBarState extends State<MyTabBar>
    with SingleTickerProviderStateMixin {
  var _tabController;

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

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
          title: new Text("TabBar"),
          elevation: 0.7,
          bottom: new TabBar(
            controller: _tabController,
            indicator: new UnderlineTabIndicator(),
            tabs: <Widget>[
              new Tab(
                icon: new Icon(Icons.camera_alt),
              ),
              new Tab(
                text: "CHATS",
              ),
              new Tab(
                text: "STATUS",
              ),
              new Tab(
                text: "CALLS",
              ),
            ],
          ),
        ),
        body: new TabBarView(controller: _tabController, children: <Widget>[
          new Center(),
          new Center(),
          new Center(),
          new Center(),
        ]));
  }
}

      代码都很简单,可以看到他们都使用到了MaterialApp,Scaffold,TabBar,TabBarView。

### SVN命令行工具使用指南 #### 验证SVN命令行工具安装情况 确保SVN命令行工具已经正确安装并可以正常使用,在命令行终端输入以下指令来查看SVN版本信息: ```bash svn --version ``` 这条命令会显示当前系统的Subversion客户端版本号以及其他相关信息[^2]。 #### 创建仓库 创建一个新的SVN仓库可以通过`svnadmin create`命令完成。假设要在一个名为`myrepo`的新目录里建立一个仓库,则执行如下命令: ```bash svnadmin create /path/to/myrepo ``` 这将在指定位置创建一个全新的空仓库[^1]。 #### 导入项目至仓库 如果已有现有文件夹结构想要导入到新建的SVN仓库中,可利用`import`子命令实现此目的。例如要把本地某个项目的根目录下的所有内容上传到远程仓库URL地址处: ```bash svn import /path/to/project file:///path/to/myrepo -m "Initial Import" ``` 这里`file://`协议用于指向本地文件系统上的仓库;而`-m`参数后面跟的是此次提交的日志消息。 #### 检出副本(Checkout) 为了让开发者能够获取最新的代码拷贝以便于后续修改操作,需先检出一份工作副本出来。对于上面提到的例子而言,可以从刚刚创建好的仓库拉取最新数据下来: ```bash svn checkout file:///path/to/myrepo /path/to/workingcopy ``` 上述命令会在给定的目标路径下生成一个完整的、可编辑的工作区副本。 #### 添加新文件(Add) 当向项目添加新的资源时,应该告知SVN这些新增加的内容也需要纳入版本控制之下。比如现在有一个叫做`newfile.txt`的文档需要加入管理范围之内: ```bash svn add newfile.txt ``` 之后记得再次同步变更记录(`commit`)才能真正保存更改。 #### 提交更改(Commit) 每当完成了某些有意义的功能改进或是修复了一些缺陷以后,应当及时把这些改动推送到中央存储库去共享给大家看。此时就要用到`commit`动作了: ```bash svn commit -m "Added a new feature or fixed an issue." ``` 每次提交都应附带清晰明了的信息描述所作更动的具体意义所在。 #### 更新工作副本(Update) 随着其他成员不断贡献自己的成果回来,个人手中的资料可能会变得过期滞后。因此定期通过`update`方式刷新手头上的材料是非常必要的: ```bash svn update ``` 该过程不仅限于接收来自他人推送过来的东西,同时也涵盖了解决可能出现冲突的情况处理机制。 #### 查阅历史日志(Log) 有时候回顾过往经历过的各个里程碑事件有助于理解整个软件演进脉络。借助`log`功能即可轻松浏览历次修订详情: ```bash svn log ``` 还可以附加更多选项定制输出格式,如仅展示特定日期区间内的活动记录等。 #### 版本回退(Rollback) 如果不小心引入了一个严重的Bug或者单纯觉得之前的某版状态更好些的话,那么就可能需要用到撤销最近几次变动的能力——即所谓的“回滚”。一种方法就是找到那个理想的基线版本编号V,再运行下面这段脚本来恢复成那时的样子: ```bash svn merge -r HEAD:V . svn commit -m "Reverted to revision V." ``` 请注意这里的`.`代表当前所在的目录作为作用域对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值