-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcustom_tab_bar.dart
More file actions
66 lines (60 loc) · 1.89 KB
/
Copy pathcustom_tab_bar.dart
File metadata and controls
66 lines (60 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import 'package:flutter/material.dart';
import 'package:kb4yg/constants.dart' as constants;
class CustomTabBar extends StatefulWidget {
final TabController controller;
final void Function()? onChangeTab;
const CustomTabBar({Key? key, required this.controller, this.onChangeTab})
: super(key: key);
@override
State<CustomTabBar> createState() => _CustomTabBarState();
}
class _CustomTabBarState extends State<CustomTabBar> {
TabController get _tabController => widget.controller;
int _tabIndex = 0;
@override
void initState() {
super.initState();
_tabController.addListener(onChangeTab);
}
void onChangeTab() {
setState(() => _tabIndex = _tabController.index);
if (widget.onChangeTab != null) widget.onChangeTab!();
}
@override
Widget build(BuildContext context) {
return TabBar(
controller: widget.controller,
indicatorColor: Colors.transparent,
tabs: [
Tab(
text: constants.pageHome,
icon: _tabIndex == 0
? const Icon(Icons.home)
: const Icon(Icons.home_outlined),
iconMargin: const EdgeInsets.only(bottom: 1.0),
),
Tab(
text: constants.pageLocations,
icon: _tabIndex == 1
? const Icon(Icons.directions_car)
: const Icon(Icons.directions_car_outlined),
iconMargin: const EdgeInsets.only(bottom: 1.0),
),
Tab(
text: constants.pageHelp,
icon: _tabIndex == 2
? const Icon(Icons.help_outlined)
: const Icon(Icons.help_outline),
iconMargin: const EdgeInsets.only(bottom: 1.0),
),
Tab(
text: constants.pageAbout,
icon: _tabIndex == 3
? const Icon(Icons.info)
: const Icon(Icons.info_outlined),
iconMargin: const EdgeInsets.only(bottom: 1.0),
)
],
);
}
}