Ausgabe
Hallo, in meiner App steuere ich meine Schriftgröße mit einem Schieberegler und den Schieberegler mit einem Kontrollkästchen. Wenn der Benutzer also die Größe ändern möchte, aktiviert er das Kontrollkästchen. Ich möchte also, dass der Benutzer den Schieberegler ändert, um die Schriftart zu ändern Speichern Sie im lokalen Speicher dieses Geräts, wie kann ich das tun? Ich werde hier etwas Code teilen …
bool toggle = falsch; int _value = 38; Erweitert ( Flex: 2, Kind: Switcher (
size:SwitcherSize.small,
curveType: Curves.fastLinearToSlowEaseIn,
colorOn: Colors.green,
colorOff: Colors.redAccent,
iconOn: Icons.done,
iconOff: Icons.dangerous,
onChanged: (value) {
toggle = value;
},
),
),
Expanded(
flex: 12,
child: Slider(
thumbColor: Colors.red.shade900,
value: _value.toDouble(),
activeColor: Colors.black,
inactiveColor: Colors.grey.shade400,
onChanged: (double s) {
setState(() {
if (toggle == false) {
return null;
}
if (toggle == true) {
_value = s.toInt();
}
});
},
min: 20.0,
max: 60.0,
),
// switchcase(),
),
//hier aufrufen fontSize: _value.toDouble(),
Dieser Code wird mir richtig sagen, wie ich das in Shared Pref speichern werde
Lösung
Sie können dies versuchen:
import 'package:shared_preferences/shared_preferences.dart';
class MySliderWidget extends StatefulWidget {
const MySliderWidget({super.key});
@override
State<MySliderWidget> createState() => _MySliderWidgetState();
}
class _MySliderWidgetState extends State<MySliderWidget> {
bool toggle = false;
double _value = 38;
late SharedPreferences _pref;
String prefKey = "value";
// function to save to pref
void saveOnPref(double value) async {
_pref = await SharedPreferences.getInstance();
_pref.setDouble(prefKey, value);
}
// this function load and update value
void loadFromPref() async {
_pref = await SharedPreferences.getInstance();
setState(() {
_value = _pref.getDouble(prefKey) ?? 38.0;
});
}
@override
void initState() {
loadFromPref();
super.initState();
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"test",
style: TextStyle(fontSize: _value),
),
Switch(
onChanged: (value) {
setState(() {
toggle = !toggle;
});
},
value: toggle,
),
Slider(
thumbColor: Colors.red.shade900,
value: _value,
activeColor: Colors.black,
inactiveColor: Colors.grey.shade400,
min: 20.0,
max: 60.0,
onChanged: toggle
? (value) {
setState(() {
_value = value;
});
saveOnPref(value);
}
: null,
)
],
);
}
}
Ergebnis:
Beantwortet von – mohammad esmaili
Antwort geprüft von – Dawn Plyler (FixError Volunteer)