• 0

كيفية استعمال اكبر من واصغر من او يساوي في flutter

السلام عليكم ورحمة الله وبركاته

تحيه طيبه للجميع ي اخوان

تواجهني مشكلة مع كتابة اكبر من واصغر من كالتالي :

  Future<String> getLogin() async {
    var response = await http.get(
        Uri.encodeFull("http://xxxxxxxxxxx/ApplicationP.php"),);
    setState(() {
      var convertDataToJson = json.decode(response.body);
        data = convertDataToJson['result'];
      if (data != null) {
        user_name = data[0]['id'];
        if (_myPreferences.id < user_name) {
          _myPreferences.id = user_name;
          _myPreferences.commit();
        }
       
      }
      
    });
  }

ارغب بعمل جمله شرطيه في الاستعلام يعني if او بالعربي اذا كانت الاي دي الي جاي اكبر من الي محفوظ معي يعمل لي حفظ الجديد المشكلة الان ان >  يظهر خطا لدي لا اعلم هل انا كاتب الجمله الشرطيه غلط او ماذا 

ياليت الي لديه خبره في الموضوع يساعدني في تعديل الكود

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


رابط هذه المساهمة
  • 0

مرحبا,

أظن أن الخطأ بسبب نمط المتحول user_name بعد فك ترميز JSON 

أي مقارنة نمط رقمي مع سلسلة نصية

استعمل الدالة التالية int.parse() للتحويل من نمط String إلى الى النمط int حيث تستطيع مقارنة الأرقام

أولا قم بتضمين المكتبة التالية 

import 'dart:convert';

ثم

Future<String> getLogin() async {
    var response = await http.get(
        Uri.encodeFull("http://xxxxxxxxxxx/ApplicationP.php"),);
    setState(() {
      var convertDataToJson = json.decode(response.body);
        data = convertDataToJson['result'];
      if (data != null) {
  
  
        user_name = data[0]['id']; // هل هذا المعرف ؟ 
  		//أفضل تسميته user_id
  		
  		var user_id = int.parse(data[0]['id']);
  		var my_pre_id = int.parse(_myPreferences.id);
        
        if (my_pre_id < user_id) {

          // أظن تعمل بقصر تلقائي
          _myPreferences.id = user_id;
          _myPreferences.commit();
        }
       
      }
      
    });
  }

يمكنك التأكد من نمط البيانات عن طريق 

print(x.runtimeType);

حيث X يمثل اسم المتحول

بالتوفيق

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

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


رابط هذه المساهمة
  • 1
بتاريخ On 28.10.2020 at 22:46 قال مروان مروان3:

 هلاك بيك اخوي ادري اخي انا ليس لدي اي مشكلة في if بنفس حاليا مشكلتي في علامة اصغر من هنا محتاج مساعده 

The operator '<' isn't defined for the type 'String'. هذا الخطا الي يواجهين لديها

الخطأ عندك أنك تقوم بعمل مقارنة بين سلسلة نصية وعددية ولايمكنك استخدام هذه الإشارة لعمل مثل هذه المقارنة.

يمكنك استخدام طويلة السلسلة النصية وعمل مقارنة معها.

يجب عليك تحويل السلسلة النصية user_name إلى طويلة السلسلة من خلال التعبير البرمجي int.

مثال:

// String -> int
main () {
    var one = int.parse('1');
  	if( one == 1) {
    	prints 'true';
    }
    
}

 

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

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


رابط هذه المساهمة
  • 1
بتاريخ 5 ساعات قال مروان مروان3:

هلاك بيك اخوي ادري اخي انا ليس لدي اي مشكلة في if بنفس حاليا مشكلتي في علامة اصغر من هنا محتاج مساعده 

The operator '<' isn't defined for the type 'String'. هذا الخطا الي يواجهين لديها

كما قلت يا أخي أن سبب الخطأ أنك تحاول مقارنة string مع متغير من نوع integer

كما يمكنك إستعمال الحل التالي:

  Future<String> getLogin() async {
    var response = await http.get(
        Uri.encodeFull("http://xxxxxxxxxxx/ApplicationP.php"),);
    setState(() {
      var convertDataToJson = json.decode(response.body);
        data = convertDataToJson['result'];
      if (data != null) {
        user_name = data[0]['id'];
        if (int.pars("_myPreferences.id") < user_name) {
          _myPreferences.id = user_name;
          _myPreferences.commit();
        }
       
      }
      
    });
  }

حيث أنني قمت بتغيير نوع المتغير _myPreferences.id ل integer.

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

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


رابط هذه المساهمة
  • 1

مرحبا مروان . 

عليك أن تقوم  بتعريف ا id  بمتغير جديد  يحمل نفس نوع الداتا التي تريد  المقارنة  بها , 

new_id = int.pars("_myPreferences.id");

 

و بعدها يمكنك استخدامه  في جمل المقارنة الخاصة بك 

 

شكراً لك 

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

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


رابط هذه المساهمة
  • 0

مرحبا أخي مروان، يمكنك إستعمال if بالفلاتر بواسطة immediate anonymous function

مثال على ذلك :

Widget build(BuildContext context) {
  Widget child;
  if (condition) {
    child = ...
  } else {
    child = ...
  }
  return new Container(child: child);
}

وسبب الخطأ في حالتك أنك تقوم بمقارنة متغير من نوع int مع متغير من نوع string.

ولتحول string ل int عليك بإستعمال دالة int.parse مثال:

int.parse("123")

تحياتي.

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


رابط هذه المساهمة
  • 0

هلاك بيك اخوي ادري اخي انا ليس لدي اي مشكلة في if بنفس حاليا مشكلتي في علامة اصغر من هنا محتاج مساعده 

بتاريخ 4 دقائق مضت قال مروان مروان3:

 هلاك بيك اخوي ادري اخي انا ليس لدي اي مشكلة في if بنفس حاليا مشكلتي في علامة اصغر من هنا محتاج مساعده 

The operator '<' isn't defined for the type 'String'. هذا الخطا الي يواجهين لديها

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


رابط هذه المساهمة

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

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

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


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

تسجيل الدخول

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


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