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

The argument type 'String' can't be assigned to the parameter type 'FlowerdataImage'.

السؤال

نشر

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

تحيه طيبه للجميع

قمت بعمل List View  في flutter

لعرض مجموعة من الصور التي تكون متواجده مسابقا على قاعدة البيانات بشكل التالي:

device-2021-05-22-165826.thumb.png.4c8f1ebdfa7b7b2dab96d62b62306d9f.png

عرض الصور شغال بشكل طبيعي لا توجد مشكله في جلب الصور من قاعدة البيانات . ولكن المشكله في جلب الصور من الجهاز في الكود التالي:

                      onTap: () async {
            PickedFile pickedFile = await picker.getImage(source: ImageSource.gallery, imageQuality: 50);
                                                                        setState(() {
                                                                          if (pickedFile != null) {
                                                                            filteredUsers.add(pickedFile.path);
                                                                          }
                                                                        });

                                                                      }

هنا احاول ان اقوم بتعبئة listview من الجهاز ولكن احصل على الخطاء التالي:

The argument type 'String' can't be assigned to the parameter type 'FlowerdataImage'.

 ما احاول فعله هو مشاهدة الصور التي تاتي من قاعدة البيانات واضافة صور لها من الجهاز في القائمة بدون عمل حفظ او ما شابه فقط اضافتها في القائمة 

 

وهذا الكود كامل المستعمل:


class _update extends State<UpdateItem> {
  @override
  void initState() {
    super.initState();

    GetImageOfTopic().then((value) {
      setState(() {
        users.addAll(value);
        filteredUsers = users;
      });
    });
  }
  List<FlowerdataImage> users = List();
  List<FlowerdataImage> filteredUsers = List();
  List<String> photoPaths = [];
  final picker = ImagePicker();

  String apiURL;
  Future<List<FlowerdataImage>> GetImage() async {
    apiURL = '*****************.php';
    var response = await http.post(Uri.parse(apiURL));
    if (response.statusCode == 200) {
      final items = json.decode(response.body).cast<Map<String, dynamic>>();
      List<FlowerdataImage> listOfFruits = items.map<FlowerdataImage>((json) {
        return FlowerdataImage.fromJson(json);
      }).toList();

      return listOfFruits;

      throw Exception('Failed to load data from Server.');
    }
  }

  @override
  Widget build(BuildContext context) {


    return new Scaffold(

      body: Form(

          child: new Center(
            child: ListView(
                    children: <Widget>[
                      Card(
                        child: new Column(
                          children: <Widget>[
                            Container(

                                  child: Center(
                                    child: Column(
                                      children: <Widget>[


                                     SingleChildScrollView(
                                            child: SizedBox(
                                              child: Column(

                                                children: <Widget>[
                                                  Padding(
                                                    padding:
                                                    EdgeInsets.only(right: 8.0, top: 8.0, ),
                                                    child: SizedBox(
                                                      height: 140,
                                                      child: Row(
                                                        children: [
                                                          Expanded(
                                                            child: Container(

                                                              child: ListView.builder(
                                                                itemCount: filteredUsers.length,
                                                                scrollDirection: Axis.horizontal,
                                                                itemBuilder: (BuildContextcontext, int index) {
                                                                  return InkWell(
                                                                    child: Padding(
                                                                        padding: EdgeInsets.only(top: 8.0, bottom: 8.0, left: 8.0, right: 8.0),
                                                                        child:
                                                                        Container(
                                                                            height: 140, width: 140,
                                                                            child:
                                                                            ClipRRect(
                                                                              borderRadius:
                                                                              BorderRadius.circular(8),
                                                                              child:
                                                                              AspectRatio(
                                                                                aspectRatio:
                                                                                1.2,
                                                                                child:
                                                                               Image.network(
                                                                                      filteredUsers[index].ImageURL.toString(),
                                                                                      width: double.infinity,
                                                                                      height: 400,
                                                                                      fit: BoxFit.cover,
                                                                                    ),

                                                                              ),
                                                                            ))),

                                                                  );
                                                                },
                                                              ),
                                                            ),
                                                          ),
                                                          Padding(
                                                            padding:
                                                            const EdgeInsets.only(left: 10, right: 10),
                                                            child: Container(
                                                                width: 50,
                                                                height: MediaQuery.of(
                                                                    context)
                                                                    .size
                                                                    .height,
                                                                decoration:
                                                                BoxDecoration(
                                                                  color:
                                                                  Theme.of(context)
                                                                      .accentColor,
                                                                  borderRadius:
                                                                  BorderRadius
                                                                      .circular(8),
                                                                ),
                                                                child: Material(
                                                                  color: CustomColors.Background,


                                                                  borderRadius:
                                                                  BorderRadius
                                                                      .circular(8),
                                                                  child: InkWell(
                                                                      borderRadius:
                                                                      BorderRadius
                                                                          .circular(
                                                                          8),
                                                                      child: Icon(
                                                                        Icons.add_a_photo,
                                                                        color: Theme.of(context).floatingActionButtonTheme.foregroundColor,
                                                                      ),
                                                                      onTap: () async {
            PickedFile pickedFile = await picker.getImage(source: ImageSource.gallery, imageQuality: 50);
                                                                        setState(() {
                                                                          if (pickedFile != null) {
                                                                            filteredUsers.add(pickedFile.path);
                                                                          }
                                                                        });

                                                                      }),
                                                                )),
                                                          )
                                                        ],
                                                      ),
                                                    ),
                                                  ),

                                                ],
                                              ),
                                            ),
                                          ),




                                      ],
                                    ),
                                  ),
                                ),





                          ],
                        ),
                      ),



                    ],
                  ),
          )),
    );
  }
}

 

 

