我有一个TabBarView,可以在我的应用程序中的页面之间导航 . 有没有办法根据当前查看的页面更改/覆盖主AppBar的文本和颜色,而不是分别为每个页面创建一个AppBar?
这就是我的页面设置方式
我的路由在main函数中定义如下:
routes: <String, WidgetBuilder>{
"/Home": (BuildContext context) => new first.Home(),
"/Support": (BuildContext context) => new second.Support(),
}
标签类
class Tabs extends StatefulWidget {
@override
TabsState createState() => new TabsState();
}
class TabsState extends State<Tabs> with SingleTickerProviderStateMixin {
TabController controller;
@override
void initState() {
super.initState();
controller = new TabController(length: 5, vsync: this);
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
centerTitle: true,
title: new Text('App'), backgroundColor: Colors.blue,
bottom: new TabBar(
controller: controller,
tabs: <Tab>[
new Tab (icon: new Icon(Icons.home), text: 'Home',),
new Tab (icon: new Icon(Icons.mail), text:'Support'),
]),
),
body: new TabBarView(
controller: controller,
children: <Widget>[
new first.Home(),
new second.Support(),
],
),
);
}
2 回答
我修改了这段代码,以增加对文本和颜色变化的支持
https://flutter.io/catalog/samples/tabbed-app-bar/
我为代码的丑陋道歉 . 我所做的只是将所有类更改为有状态小部件,添加一个setstate图标选择器,更改小部件以便有一个onPressed回调
我有点恼火,因为我上面的代码类似于操作所需的实际答案 . 我上面的代码和操作系统想要的唯一区别是我将更改添加到tabcontroller而不是按钮本身
这是代码
如果使用
PageView
而不是TabBarView
,则可以指定允许您更改状态的onPageChanged
函数,从而重建窗口小部件 .这是我正在处理的一些代码, Headers 在appbar中被更改,但概念基本相同: