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

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

Flutter Dev

السؤال

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

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

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

  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.

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

  • 1

مرحبا مروان . 

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

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

 

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

 

شكراً لك 

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

  • 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...