在 APP 中,导航栏是必不可少的。在 flutter 中,创建一个导航栏也很容易实现,这篇文章将会讲述在 flutter 中定制化导航栏。
在 flutter 中创建一个导航栏很简单,如下:
1 | class App extends StatelessWidget { |
这段代码会生成这样的导航栏:
但我们的 APP 中肯定会根据页面的功能需要不同的种类的导航栏,这就需要我们定制导航栏了。
Theme
在 MaterialApp 中,存在一个 theme 的主题属性用来配置主题,也包括导航栏,当然这是全局性的:
在 ThemeData 中,配置的属性会被页面内的元素所继承。 其中包含很多的属性,但与导航栏有关的属性为 primaryColor 原色属性,定义 APP 的主体颜色。
定义 primaryColor 后,导航栏会根据设置的颜色自动设置背景色与字体的颜色,如:
1 | MaterialApp( |
如果想具体改变导航栏的其他控件样式,则需要用到其他属性:
primaryTextTheme改变标题的样式,如字体的颜色、字体大小等属性。primaryIconTheme改变 icon 的样式,如颜色、大小、透明度等。backgroundColor改变的背景颜色。elevation改变导航栏下面的阴影,默认是 4.0。
1 | MaterialApp( |
在 theme 中定义的这些属性是全局性的。
AppBar
在 Scaffold 控件的 AppBar 属性中也具有和 ThemeData 中的属性。我们可以在 AppBar 中对全局的属性进行覆盖。