想写TabView需要绑定this,但是继承GridView的页面好像不能 with TickerProviderStateMixin,这个要怎么处理

发布于 1周前 作者 itying888 来自 问答

getx框架生成的flutter项目 每个页面都是继承GetView

我现在练习页面想写TabView需要绑定this 但是继承GridView的页面好像不能 with TickerProviderStateMixin

这个要咋处理呢?

1 回复

在Flutter中使用GetX框架时,GetView是一个便捷的类,用于简化页面和控制器的绑定。然而,由于GetView本身是一个StatelessWidget,它无法直接与 TickerProviderStateMixin 混合使用,而TickerProviderStateMixin是实现TabController所必需的。

解决方案:

要解决这个问题,可以通过以下方法处理:

将页面改为继承 GetWidget 或普通 StatefulWidget

如果需要使用 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')),
        ],
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!