给定ChangeNotifier中的状态更改,更改TabView中的选定选项卡

时间:2019-06-10 15:59:55

标签: flutter

我有以下课程可以保持自己的状态:

import 'package:flutter/foundation.dart';

enum ActiveProduct {
  HOME,
  BURGUNDY,
  VIRTUAL
}

class ActiveProductModel extends ChangeNotifier {
  ActiveProduct _activeProduct = ActiveProduct.HOME;

  ActiveProduct get value => _activeProduct;

  void set(ActiveProduct newValue) {
    _activeProduct = newValue;
    notifyListeners();
  }
}

每当“ ActiveProduct”更改时,我都希望更改TabView中的选定标签。

当前,我已经像这样设置了应用程序:

class MainScaffold extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DefaultTabController(
      length: 3,
      child: Scaffold(
        body: TabBarView(
          children: [
            Text("hello! abc"),
            Text("hello! sdsadsa"),
            Text("hello! 231321"),
          ],
        ),
      ),
    );
  }
}

当ActiveProduct更改时,如何在TabBarView中更改所选的标签?

我尝试将MainScaffold封装在Consumer中,并设置DefaultTabController的initialIndex值。但是,这不起作用。

我正在使用提供程序包进行状态管理。

1 个答案:

答案 0 :(得分:1)

我要做的是将您的MainScaffold转换为StatelessWidget,然后,我不使用DefaultTabController,而是使用TabController并将其作为TabBarView的参数。

然后在initState的{​​{1}}中,我会听MainScaffoldState并在发生任何事情时使用ActiveProductModel

我不确定我的解释是否很清楚,所以这里有个例子:

tabController.animateTo(yourpage)