想写TabView需要绑定this,但是继承GridView的页面好像不能 with TickerProviderStateMixin,这个要怎么处理
getx框架生成的flutter项目 每个页面都是继承GetView
我现在练习页面想写TabView需要绑定this 但是继承GridView的页面好像不能 with TickerProviderStateMixin
这个要咋处理呢?
1 回复
getx框架生成的flutter项目 每个页面都是继承GetView
我现在练习页面想写TabView需要绑定this 但是继承GridView的页面好像不能 with TickerProviderStateMixin
这个要咋处理呢?
在Flutter中使用GetX框架时,GetView是一个便捷的类,用于简化页面和控制器的绑定。然而,由于GetView本身是一个StatelessWidget,它无法直接与 TickerProviderStateMixin 混合使用,而TickerProviderStateMixin是实现TabController所必需的。
要解决这个问题,可以通过以下方法处理:
如果需要使用 TickerProviderStateMixin,可以将页面改为继承 StatefulWidget,而不是 GetView。 示例代码:
class MyTabPage extends StatefulWidget {
@override
_MyTabPageState createState() => _MyTabPageState();
}
class _MyTabPageState extends State<MyTabPage> with TickerProviderStateMixin {
late TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(length: 3, vsync: this);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
bottom: TabBar(
controller: _tabController,
tabs: [
Tab(icon: Icon(Icons.home)),
Tab(icon: Icon(Icons.settings)),
Tab(icon: Icon(Icons.person)),
],
),
),
body: TabBarView(
controller: _tabController,
children: [
Center(child: Text('Home')),
Center(child: Text('Settings')),
Center(child: Text('Profile')),
],
),
);
}
}
