我有一个TabBar与2标签(服务和教练).我用2个Future列表填充这个选项卡(在每个选项卡上使用FutureBuilders)。我想做的是:当第一个Future完成并且List为空时,我希望选项卡栏动画到第二个选项卡(索引为1的选项卡)。我如何才能做到这一点?
final List<Widget> _tabs = [
const Tab(text: 'Servicios'),
const Tab(text: 'Profesionales'),
];
TabBar(
isScrollable: false,
controller: _tabController,
tabs: _tabs,
),
TabBarView(
controller: _tabController,
children: [
// TAB 0
FutureBuilder<List<ServiceCardCommonWidget>>(
future: widget.futureServices,
builder: (context, snapshot) {
// if snapshot.data.isEmpty I want to animate to the tab with index 1
}
),
// TAB 1
FutureBuilder<List<CoachCardCommonWidget>>(
future: widget.futureCoaches,
builder: (context, snapshot) {
// Content of Tab 1
},
),
],
),
1条答案
按热度按时间sc4hvdpw1#
不应该在build方法中设置动画。如文档中所述,
未来必须是更早获得的,例如。在
State.initState
、State.didUpdateWidget
或State.didChangeDependencies
期间。在构造FutureBuilder
时,不能在State.build
或StatelessWidget.build
方法调用期间创建它。如果future与FutureBuilder
同时创建,则每次重建FutureBuilder
的父任务时,异步任务都将重新启动。您可以在
initState
中检查Future的结果,并将其设置为所需的Tab。