[FIXED] Flutter: So speichere ich meinen Schriftgrößenwert mit dem Schieberegler über Sharedpref

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:

Geben Sie hier die Bildbeschreibung ein


Beantwortet von –
mohammad esmaili


Antwort geprüft von –
Dawn Plyler (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like