Sempre me perguntam como criar Tabs dinamicamente. Neste código fiz um pequeno exemplo.
import 'package:flutter/material.dart';
class TesteTabs extends StatefulWidget {
@override
_TesteTabsState createState() => _TesteTabsState();
}
class _TesteTabsState extends State<TesteTabs>
with TickerProviderStateMixin {
TabController _tabController;
int qtdeTabs = 2;
@override
void initState() {
super.initState();
_tabController = TabController(length: qtdeTabs, vsync: this);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Teste Tabs"),
actions: <Widget>[
IconButton(
icon: Icon(Icons.add),
onPressed: _onClickAddTab,
),
IconButton(
icon: Icon(Icons.remove),
onPressed: _onClickRemoveTab,
)
],
bottom: TabBar(
controller: _tabController,
tabs: getTabs(),
),
),
body: TabBarView(
controller: _tabController,
children: getPages(),
),
);
}
List<Widget> getTabs() {
List<Widget> list = [];
for (int i = 0; i < qtdeTabs; i++) {
list.add(Tab(
text: "Tab ${i + 1}",
));
}
return list;
}
List<Widget> getPages() {
List<Widget> list = [];
for (int i = 0; i < qtdeTabs; i++) {
list.add(Container(
child: Center(
child: Text("Texto ${i + 1}"),
),
));
}
return list;
}
page(String text) {
}
void _onClickAddTab() {
setState(() {
qtdeTabs ++;
_tabController = TabController(length: qtdeTabs, vsync: this);
});
}
void _onClickRemoveTab() {
setState(() {
qtdeTabs --;
_tabController = TabController(length: qtdeTabs, vsync: this);
});
}
}Resultado, você pode adicionar e remover as tabs com os ícones (+) e (-).
