• 0

التحقق من الحقول باستخدام flutter

- ( الخلاصة التي استفدتها أن الموضوع من قبل فلاتر يتم ب: responce.StatusCode عندما تكون قيمته تساوي ب 422 )، لكن لم تنجح معي للأسف في فلاتر علما أني أستخدم حزمة Dio ومع العلم أيضا أن VS code يظهر لي أن Status code الذي حصل 422 لكن لم يستطع أن يقرأ الرد مع العمل أيضا أن الرد شغال وقمت بتحربته باستخدام Postman كما يظهر في الصورة المرفقة.

- أريد عندما يقوم المستخدم سواء بعملية ( login / register )، وكان رقم الجوال مسجل في قاعدة البيانات، أن يقوم بإظهر رسالة مناسبة له، ملاحظة / ال validation من جهة Laravel جاهز، ويقوم فعلا بإرجاع رسالة أن المستخدم مسجل بالفعل.

- فما العمل؟ 

Screenshot (51).png

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

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


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

هل api محلي أم على استضافة , وما هو الرابط؟ 

سواء استخدمت حزمة dio أو HTTP فالمنطق واحد , يمكنك إرجاع شكل response مثلا هكذا ( أنظر الصورة المرفقة) , يمكنك إنشاء Future من نوع Map واسمه register 

Future<Map> register(String name, String email, String password) async {
    final url = Config.url ;

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

    Map<String, dynamic> result = {
      "success": false,
      "message": 'Unknown error.'
    };

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

    if (response.statusCode == 200 || response.statusCode == 201) {
      _status = Status.Authenticated;
      result['success'] = true;
      result['message'] = 'Successfull Login';
      notifyListeners();
      return result;
    }

    Map apiResponse = json.decode(response.body);

    if (response.statusCode == 400) {
      if (apiResponse['message'] != null) {
        result['message'] = apiResponse['message'];
        return result;
      }
      return result;
    }

    return result;
  }

ثم في واجهة التسجيل 

Future<void> submit() async {
    final form = _formKey.currentState;
    if (form.validate()) {
      response = await Provider.of<AuthProvider>(context, listen: false)
          .register(name, email, password);
      print(response);
      if (response['success'] == true) {
        //print(response['email']);
        await Provider.of<AuthProvider>(context, listen: false).login(
          email,
          password,
        );
        Navigator.pushNamed(context, '/home');
      } else {
        setState(() {
          message = response['message'];
        });
      }
    }
  }

أو يمكنك إرجاع alertDialog 

_showError() {
    showDialog(
        context: context,
        builder: (_) => new AlertDialog(
              title: new Text("ERROR"),
              content: new Text("ERROR"),
              actions: <Widget>[
                TextButton(
                  style: ButtonStyle(
                    foregroundColor: MaterialStateProperty.all<Color>(Colors.blue),
                    backgroundColor: MaterialStateProperty.all<Color>(Colors.blue),
                  ),
                  child: Text("Colse"),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
                /*TextGradientButton(
                  child: Text(
                    S.of(context).close,
                    style: TextStyle(color: Colors.white),
                  ),
                  gradient: LinearGradient(
                    colors: <Color>[Colors.orange, Colors.red],
                  ),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),*/
              ],
            ));
    return Container();
  }

ويمكنك تغيير 

setState(() {
message = response['message'];
});

إلى 

_showError();

هذه مجرد فكرة للتوضيح, أو يمكنك تزويدي بملفات لارافل و مشروع flutter ويمكنني الإطلاع عليه.

40.png

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

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


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

- رفعته بالأمس على استضافة مجانية وها هو الرابط ( الأخطاء هي هي نفسها سواء محلي أم لا )

https://mohammedyousef.000webhostapp.com

وسأرفق لك صورة حول الرد الذي يصل ( ال api تمام، المشكلة ب فلاتر )

Screenshot (52).png

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


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

- رفعته بالأمس على استضافة مجانية وها هو الرابط ( الأخطاء هي هي نفسها سواء محلي أم لا )

https://mohammedyousef.000webhostapp.com

وسأرفق لك صورة حول الرد الذي يصل ( ال api تمام، المشكلة ب فلاتر )

أعطني الرابط كاملاً لل api.

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


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

POST - https://mohammedyousef.000webhostapp.com/api/v1/sanctum/token

هذا الرابط لعملية ال login, ويحتاج 3 مدخلات phone_number,password,device_name

- لل register

POST - https://mohammedyousef.000webhostapp.com/api/v1/register

ويحتاج phone_number,password,name

يمكنك تجربة استعلام عن الريسبونس 

if (response.statusCode == 400) {
      if (apiResponse['message'] != null) {
        result['message'] = apiResponse['errors']['phone_number'];
        return result;
      }
      return result;
    }

أو 

if (response.statusCode == 400) {
      if (apiResponse['message'] != null) {
        result['message'] = apiResponse['phone_number'];
        return result;
      }
      return result;
    }

في الكود السابق الذي إرفقته في إجابتي الأولى.

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

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


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

تمام، بس خلينا وحدة وحدة

الآن المشكلة عندي انو VS Code بيوقف عن العمل وبيقل التطبيق قبل م ينفذ الكود داخل الشرط التالي:

if(responce.StatusCode == 422){
	// any thing like print('hello')
}

مع انو بعد م يتوقف التطبيق بيظهرلي في VS Code في ال Exeption ان الايرور 422

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


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0
بتاريخ 1 ساعة قال Mohammed Abu Yousef:

تمام، بس خلينا وحدة وحدة

الآن المشكلة عندي انو VS Code بيوقف عن العمل وبيقل التطبيق قبل م ينفذ الكود داخل الشرط التالي:


if(responce.StatusCode == 422){
	// any thing like print('hello')
}

مع انو بعد م يتوقف التطبيق بيظهرلي في VS Code في ال Exeption ان الايرور 422

تعديل / نوعا ما اشتغلت، إذا حصل أي إشكال سأقوم بإبلاغك إن شاء الله، وشكرا

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


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

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

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

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


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

تسجيل الدخول

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


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