• 0

كيفية استعمال بيانات من نوع bool في shared_preferences في flutter

لدي كلاس shared_preferences منفصل بحيث انني استطيع استدعاه من صفحات مختلفه وتخزين فيه البيانات من حيث يتطلب ذلك كالتالي:

import 'package:shared_preferences/shared_preferences.dart';

class MyPreferences {
  static const ID = "id";
  static const STATE = "state";


  static final MyPreferences instance = MyPreferences._internal();

  static SharedPreferences _sharedPreferences;

  String id = "";
  String state = "";


  MyPreferences._internal() {}

  factory MyPreferences() => instance;

  Future<SharedPreferences> get preferences async {
    if (_sharedPreferences != null) {
      return _sharedPreferences;
    } else {
      _sharedPreferences = await SharedPreferences.getInstance();
      state = _sharedPreferences.getString(STATE);
      id = _sharedPreferences.getString(ID);
      return _sharedPreferences;
    }
  }

  Future<bool> commit() async {
    await _sharedPreferences.setString(STATE, state);
    await _sharedPreferences.setString(ID, id);

  }
  Future<MyPreferences> init() async {
    _sharedPreferences = await preferences;
    return this;
  }

  
  

}

احتاج الى اضافة بيانات مختلفه فيه ليست من نوع Stirng

احتاج الى اضافة setBool و getBool

بحيث انني ارغب بعمل تحقق من المستخدم اذا كان عامل تسجيل دخول او لا 

كيف يمكن عمل ذلك في كلاس  shared_preferences

مع العلم انني ساقوم بتخزين البيانات من صفحه مختلفه 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

ولكن هناك دوال في shared_preferences لتتعامل مع بيانات من نوع bool , مثل setBool , getBool لماذا لا تستخدمها مباشرة ؟ 

يمكنك استخدام setBool بهذا الشكل 

_saveOptions() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setBool('option', true);
}

ويمكنك استخدام getBool بهذا الشكل 

SharedPreferences prefs = await SharedPreferences.getInstance();
  bool boolValue = prefs.getBool('option');

أم هل تقصد تريد إضافة بيانات بهذا الشكل ؟

final String _kNotificationsPrefs = "allowNotifications";
final String _kSortingOrderPrefs = "sortOrder";


Future<bool> getAllowsNotifications() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();

return prefs.getBool(_kNotificationsPrefs) ?? false;
}

Future<bool> setAllowsNotifications(bool value) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();

return prefs.setBool(_kNotificationsPrefs, value);
}

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1
بتاريخ الآن قال مروان مروان3:

اهلا اخي

احاول اضافتهم الى الكود الذي لدي حتى تكون بنفس طريقة العمل

الطريقة الذي ذكرتها انت في البداية هذا تكون في صفحة العمل ولكني ارغب بجلعها مثل string  الذي في الصفحه الان اي في نفس الصفحه ولكن من نوع bool حتى استخدمها من اي مكان وتكون كل البيانات في صفحة واحده 

يمكنك تجريب الطريقة الثانية ومن ثم إخباري بالنتيجة.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1
بتاريخ 7 دقائق مضت قال مروان مروان3:

قمت بتجربه بشكل التالي ولم ينجح الامر 

تمام, سأحاول تعديل الكود ومن ثم إخبارك بالنتيجة.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 3 دقائق مضت قال بلال زيادة:

ولكن هناك دوال في shared_preferences لتتعامل مع بيانات من نوع bool , مثل setBool , getBool لماذا لا تستخدمها مباشرة ؟ 

يمكنك استخدام setBool بهذا الشكل 


_saveOptions() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setBool('option', true);
}

ويمكنك استخدام getBool بهذا الشكل 


SharedPreferences prefs = await SharedPreferences.getInstance();
  bool boolValue = prefs.getBool('option');

أم هل تقصد تريد إضافة بيانات بهذا الشكل ؟


final String _kNotificationsPrefs = "allowNotifications";
final String _kSortingOrderPrefs = "sortOrder";


Future<bool> getAllowsNotifications() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();

return prefs.getBool(_kNotificationsPrefs) ?? false;
}

Future<bool> setAllowsNotifications(bool value) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();

return prefs.setBool(_kNotificationsPrefs, value);
}

 

اهلا اخي

احاول اضافتهم الى الكود الذي لدي حتى تكون بنفس طريقة العمل

الطريقة الذي ذكرتها انت في البداية هذا تكون في صفحة العمل ولكني ارغب بجلعها مثل string  الذي في الصفحه الان اي في نفس الصفحه ولكن من نوع bool حتى استخدمها من اي مكان وتكون كل البيانات في صفحة واحده 

@بلال زيادةبمعنى اضافتها في هذا الكلاس {}class MyPreferences

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 4 دقائق مضت قال بلال زيادة:

يمكنك تجريب الطريقة الثانية ومن ثم إخباري بالنتيجة.

قمت بتجربه بشكل التالي ولم ينجح الامر 


import 'package:shared_preferences/shared_preferences.dart';

class MyPreferences {
  static const ID = "id";
  static const STATE = "state";
  final String _kNotificationsPrefs = "allowNotifications";
  final String _kSortingOrderPrefs = "sortOrder";

  static final MyPreferences instance = MyPreferences._internal();

  static SharedPreferences _sharedPreferences;

  String id = "";
  String state = "";

  bool value;
  MyPreferences._internal() {}

  factory MyPreferences() => instance;

  Future<SharedPreferences> get preferences async {
    if (_sharedPreferences != null) {
      return _sharedPreferences;
    } else {
      _sharedPreferences = await SharedPreferences.getInstance();
      state = _sharedPreferences.getString(STATE);
      id = _sharedPreferences.getString(ID);
      _sharedPreferences.getBool(_kNotificationsPrefs) ?? false;
      return _sharedPreferences;
    }
  }

  Future<bool> commit() async {
    await _sharedPreferences.setString(STATE, state);
    await _sharedPreferences.setString(ID, id);
    await _sharedPreferences.setBool(_kNotificationsPrefs, value);

  }
  Future<MyPreferences> init() async {
    _sharedPreferences = await preferences;
    return this;
  }




}

 

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ الآن قال بلال زيادة:

تمام, سأحاول تعديل الكود ومن ثم إخبارك بالنتيجة.

ربي يعطيك الف عافيه

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن