Flutter 3 基础04: 创建应用导航

102 阅读3分钟

我们日常使用的社交,金融,办公等手机应用中,大多数都使用到了导航功能。应用的导航功能不仅可以让我们快速了解一个应用的主要功能,也方便在不同功能之间进行快速切换。举几个常见应用导航的例子:

腾讯微信:

41101697354156_.pic.jpg

银行应用:

41111697354156_.pic.jpg

阿里钉钉

WechatIMG4113.png

接下来,我们就在上一篇文章的基础上,为我们的 hello_world 项目增加应用导航功能。虽然这只是一个学习型项目,应用导航会让我们的学习更加专业。

启动 Android Studio,打开 hello_world 项目,运行模拟器,这样就可以实时看到编码产生的效果。现在,我们只能看到空白的页面。

Pasted image 20231014144242.png

添加底部导航

  1. 打开 main.dart 文件,找到下列代码,
body: SafeArea(  
  child: Container(),  
),
  1. 在上述代码块下面,添加如下代码并保存:
bottomNavigationBar: BottomNavigationBar(  
  selectedItemColor: Colors.lightBlue,  
  items: const [  
    BottomNavigationBarItem(  
      icon: Icon(Icons.list),  
      label: '列表',  
    ),  
    BottomNavigationBarItem(  
      icon: Icon(Icons.widgets),  
      label: '部件',  
    ),  
    BottomNavigationBarItem(  
      icon: Icon(Icons.settings),  
      label: '设置',  
    ),  
  ],  
),

观察虚拟机,就会发现,应用导航条出现在了页面的底部。

Pasted image 20231015164309.png

现在,如果你尝试点击其他两个导航图标,会发现没有任何反应,他们不会被选中。

接下来,我们就解决这个问题。

设置导航索引

  1. 为了让应用导航发挥作用,我们需要记录用户点击的导航项(图标)。

main.dart 文件中,找到 _HomePageState 类,在其中找到下列代码:

class _HomePageState extends State<HomePage> {

在这行代码的下面,添加如下代码:

int _selectedIndex = 0;

变量前面的下划线 _ 表示_selectedIndex是一个私有变量,这是 Dart 语言的一个特征。

  1. 继续在 _HomePageState 类中,找下列代码:
bottomNavigationBar: BottomNavigationBar(  
  selectedItemColor: Colors.lightBlue,

在这两行代码下面,添加如下代码:

currentIndex: _selectedIndex,

这样,我们就把应用导航的当前选择项的索引与变量 _selectedIndex 关联在一起。可以通过变量 _selectedIndex 获取或设置应用导航的选择项。

  1. 在上一步添加的代码 currentIndex: _selectedIndex, 下面,添加如下代码:
onTap: (index) =>  
  setState(() {  
    _selectedIndex = index;  
}),

这段代码是用户在点击应用导航图标时执行。其中,传入参数 index 表示用户所点击图标对应的导航项索引,赋值给 变量 _selectedIndex 进行保存。

这里需要强调的是,赋值语句是放到 setState 函数中执行的,起作用是告诉 Flutter 框架,应用导航的状态发生了变化,需要重新渲染界面。这也是为什么,我们在刚添加完应用导航,点击其他图标,没有被选中的原因。

现在试试点击其他两个图标,就会发现他们已经可以被选中了。

选中部件导航项。

Pasted image 20231015184221.png

选中设置导航项。

Pasted image 20231015184416.png

提交代码

我们已经完成了应用底部导航栏的添加,又到达了一个小小的里程碑,应该对代码进行提交,保持良好编程习惯。

git add .
git commit -m '添加应用底部导航栏。'