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

السؤال

نشر

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

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

https://pub.dev/packages/wechat_assets_picker

من خلالها اقوم باضافة المزيد من الصور بجانب الصور التي احصل عليها من قاعدة البيانات الى نفس listview  السابقة.

المشكله الان لما اذهب الى اختيار الصور واختار صور عدد (2) او (3) على سبيل المثال من الصور على الهاتف بعد الضغط على ادراج انا احصل على صوره واحده فقط وهيا اول صوره تم تحديدها من اصل (2) التي تم اختيارهم او (3) ولو رجعت لختيار مجموعة مختلفه من الصور رح اجد ان الصور تم تحديدها فعلا مسبقاً ولكن لم يتم سحبها الى listview ولو قمت بضغط على ادراج من جديد سوف يتم استكمال العملية وادراج الصوره التاليه التي سبق وتم تحديدها سابقاً.

الكود المستعمل كالتالي كامل:

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:wechat_assets_picker/wechat_assets_picker.dart';



void main() {
  runApp(
    MyApp(),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: UpdateItem(),
    );
  }
}

class UpdateItem extends StatefulWidget {

  @override
  _update_profiletttState createState() => new _update_profiletttState();
}

class _update_profiletttState extends State<UpdateItem> {

  @override
  void initState() {
    super.initState();
    init();
  }

  void init() {

    GetImage().then((value) {
      setState(() {
        users.addAll(value);
        filteredUsers = users;

      });
    });
  }

  List<DataImage> users = [];
  List<DataImage> filteredUsers = [];



  final _formKeys = GlobalKey<FormState>();


 var  imagesCounter = 0;

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

  }

  List<AssetEntity> assets = <AssetEntity>[];

  @override
  Widget build(BuildContext context) {


    return  MaterialApp(
      home: Scaffold(

        body: Form(
            key: _formKeys,
            child:  Center(
              child:   ListView(
                children: <Widget>[

                  Card(
                    child: new Column(
                      children: <Widget>[
                        Container(
                          child: Center(
                            child: Column(
                              children: <Widget>[
                                Padding(
                                  padding: EdgeInsets.all(0),
                                  child: SingleChildScrollView(
                                    child: SizedBox(
                                      child: Column(
                                        //  mainAxisAlignment: MainAxisAlignment.start,
                                        //   crossAxisAlignment: CrossAxisAlignment.start,
                                        children: <Widget>[

                                          Column(
                                            children: <Widget>[
                                              AnimatedContainer(
                                                duration: kThemeAnimationDuration,
                                                curve: Curves.easeInOut,
                                                width: MediaQuery.of(context).size.width,
                                                height: filteredUsers.isNotEmpty ? 100.0 : 0.0,
                                                child: ListView.builder(
                                                    physics:  BouncingScrollPhysics(),

                                                    scrollDirection: Axis.horizontal,
                                                    itemCount: filteredUsers.length + 1  ,
                                                    itemBuilder: (BuildContext context, int index) {

                                                      if (index < filteredUsers.length) {
                                                        return Container(
                                                          margin: const EdgeInsets.symmetric(
                                                              horizontal: 0.5, vertical: 6.0),
                                                          child: AspectRatio(
                                                            aspectRatio: 1.0,
                                                            child: Stack(
                                                              children: <Widget>[

                                                                filteredUsers[index].isLocal ?


                                                                Image(
                                                                  image: AssetEntityImageProvider(
                                                                    assets.elementAt(index-imagesCounter) ,
                                                                    isOriginal: false,
                                                                  ),
                                                                  fit: BoxFit.cover,
                                                                )


                                                                    : Image.network(
                                                                  filteredUsers[index].ImageURL.toString(),
                                                                  width: double.infinity,
                                                                  height: 400,
                                                                  fit: BoxFit.cover,
                                                                ),




                                                              ],

                                                            ),
                                                          ),
                                                        );
                                                      }
                                                      else {

                                                        return
                                                          IconButton(
                                                            icon: Icon(Icons.add,size: 50,),
                                                            onPressed: ()  async {

                                                              final List<AssetEntity> result = await AssetPicker.pickAssets(context,
                                                                 // maxAssets: 4,
                                                                  pathThumbSize: 84,
                                                                  gridCount: 4,
                                                                  selectedAssets: assets,
                                                                  maxAssets: 4 - imagesCounter,
                                                                  //we use this for languge
                                                                  textDelegate: EnglishTextDelegate());

                                                              if (result != null) {

                                                                setState(() {

                                                                  assets = List<AssetEntity>.from(result);

                                                                  filteredUsers.add(DataImage( isLocal: true));


                                                                });
                                                              }



                                                            },
                                                          );

                                                      }

                                                    }

                                                  //itemBuilder: assetItemBuilder,
                                                ),
                                              )

                                            ],
                                          ),

                                        ],
                                      ),
                                    ),
                                  ),
                                ),
                              ],
                            ),
                          ),
                        ),
                        /*     Card(
                                child: showImage(),
                              ),*/

                      ],
                    ),
                  ),


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



}
class DataImage {

  bool isLocal;
  String ImageURL;


  DataImage(
      { this.ImageURL, this.isLocal = false});

  factory DataImage.fromJson(Map<String, dynamic> json) {
    return DataImage(

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

    );
  }

  Map<String, dynamic> toJson() => {

    'ImageURL': ImageURL,
    'isLocal': isLocal,

  };


}

ياليت اذا احد لديه فكره عن سبب المشكله وكيفية حلها يفيدنا بارك الله فيكم

Recommended Posts

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

ماذا تقصد بعملية الطرح هذه.

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

maxAssets: 4 - imagesCounter,

تم التعديل في بواسطة مروان مروان3
  • 0
نشر
بتاريخ 4 ساعات قال مروان مروان3:

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

maxAssets: 4 - imagesCounter,

هل يمكنك كتابة الخطوات التي تتبعها، اي كيفية الربط بين الإضافة و التعديل وهكذا..

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...