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

السؤال

نشر

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

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

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

  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 او بالعربي اذا كانت الاي دي الي جاي اكبر من الي محفوظ معي يعمل لي حفظ الجديد المشكلة الان ان >  يظهر خطا لدي لا اعلم هل انا كاتب الجمله الشرطيه غلط او ماذا 

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

Recommended Posts

  • 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
نشر
بتاريخ 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
نشر
بتاريخ 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.

  • 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'. هذا الخطا الي يواجهين لديها

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...