• 0

عمل زر تذكرني في فلاتر

لدي نظام تسجيل دخول و اريد عمل حقل يختار منه العضو اما يحفظ بيانات الدخول او لا ممكن حدا يشرح الفكرة

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

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


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

في البداية يمكنك وضع زر تذكرني في واجهة الدخول  بالتطبيق الخاص بك مثلاً يمكن وضع حقل الاختيار أسفل حقل إدخال كلمة المرور و يكون كود الزر

Column(
children: <Widget>[
  Row(
  children: <Widget>[
  Checkbox(
  checkColor: Colors.greenAccent,
  activeColor: Colors.blue,
  value: this.valuefirst,
  onChanged: (bool value) {
  setState(() {
  this.valuefirst = value;
  });
  },
  ),
  Text('Remember me ',style: TextStyle(fontSize: 17.0), ),
  ],
  ),
  ],
  ),

و من ثم يمكنك تعريف متغير valuefirst بهذه الطريقة 

bool valuefirst = false;

وتكون قيمته false أي حقل الأختيار غير معلم , ثم يمكننا إرسال قيمة هذا الحقل إلى الدالة التي نقوم بالتحقق منها من عملية تسجيل الدخول مثل الكود التالي 

await Provider.of<AuthProvider>(context, listen: false).login(username, password, this.valuefirst);

فإذا كانت قيمة valuefirst هي false أي لا يحفظ بيانات تسجيل الدخول , أما إذا كانت true فيجب حفظ هذه البيانات لعمل تسجيل دخول تلقائي في المرة القادمة التي يدخل بها العضو التطبيق. ثم في دالة login في نقوم باستخدام قيمة المتغير valuefirst بهذا الشكل 

Future<bool> login(String email, String password, bool savePassword) async {

    final url = 'هنا رابط مسار login ';

    Map<String, String> body = {
      'email': email,
      'password': password,
    };

    final response = await http.post(
      Uri.parse(url),
      body: body,
    );

    if (response.statusCode == 200) {
      Map<String, dynamic> apiResponse = json.decode(response.body);
      if (apiResponse['code'] == 200) {
        _token = apiResponse['user']['token'];
        _id = apiResponse['user']['id'];
        _email = apiResponse['user']['email'];
        _name = apiResponse['user']['name'];
        _savePassword = savePassword;
        await storeUserData(apiResponse, _savePassword);
        notifyListeners();
        return true;
      } else {
        _status = Status.Unauthenticated;
        _token = null;
        _email = null;
        _name = null;
        _savePassword = false;
        notifyListeners();
        return false;
      }
    }

    if (response.statusCode == 401) {
      notifyListeners();
      return false;
    }

    notifyListeners();
    return false;
  }

فلاحظ أيضا قمنا بإرسال قيمة هذا المتغير مرة أخرى في دالة storeUserData

storeUserData(apiResponse, bool savePassword) async {
    SharedPreferences storage = await SharedPreferences.getInstance();
    await storage.setString('token', apiResponse['user']['token']);
    await storage.setString('email', apiResponse['user']['email']);
    await storage.setString('name', apiResponse['user']['name']);
    await storage.setBool('savePassword', savePassword);
  }

لكي نخزن قيمة هذا الحقل في SharedPrefrence و نستطيع جلب هذه القيمة من أي مكان في التطبيق. 

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


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

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

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

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


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

تسجيل الدخول

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


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