我有以下课程可以保持自己的状态:
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值。但是,这不起作用。
我正在使用提供程序包进行状态管理。
答案 0 :(得分:1)
我要做的是将您的MainScaffold
转换为StatelessWidget
,然后,我不使用DefaultTabController
,而是使用TabController
并将其作为TabBarView的参数。
然后在initState
的{{1}}中,我会听MainScaffoldState
并在发生任何事情时使用ActiveProductModel
。
我不确定我的解释是否很清楚,所以这里有个例子:
tabController.animateTo(yourpage)