class FlowerdataImage {
  int id;

  String ImageURL;

  FlowerdataImage({
    this.id,

    this.ImageURL,

  });

  factory FlowerdataImage.fromJson(Map<String, dynamic> json) {
    return FlowerdataImage(
      id: json['id'],

      ImageURL: json['image'].toString(),

    );
  }
}

 

Recommended Posts

  • 1
نشر

لاحظ أنك تقوم بإضافة نص إلى List FlowerdataImage لذلك هل يمكنك تغيير 

List<FlowerdataImage> filteredUsers = List();

إلى 

List<FlowerdataImage> filteredUsers = [];

أيضا يمكنك تعريف متغير من نوع File 

File _image;

ومن ثم إضافة المسار إلى هذا المتغير 

_image = File(pickedFile.path);

وعند الأستداعاء يمكنك استخدام 

Image.file(_image)

هل ممكن تشرح لي هذا 

اقتباس

 ما احاول فعله هو مشاهدة الصور التي تاتي من قاعدة البيانات واضافة صور لها من الجهاز في القائمة بدون عمل حفظ او ما شابه فقط اضافتها في القائمة 

 

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

@بلال زيادة

مرحبا اخي بلال

ما اقصده انني الان في وقت تشغيل التطبيق انا احصل على الصور من قاعدة البيانات ولكني احاول من خلال الزر الذي اضافته ان ادرج صور اضافيه في ListView ليشاهدها المستخدم وحتى استطيع لاحقا حفظها في قاعدة البيانات من خلال ListView 

تمام, هل ترفق لي ملفات المشروع كاملاً إذا لم ينجح الحل ؟ 

  • 0
نشر

@بلال زيادة

مرحبا اخي بلال

ما اقصده انني الان في وقت تشغيل التطبيق انا احصل على الصور من قاعدة البيانات ولكني احاول من خلال الزر الذي اضافته ان ادرج صور اضافيه في ListView ليشاهدها المستخدم وحتى استطيع لاحقا حفظها في قاعدة البيانات من خلال ListView 

  • 0
نشر
بتاريخ منذ ساعة مضت قال بلال زيادة:

تمام, هل ترفق لي ملفات المشروع كاملاً إذا لم ينجح الحل ؟ 

مع الاسف لم ينجح الامر اخي نفس المشكله

المشكله ان المشروع كامل سيحتاج الى فصل لمشاركته

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...