summaryrefslogtreecommitdiffstats
path: root/lib/presentation/screens/media/segmented_buttons.dart
blob: 5cc1d8719abdb165d2a8524cfc441b05664dd0c6 (plain)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import 'package:flutter_ics_homescreen/export.dart';

class SegmentedButtons extends StatefulWidget {
  const SegmentedButtons(
      {super.key, required this.navItems, required this.selectedNav});

  final List<String> navItems;
  final String selectedNav;
  @override
  State<SegmentedButtons> createState() => _SegmentedButtonsState();
}

class _SegmentedButtonsState extends State<SegmentedButtons> {
  late List<String> navItems;
  late String selectedNav;

  @override
  void initState() {
    navItems = widget.navItems;
    selectedNav = widget.selectedNav;
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Container(
          margin: const EdgeInsets.only(top: 40),
          padding: const EdgeInsets.all(3),
          decoration: BoxDecoration(
            boxShadow: [
              BoxShadow(
                  offset: const Offset(0, 4),
                  blurRadius: 4,
                  color: Colors.black.withOpacity(0.25))
            ],
            borderRadius: BorderRadius.circular(40),
            color: AGLDemoColors.buttonFillEnabledColor,
            border: Border.all(color: Colors.white12),
          ),
          child: Row(
            children: navItems
                .map((e) => Container(
                      decoration: BoxDecoration(
                        borderRadius: selectedNav == e
                            ? BorderRadius.circular(40)
                            : BorderRadius.zero,
                        color: selectedNav == e
                            ? AGLDemoColors.backgroundInsetColor
                            : null,
                      ),
                      child: Material(
                        color: Colors.transparent,
                        child: InkWell(
                          borderRadius: BorderRadius.circular(40),
                          onTap: () {
                            setState(() {
                              selectedNav = e;
                            });
                          },
                          child: Padding(
                            padding: const EdgeInsets.symmetric(
                                vertical: 24, horizontal: 32),
                            child: Text(
                              e,
                              style: TextStyle(
                                  color: selectedNav == e
                                      ? Colors.white
                                      : AGLDemoColors.periwinkleColor,
                                  fontSize: 26,
                                  fontWeight: selectedNav == e
                                      ? FontWeight.w700
                                      : FontWeight.w500),
                            ),
                          ),
                        ),
                      ),
                    ))
                .toList(),
          ),
        ),
      ],
    );
  }
}