我一直在尝试使用选项卡更改应用程序栏标题的许多解决方案,并且已经解决了,但是现在存在一个小问题;按下选项卡时,appbar的确随选项卡而改变,但tabbarview却没有。在标签栏视图上向左或向右滑动可更改标签栏视图,但不会更改标签页(应用程序栏标题也不会更改)。
我的下面的代码:
final List<Tabs> _tabs = [new Tabs(title: "Registered UAS", icon: new IconData(58826, fontFamily: 'MaterialIcons')),
new Tabs(title: "Registration", icon: IconData(57680, fontFamily: 'MaterialIcons'))
];
Tabs _myHandler ;
void initState() {
super.initState();
_controller = new TabController(length: 2, vsync: this);
_myHandler = _tabs[0];
_controller.addListener(_handleSelected);
}
void _handleSelected() {
setState(() {
_myHandler= _tabs[_controller.index];
});
}
@override
Widget build(BuildContext context) {
return WillPopScope(
child: DefaultTabController(
length: 2,
child: new Scaffold(
appBar: AppBar(
title: Text(_myHandler.title),
bottom: new TabBar(
controller: _controller,
tabs: <Widget>[
new Tab(icon: new Icon(_tabs[0].icon)),
new Tab(icon: new Icon(_tabs[1].icon))
],
),
),
body: new TabBarView(children: [...])
我跟随this更改了选项卡更改上的应用栏标题,现在陷入了this之类的类似情况,但是我认为解决方案不适合我(我已经尝试过了)< / p>
答案 0 :(得分:0)
通过在TabBarView下添加controller: _controller,
来解决该问题
答案 1 :(得分:0)
如果要使用自己的控制器,则不应使用DefaultTabController
小部件。例如,不使用DefaultTabController。
如果要使用自己的控制器,则应使用此示例。 https://api.flutter.dev/flutter/material/TabController-class.html
如果要在没有自己的控制器的情况下使用DefaultTabController,则应使用此示例。
import 'package:flutter/material.dart';
void main() {
runApp(TabBarDemo());
}
class TabBarDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
bottom: TabBar(
tabs: [
Tab(icon: Icon(Icons.directions_car)),
Tab(icon: Icon(Icons.directions_transit)),
Tab(icon: Icon(Icons.directions_bike)),
],
),
title: Text('Tabs Demo'),
),
body: TabBarView(
children: [
Icon(Icons.directions_car),
Icon(Icons.directions_transit),
Icon(Icons.directions_bike),
],
),
),
),
);
}
}