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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от sylvester , год назад

@marshall.*******s 

Чтобы сохранить состояние виджета Switch на Flutter, используя Shared Preferences, вам необходимо выполнить следующие шаги:

  1. Импортируйте пакет Shared Preferences:
1
import 'package:shared_preferences/shared_preferences.dart';


  1. Создайте экземпляр SharedPreferences:
1
SharedPreferences prefs = await SharedPreferences.getInstance();


  1. Получите текущее состояние вашего виджета Switch:
1
bool isSwitched = false; // замените false на текущее состояние вашего виджета Switch


  1. Сохраните состояние вашего виджета Switch в SharedPreferences:
1
await prefs.setBool('switchValue', isSwitched);


  1. Чтобы получить сохраненное состояние вашего виджета Switch при следующем запуске приложения, используйте следующий код:
1
bool switchValue = prefs.getBool('switchValue') ?? false;


Полный пример:

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

class SwitchWidget extends StatefulWidget {
  @override
  _SwitchWidgetState createState() => _SwitchWidgetState();
}

class _SwitchWidgetState extends State<SwitchWidget> {
  bool isSwitched = false;

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

  Future<void> _loadSwitchValue() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      isSwitched = prefs.getBool('switchValue') ?? false;
    });
  }

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

  @override
  Widget build(BuildContext context) {
    return SwitchListTile(
      title: Text('Switch Widget'),
      value: isSwitched,
      onChanged: (value) {
        setState(() {
          isSwitched = value;
          _saveSwitchValue(value);
        });
      },
    );
  }
}


Этот пример создает виджет Switch и сохраняет его состояние в SharedPreferences при каждом изменении его значения. Когда пользователь перезапускает приложение, виджет Switch получает сохраненное значение.