@@ -2,8 +2,9 @@ import "package:flutter/material.dart";
22import "package:flutter_svg/flutter_svg.dart" ;
33import "package:frontend/exports.dart" ;
44import "package:provider/provider.dart" ;
5+ import "package:super_tooltip/super_tooltip.dart" ;
56
6- class SettingsRow extends StatelessWidget {
7+ class SettingsRow extends StatefulWidget {
78 const SettingsRow ({
89 super .key,
910 this .chose,
@@ -21,8 +22,27 @@ class SettingsRow extends StatelessWidget {
2122 final void Function (bool )? onChanged;
2223 final bool ? forceTabletLayout;
2324
25+ @override
26+ State <SettingsRow > createState () => _SettingsRowState ();
27+ }
28+
29+ class _SettingsRowState extends State <SettingsRow > {
30+ late final SuperTooltipController _tooltipController;
31+
32+ @override
33+ void initState () {
34+ super .initState ();
35+ _tooltipController = SuperTooltipController ();
36+ }
37+
38+ @override
39+ void dispose () {
40+ _tooltipController.dispose ();
41+ super .dispose ();
42+ }
43+
2444 bool _isTablet (BuildContext context) {
25- return forceTabletLayout ?? MediaQuery .of (context).size.width >= 640 ;
45+ return widget. forceTabletLayout ?? MediaQuery .of (context).size.width >= 640 ;
2646 }
2747
2848 @override
@@ -40,7 +60,7 @@ class SettingsRow extends StatelessWidget {
4060 Row (
4161 children: [
4262 Text (
43- text,
63+ widget. text,
4464 style: TextStyles .body2.copyWith (
4565 color: isPro ? scheme.primary : ColorsConst .disabledColor,
4666 fontSize: isTablet ? 25 : 16 ,
@@ -51,11 +71,12 @@ class SettingsRow extends StatelessWidget {
5171 ),
5272 ProFunctionsTooltip (
5373 isPro: isPro,
54- modalHeader: modalHeader,
74+ modalHeader: widget.modalHeader,
75+ controller: _tooltipController,
5576 child: SvgPicture .asset (
5677 "assets/images/icons/question_icon.svg" ,
5778 colorFilter: ColorFilter .mode (
58- isPro
79+ isPro
5980 ? scheme.tertiaryContainer
6081 : ColorsConst .disabledColor,
6182 BlendMode .srcIn),
@@ -67,15 +88,21 @@ class SettingsRow extends StatelessWidget {
6788 data: ThemeData (useMaterial3: false ),
6889 child: Switch (
6990 materialTapTargetSize: MaterialTapTargetSize .shrinkWrap,
70- value: isPro ? chose! : false ,
91+ value: isPro ? widget. chose! : false ,
7192 inactiveThumbColor:
7293 isPro ? scheme.surfaceTint : ColorsConst .disabledColor,
7394 inactiveTrackColor: scheme.outline,
7495 activeColor: scheme.inversePrimary,
7596 activeTrackColor: ColorsConst .primaryColor100,
76- onChanged: onChanged,
97+ onChanged: (value) {
98+ if (isPro) {
99+ widget.onChanged? .call (value);
100+ } else {
101+ _tooltipController.showTooltip ();
102+ }
103+ },
77104 ),
78- )
105+ ),
79106 ],
80107 ),
81108 ),
0 commit comments