اذهب إلى المحتوى

السؤال

نشر

لدي كلاس 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

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

Recommended Posts

  • 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);
}

 

  • 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

  • 1
نشر
بتاريخ الآن قال مروان مروان3:

اهلا اخي

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

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

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

  • 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;
  }




}

 

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...