KforScale_UI_edit method
dynamic
KforScale_UI_edit()
Implementation
KforScale_UI_edit() async {
double _currentValue = (widget.xApp.KforScale * 100).round().toDouble();
double _minValue = 70;
double _maxValue = 200;
double _firstMarkerSize = 10;
// String _annotationValue = '100';
var res = await showDialog<bool?>(
context: context,
builder: (context) {
return StatefulBuilder(builder: (context, setState) {
double width = MediaQuery.of(context).size.width;
//Da modificare per fare i font
void handlePointerValueChanged(double value) {
setState(() {
_currentValue = value.round().toDouble();
});
}
/// Pointer dragging is canceled when dragging pointer value is less than 7.
void handlePointerValueChanging(ValueChangingArgs args) {
if (args.value < _minValue || args.value > _maxValue) {
args.cancel = true;
}
}
return Container(
margin: EdgeInsets.symmetric(horizontal: 20),
child: XAlertDialog(
colorBackGround: Colors.grey[900],
height: MediaQuery.of(context).size.height / 2,
title_Text: "Scegli la tua grandezza del testo:",
title_Style: XStyles.xStyleText(fontSize: 18 * (_currentValue / 100) / widget.xApp.KforScale),
content_insetPadding: EdgeInsets.all(0),
btnYES_label: "Salva",
btnNO_label: "Annulla",
child: Column(children: <Widget>[
Expanded(
flex: 7,
child: SfRadialGauge(axes: <RadialAxis>[
RadialAxis(
minimum: _minValue, maximum: _maxValue,
axisLineStyle: const AxisLineStyle(thickness: 0.2, thicknessUnit: GaugeSizeUnit.factor),
showTicks: false,
showLastLabel: true,
//style delle tacchette interne
axisLabelStyle: GaugeTextStyle(color: XColors.foregroundLight, fontSize: 18),
onAxisTapped: handlePointerValueChanged,
pointers: <GaugePointer>[
//streiscia da tappare e fare lo slide
RangePointer(
value: _currentValue,
onValueChanged: handlePointerValueChanged,
onValueChangeEnd: handlePointerValueChanged,
onValueChanging: handlePointerValueChanging,
enableDragging: true,
width: 0.2,
sizeUnit: GaugeSizeUnit.factor,
),
//Pallino bianco dentro la striscia da tappare
MarkerPointer(
value: _currentValue,
color: Colors.white,
markerHeight: _firstMarkerSize,
markerWidth: _firstMarkerSize,
markerType: MarkerType.circle,
),
],
//Percentuale interna allo slider
annotations: <GaugeAnnotation>[
GaugeAnnotation(
widget: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[Text('${_currentValue.toInt()} %', style: XStyles.xStyTextForSubDescr())],
),
positionFactor: 0.13,
angle: 0)
],
)
]),
),
//Slider orizzontale sotto alla chart
Expanded(
flex: 3,
child: SizedBox(
width: width - 50,
child: Slider(
min: _minValue,
max: _maxValue,
activeColor: const Color(0xFF02AAB0),
inactiveColor: const Color(0xFF00CDAC),
onChanged: handlePointerValueChanged,
value: _currentValue,
),
)),
]),
btnYES_OnPressed: () {
Navigator.pop(context, true);
},
btnNO_OnPressed: () {
Navigator.pop(context, false);
}));
});
});
if (res != null && res) {
setState(() {
widget.xApp.KforScale = _currentValue / 100;
});
var prefs = await SharedPreferences.getInstance();
prefs.setString("fontSize", widget.xApp.KforScale.toString());
}
}