Flutter - Tabbar

Flutter - Tabbar 首页 / Flutter入门教程 / Flutter - Tabbar

在本节中,无涯教程将学习Tabbar在Flutter中的工作方式。这些选项卡主要用于移动导航。对于不同的操作系统,选项卡的样式是不同的。例如,将其放置在android设备的屏幕顶部,而将其放置在iOS设备的底部。

让无涯教程一步一步地在Flutter应用程序中创建一个标签栏。

链接:https://www.learnfk.comhttps://www.learnfk.com/flutter/flutter-tabbar.html

来源:LearnFk无涯教程网

步骤1:首先,您需要在IDE中创建一个Flutter项目。在这里,无涯教程将使用Android Studio。

步骤2:在Android Studio中打开该应用程序,然后导航到lib文件夹。在lib文件夹中,创建两个dart文件,并将其命名为FirstScreen和SecondScreen。

在FirstScreen中写下以下代码:

import 'package:flutter/material.dart';

class FirstScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Center(
        child: Text('It is a contact tab, which is responsible for displaying the contacts stored in your mobile',
            style: TextStyle(fontSize: 32.0),
          )
      ),
    );
  }
}

在SecondScreen中编写以下代码:

import 'package:flutter/material.dart';

class SecondScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Center(
        child: Text('It is a second layout tab, which is responsible for taking pictures from your mobile.',
        style: TextStyle(fontSize: 35.0),
        ),
      ),
    );
  }
}

步骤3:接下来,无涯教程需要创建一个DefaultTabController。 DefaultTabController创建一个TabController并将其提供给所有小部件。

DefaultTabController(
 //The number of tabs to display.
  length: 2,
  child://Complete this code in the next step.
);

在上面的代码中,length属性告诉应用程序中使用的选项卡数量。

步骤4:创建选项卡。无涯教程可以使用TabBar小部件创建标签,如下所示。

DefaultTabController(
  length: 2,
  child: Scaffold(
    appBar: AppBar(
      bottom: TabBar(
        tabs: [
          Tab(icon: Icon(Icons.directions_car)),
          Tab(icon: Icon(Icons.directions_bike)),
        ],
      ),
    ),
  ),
);

步骤5:为每个选项卡创建内容,以便在选择选项卡时显示其内容。为此,无涯教程必须将TabBarView小部件用作:

TabBarView(
  children: [
  ],
);

步骤6:最后,打开main.dart文件并插入以下代码

import 'package:flutter/material.dart';
import './FirstScreen.dart';
import './SecondScreen.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DefaultTabController(
        length: 2,
        child: Scaffold(
          appBar: AppBar(
            title: Text('Flutter Tabs Demo'),
            bottom: TabBar(
              tabs: [
                Tab(icon: Icon(Icons.contacts), text: "Tab 1"),
                Tab(icon: Icon(Icons.camera_alt), text: "Tab 2")
              ],
            ),
          ),
          body: TabBarView(
            children: [
              FirstScreen(),
              SecondScreen(),
            ],
          ),
        ),
      ),
    );
  }
}

现在,在您的Android Studio中运行该应用程序。它将显示以下屏幕,您可以在其中看到两个标签图标。因此,当您单击任何选项卡图标时,它将显示相关的屏幕。

Flutter TabbarFlutter Tabbar

显示SnackBar

SnackBar在移动设备的屏幕底部显示一条简短消息,会在一段时间后自动消失。

让无涯教程以显示记录列表的示例为例,其中包含与每个列表相对应的删除图标。当无涯教程删除任何记录时,它会在屏幕底部显示一条消息。该消息得到用户的确认。如果未收到任何确认,该消息将自动消失。以下示例有助于更清楚地理解它。

无涯教程网

在Android Studio中创建Flutter项目。打开main.dart文件并替换以下代码。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.green,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  var lists = List<String>.generate(11, (index) => "List : $index");
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter SnackBar Demo'),
      ),
      body: ListView.builder(
        itemCount: lists.length,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text(lists[index]),
            trailing: Container(
              width: 60,
              child: FlatButton(
                child: Icon(
                  Icons.delete,
                  color: Colors.grey,
                ),
                onPressed: () {
                  showSnackBar(context, index);
                },
              ),
            ),
          );
        },
      ),
    );
  }

  void showSnackBar(BuildContext context, int index) {
    var deletedRecord = lists[index];
    setState(() {
      lists.removeAt(index);
    });
    SnackBar snackBar = SnackBar(
      content: Text('Deleted $deletedRecord'),
      action: SnackBarAction(
        label: "UNDO",
        onPressed: () {
          setState(() {
            lists.insert(index, deletedRecord);
          });
        },
      ),
    );
    Scaffold.of(context).showSnackBar(snackBar);
  }
}

现在,在Android Studio中运行该应用程序。您可以在仿真器中看到以下屏幕。当您删除任何列表时,它会在屏幕底部显示一条消息。如果您点击撤消,它不会删除列表。

Flutter TabbarFlutter Tabbar

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

人人都能学会的编程入门课 -〔胡光〕

职场求生攻略 -〔臧萌〕

TensorFlow 2项目进阶实战 -〔彭靖田〕

用户体验设计实战课 -〔相辉〕

流程型组织15讲 -〔蒋伟良〕

Redis源码剖析与实战 -〔蒋德钧〕

手把手带你搭建秒杀系统 -〔佘志东〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

大型Android系统重构实战 -〔黄俊彬〕

好记忆不如烂笔头。留下您的足迹吧 :)