Flutter — общие настройки

Flutter Изучение

SharedPreference — это небольшое хранилище данных в нашем телефоне, где мы можем хранить данные в виде пар ключей и значений. Мы можем хранить целое число, строку, список строк, логическое значение и двойное значение в SharedPreferences. Теперь давайте обсудим, где мы можем их реализовать. Во-первых, нужно сохранить информацию о пользователе, вошел он в систему или нет, любой идентификатор или некоторые основные сведения о пользователе, чтобы пользователям не приходилось снова входить в систему всякий раз, когда пользователь открывает это приложение.

Библиотека shared_preferences во Flutter

1. Добавьте пакет в файл pubspec.yaml.

2. Определите строки в файле констант, чтобы установить и получить значение для этого конкретного ключа (этот шаг не является обязательным, вы можете пропустить его и можете напрямую добавить туда, где вам это нужно).

const String key="myKey";

3. Во-первых, вам нужно создать экземпляр общего предпочтения и сохранить его в переменной.

final prefs = await SharedPreferences.getInstance();

4. Используя префы, вы можете получить доступ ко многим функциям для установки и получения данных в разных типах данных.

E.g. prefs.getBool(key), prefs.getInt(key) ,etc.

5. Ключ должен быть одинаковым как в геттере, так и в сеттере, чтобы получить значение для этого конкретного ключа. как ниже

5.1 Логический тип данных

Getter:- prefs.getBool(key) ?? false,
Setter:- prefs.setBool(key, value)
Value — true,false

Код:

const boolSharedPreference = "bool shared preferences";  
static Future getBool() async {
   final prefs = await SharedPreferences.getInstance();
   prefs.setBool(boolSharedPreference, true);
 }
 static Future<bool> setBool() async {
   final prefs = await SharedPreferences.getInstance();
   return prefs.getBool(boolSharedPreference) ?? false;
 }

5.2 Тип данных Int

Getter:- prefs.getInt(key) ?? 0,
Setter:- prefs.setInt(key, value)
value -integer value 1,4566,8423235,

Код:

const intSharedPreference = "integer shared preferences";
  static Future setInt() async {
   final prefs = await SharedPreferences.getInstance();
   return prefs.setInt(intSharedPreference, 1);
 }
 static Future<int> getInt() async {
   final prefs = await SharedPreferences.getInstance();
   return prefs.getInt(intSharedPreference) ?? 0;
 }

5.3 Двойной тип данных

Getter:- prefs.getDouble(key) ?? 0.0,
Setter:- prefs.setDouble(key, value)
value any double value like 2.0,6.7,12344.8

Код:

const doubleSharedPreference = "double shared preferences";
  static Future setDouble() async {
   final prefs = await SharedPreferences.getInstance();
   return prefs.setDouble(doubleSharedPreference, 0.0);
 }
 static Future<double> getDouble() async {
   final prefs = await SharedPreferences.getInstance();
   return prefs.getDouble(doubleSharedPreference) ?? 0.0;
 }

5.4 Строковый тип данных

Getter:- prefs.getString(key) ?? “”,
Setter:- prefs.setString(key, value)
Value -this can be anything under invertedComma .

Код:

const stringSharedPreference = "string shared preferences";
static Future<String> getString() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getString(listSharedPreference) ?? "";
}
static Future setString() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.setString(stringSharedPreference, "");
}

5.5 Список строковых типов данных

Getter:- prefs.getStringList(key) ?? [],
Setter:- prefs.setStringList(key, value)
Value -List of strings (anything under inverted comma)

Код:

const listSharedPreference = "list shared preferences";

 static Future setListString(
     {required String id, required String token}) async {
   final prefs = await SharedPreferences.getInstance();
   prefs.setStringList(listSharedPreference, [id, token]);
 }
 static Future<List<String>> getListString() async {
   final prefs = await SharedPreferences.getInstance();
   return prefs.getStringList(listSharedPreference) ?? [];
 }

5.6 Json или тип данных карты

Getter:- json.decode(prefs.getString(key).toString()),
Setter:- prefs.setString(key, jsonEncode(value))
to use its value.

// Map myData= jsonDecode(value);
value :- {“name”:”risheeta”,
“experince”:1.5,
“age”:21,
“skills”:[“flutter”,”Html”]}

Код:

