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

السؤال

نشر (معدل)

السلام عليكم 

أنا مبتدأ في مجال البرمجة و أشتغل على إنشاء تطبيق جوال 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...