Как сохранить состояние виджета switch, используя shared preference, на flutter?

Пользователь

от jakayla , в категории: Другие , год назад

Как сохранить состояние виджета switch, используя shared preference, на flutter?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от leila.dickinson , год назад

@jakayla 

Для сохранения состояния виджета Switch в SharedPreferences на Flutter можно использовать следующий код:

 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
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

class MySwitch extends StatefulWidget {
  @override
  _MySwitchState createState() => _MySwitchState();
}

class _MySwitchState extends State<MySwitch> {
  bool _switchValue = false;

  @override
  void initState() {
    super.initState();
    _loadSwitchValue();
  }

  @override
  Widget build(BuildContext context) {
    return Switch(
      value: _switchValue,
      onChanged: (value) {
        setState(() {
          _switchValue = value;
          _saveSwitchValue(value);
        });
      },
    );
  }

  _loadSwitchValue() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      _switchValue = prefs.getBool('switchValue') ?? false;
    });
  }

  _saveSwitchValue(bool value) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setBool('switchValue', value);
  }
}


В этом коде мы создаем StatefulWidget с именем MySwitch. В состоянии _MySwitchState мы определяем переменную _switchValue, которая будет хранить значение true или false, в зависимости от состояния переключателя Switch. Мы используем метод initState для загрузки последнего сохраненного значения переключателя из SharedPreferences и метод setState, чтобы обновить состояние виджета, когда мы загрузили значение.


Метод _saveSwitchValue используется для сохранения текущего значения переключателя в SharedPreferences, когда пользователь изменяет его состояние, используя метод onChanged.


В методе build мы используем текущее значение _switchValue для установки состояния переключателя Switch.


Теперь, когда пользователь взаимодействует с переключателем Switch, мы сохраняем его текущее состояние в SharedPreferences. При следующем запуске приложения мы загружаем последнее сохраненное значение из SharedPreferences и устанавливаем его как начальное состояние переключателя Switch.