const mapSharedPreference = "map shared preferences";
  static Future setMap() async {
   final prefs = await SharedPreferences.getInstance();
   return prefs.setString(
       mapSharedPreference,
       jsonEncode({
         "name": "",
       }));
 }
 static Future<Map> getMap() async {
   final prefs = await SharedPreferences.getInstance();
   return jsonDecode(prefs.getString(mapSharedPreference) ?? "") ?? {};
 }

Эта функция очистит полные общие настройки, т. е. удалит все пары ключ-значение, хранящиеся в памяти. Вы можете очистить эту память с помощью этой функции. Вы можете очистить это, удалив приложение и переустановив его или очистив данные этого конкретного приложения.

Код:

static Future clearSharedPref() async {
   final prefs = await SharedPreferences.getInstance();
   await prefs.clear();
 }

Dart

import 'dart:convert';
 
import 'package:shared_preferences/shared_preferences.dart';
import 'package:shared_preferences_flutter/constants/value.dart';
 
class SharedPref {
  static Future setBool() async {
    final prefs = await SharedPreferences.getInstance();
    prefs.setBool(boolSharedPreference, true);
  }
 
  static Future<bool> getBool(bool value) async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.getBool(boolSharedPreference) ?? false;
  }
 
  static Future setListString(
      {required String id, required String token}) async {
    final prefs = await SharedPreferences.getInstance();
    prefs.setStringList(listSharedPreference, [id, token]);
  }
 
  static Future<List<String>> getListString() async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.getStringList(listSharedPreference) ?? [];
  }
 
  static Future<String> getString() async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.getString(listSharedPreference) ?? "";
  }
 
  static Future setString(String value) async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.setString(stringSharedPreference, value);
  }
 
  static Future setInt(int val) async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.setInt(intSharedPreference, val);
  }
 
  static Future<int> getInt() async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.getInt(intSharedPreference) ?? 0;
  }
 
  static Future setDouble(double val) async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.setDouble(doubleSharedPreference, val);
  }
 
  static Future<double> getDouble() async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.getDouble(doubleSharedPreference) ?? 0.0;
  }
 
  static Future setMap(Map value) async {
    final prefs = await SharedPreferences.getInstance();
    return prefs.setString(mapSharedPreference, jsonEncode(value));
  }
 
  static Future<Map> getMap() async {
    final prefs = await SharedPreferences.getInstance();
    return jsonDecode(prefs.getString(mapSharedPreference) ?? "") ?? {};
  }
 
  static Future clearSharedPref() async {
    final prefs = await SharedPreferences.getInstance();
 
    await prefs.clear();
  }
}

Как использовать эту функцию?

Например, мы хотим получить значение getInt

1. Чтобы получить ценность

SharedPref.getInt().then((value) {
     print(value);
   // value will be your data stored in that key

 });

2. Установить значение

SharedPref.setInt(1);

Dart

const intSharedPreference = "integer shared preferences";
const doubleSharedPreference = "double shared preferences";
const stringSharedPreference = "string shared preferences";
const mapSharedPreference = "map shared preferences";
 
const listSharedPreference = "list shared preferences";
const boolSharedPreference = "bool shared preferences";

Дополнительные советы

Вы можете хранить более одной пары ключ-значение с одним и тем же типом данных, но они должны иметь разные ключи. Если вы установите 2 значения с одинаковым значением ключей, оно будет перезаписано.

Например:

Мы установили мой номер мобильного телефона в ключе с именем «данные клиента».

prefs.setString(customerData, 1234567890)
then somewhere else I set my age in the same key
prefs.setInt(customerData, 21)

Условия ошибки

Ошибка 1: необработанное исключение: тип «Первый тип данных» не является подтипом типа «Второй тип данных» в typecast.prefs.getString(customerData); это даст вам 1234567890. но prefs.getInt(customerData); это даст вам такую ​​​​ошибку. Вы можете установить множество пар ключ-значение в общих настройках. Но имя ключей должно быть уникальным в каждой паре. Чтобы получить доступ к значению, которое вы уже установили. Вы должны использовать тот же ключ, чтобы снова получить это значение из общих настроек.

Решение: Попытка изменить тип данных.

Ошибка 2: необработанное исключение: MissingPluginException (не найдена реализация для метода getAll на канале plugins.flutter.io/shared_preferences)

Решение: Удалите приложение и переустановите его.

Ошибка 3: MissingPluginException (не найдена реализация для запуска метода на канале plugins.flutter.io/url_launcher)

Решение: очистите Flutter или перезапустите проект.

 

 

Читайте также:  Какие типы данных поддерживает SASS?
Оцените статью
bestprogrammer.ru
Добавить комментарий