frontend/frontend-flutter/lib/utils/tabbed_container.dart (44 lines of code) (raw):
import 'package:flutter/material.dart';
class TabbedContainer extends StatefulWidget {
final List<Widget> tabs;
final List<Widget> tabViews;
final TabController controller;
final int initialIndex;
const TabbedContainer({
super.key,
required this.tabs,
required this.tabViews,
required this.controller,
required this.initialIndex
});
@override
_TabbedContainerState createState() => _TabbedContainerState();
}
class _TabbedContainerState extends State<TabbedContainer>
with SingleTickerProviderStateMixin {
int _currentIndex = 0;
@override
void initState() {
super.initState();
_currentIndex = widget.initialIndex;
widget.controller.index = _currentIndex; // Initialize
/*widget.controller.addListener(() {
setState(() {
_currentIndex = widget.controller.index;
});
});*/
}
@override
Widget build(BuildContext context) {
return Container(
height : 500,
child: Column(
children: [
TabBar(
controller: widget.controller,
indicatorSize: TabBarIndicatorSize.tab,
tabs: widget.tabs),
Flexible(
fit: FlexFit.loose,
child: TabBarView(controller: widget.controller, children: widget.tabViews)
),
],
),
);
}
}