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

حل مشكلة تحويل نوع البيانات في تطبيق Flutter عند إضافة عنصر إلى سلة الشراء

Wajdi Rebei

السؤال

السلام عليكم 

أنا مبتدأ في مجال البرمجة و أشتغل على إنشاء تطبيق جوال ANDROID APP من خلال برنامج FLUTTER  و لغة DART

وصلت لمرحلة إنشاء صفحة إقتناء المشتريات items  ووضعها في سلة الشراء PANIER(BASKET).

للأسف واجهتني مشكلة تتمثل كالتالي :

E/flutter ( 4746): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'int' is not a subtype of type 'String?' in type cast
كل ما أريد إضافة قطعة (buy items) أي عندما أضغط على + / - على سبيل المثال لزيادة أو إنقاص القطع   يظهر هذا الخطأ .

ممكن شخص لديه خبرة أن يساعدني في حل هذا المشكل . مع الشكر 

بارك الله فيكم !

BACKEND : PHP MYSQL

 

import 'package:dadou/controler/itemsdetailscontroller.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

class Itemsdetails extends StatelessWidget {
  const Itemsdetails({Key? key,}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    ItemsdetailsControllerImp controller=Get.put(ItemsdetailsControllerImp());
    return Scaffold(
      body:Column(children: [
        SizedBox(height: 80,),
        //Text("${controller.itemsmodel}"),
        Card(child: Text(
            //"${controller.itemsModel!.itemsId} "
           " ${controller.itemsdisc}, \n \n ${controller.itemsprice}dt"

          ),),
        SizedBox(height: 10,),
        Center(child: TextButton(onPressed: (){ Get.toNamed("/Panier");}, child: Text("BUY")),),
        SizedBox(height: 10,),

        Column(children: [
          IconButton(onPressed: (){controller.paniercontroller.add(
            //  controller.itemsModel!.itemsId.toString()
              controller.itemsId.toString()
          );}
           , icon:Icon(Icons.add)),
          Text("1"),
          IconButton(onPressed:(){}, icon:Icon(Icons.minimize))
        ],)


      ],
      ),



    );}}

 

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

المشكلة تحدث عندما تحاول تحويل قيمة من نوع int إلى نوع String في السطر التالي:

controller.itemsId.toString()

ويتوقع البرنامج أن يكون itemsId من نوع String  وليس int.

لذلك عليك بتحويل itemsId إلى String قبل تمريره إلى paniercontroller، وتستطيع استخدام الدالة toString() لتحقيق ذلك.

وهناك عدة طرق لفعل ذلك، ومنها:

controller.paniercontroller.add(controller.itemsId.toString());

من المهم أيضًا التحقق مما إذا كانت القيمة controller.itemsId صحيحة وغير فارغة، فقم بالتحقق من صحة القيمة قبل تحويلها إلى سلسلة نصية باستخدام شرط مثل هذا:

IconButton(
  onPressed: () {
    if (controller.itemsId != null) {
      controller.paniercontroller.add(
        controller.itemsId.toString()
      );
    }
  },
  icon: Icon(Icons.add)
),

 

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

  • 1

يبدو أن المشكلة تتمثل في محاولة تحويل قيمة من نوع `int` إلى نوع `String`، مما يؤدي إلى رفع خطأ يفيد بأن النوع `int` ليس فرعًا من النوع `String`.

حيث تظهر الرسالة الخطأ التالية:

type 'int' is not a subtype of type 'String?' in type cast

لحل هذه المشكلة، يمكنك تحويل قيمة `int` إلى `String` باستخدام الدالة `toString()`، ولكن يجب التأكد من أن القيمة ليست `null` قبل تحويلها. يمكنك استخدام الرمز `?` لإضافة فحص على القيمة قبل تحويلها.

يمكنك تغيير الكود التالي:

controller.paniercontroller.add(controller.itemsId.toString());

ليصبح هكذا:

controller.paniercontroller.add(controller.itemsId?.toString() ?? "");

وبهذا يتم التحقق من أن القيمة `controller.itemsId` ليست `null` قبل تحويلها إلى `String` باستخدام `toString()`، وإذا كانت `controller.itemsId` هي `null`، فسيتم تمرير سلسلة فارغة `""` بدلاً من القيمة `null` إلى `paniercontroller.add()`.

وبهذا يجب حل المشكلة.

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

  • 1

الخطأ الذي تواجهه يحدث بسبب محاولة تحويل قيمة من نوع "int" إلى نوع "String" في جزء من الشفرة. لحل هذه المشكلة، يمكنك اتباع الخطوات التالية:

  • تحقق من نوع البيانات: تأكد من أن قيمة التي تريد تحويلها إلى نوع "String" هي بالفعل من النوع الصحيح. تحقق من الأنواع المستخدمة في المتغيرات والمعالجة التي تقوم بها.
  • استخدام وظيفة toString(): في السطر الذي يظهر الخطأ، استخدم وظيفة toString() لتحويل القيمة إلى سلسلة نصية قبل عرضها. على سبيل المثال:

    controller.itemsId.toString()
  • التحقق من القيم الفارغة: تأكد من أن قيمة "itemsId" معرفة وليست فارغة. إذا كانت القيمة قد تم تعيينها بصفة افتراضية كـ null، فتأكد من التعامل مع حالة القيمة الفارغة بشكل صحيح.

  • مراجعة الطبقة المسؤولة عن التحكم في بيانات المشتريات (ItemsdetailsControllerImp): تحقق من المنطق المستخدم في هذه الطبقة وتأكد من أنه يتوافق مع أنواع البيانات المستخدمة وكذلك العمليات التي تقوم بها.

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...