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

كيف أدمج أو أختصر هذا الكود flutter

Flutter Dev

السؤال

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

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

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

احتاج مساعده من الذي لديه خبره في الامر لختصار العملية او الكود هذا كود الصفحه كامل الان: قمت بوضع علامة // هنا ================================= على المواقع التي قمت بتكرارها للحصول على الكود هذا








void main() {
  runApp(
    MyApp(),

  );
}

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: UploadImageDemo(),
    );
  }
}
class UploadImageDemo extends StatefulWidget {
  UploadImageDemo() : super();

  final String title = "";

  @override
  UploadImageDemoState createState() => UploadImageDemoState();
}


class UploadImageDemoState extends State<UploadImageDemo> {

  final _formKey = GlobalKey<FormState>();

  static final String uploadEndPoint = 'https://******************.php';
  Future<File> file,files,filess;// هنا =================================
  String status = '';
  String base64Image,base64Images,base64Imagess;// هنا =================================
  File tmpFile,tmpFiles,tmpFiless;// هنا =================================
  String errMessage = 'Error_Uploading';
  showAlertDialog(BuildContext context) {
    AlertDialog alert = AlertDialog(
      content: new Row(
        children: [
          CircularProgressIndicator(),
          Container(
              margin: EdgeInsets.only(left: 5),
              child: Text("Addingpleasewait")),
        ],
      ),
    );
    showDialog(
      barrierDismissible: false,
      context: context,
      builder: (BuildContext context) {
        return alert;
      },
    );
    // Navigator.of(context, rootNavigator: true).pop();
  }





  showAlertDialogs(BuildContext context) {
    AlertDialog alert = AlertDialog(
      content: new Row(
        children: [
          CircularProgressIndicator(),
          Container(
              margin: EdgeInsets.only(left: 5),
              child: Text("Addingpleasewait")),
        ],
      ),
    );
    showDialog(
      barrierDismissible: false,
      context: context,
      builder: (BuildContext context) {
        return alert;
      },
    );
 
  }


// هنا =================================
  chooseImage() {
    setState(() {
      file = ImagePicker.pickImage(source: ImageSource.gallery);
    });
    setStatus('');
   
  }
  // هنا =================================
  chooseImages() {
    setState(() {
      files = ImagePicker.pickImage(source: ImageSource.gallery);
    });
    setStatus('');
   
  }
  // هنا =================================
  chooseImagess() {
    setState(() {
      filess = ImagePicker.pickImage(source: ImageSource.gallery);
    });
    setStatus('');
  
  }
  setStatus(String message) {
    setState(() {
      status = message;
    });
  }




  Future<void> showMyDialog() async {
    return showDialog<void>(
      context: context,
      barrierDismissible: false, // user must tap button!
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text('Attentions'),
          content: SingleChildScrollView(
            child: ListBody(
              children: <Widget>[
                Text('Allfieldsarerequired'),
                //   Text('Would you like to approve of this message?'),
              ],
            ),
          ),
          actions: <Widget>[
            FlatButton(
              child: Text('Closes'),
              onPressed: () {
                Navigator.of(context).pop();

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





  startUpload() {

    if (null == tmpFile) {
      setStatus(errMessage);
      return;
    }
    showAlertDialog(context);

    String NameImage = DateTime.now().millisecondsSinceEpoch.toString();// هنا =================================
    String NameImages = DateTime.now().microsecond.toString();// هنا =================================
    String NameImagess = DateTime.now().month.toString();// هنا =================================
    //=======================Date
    String DataOfToday;
    var date = new DateTime.now().toString();
    var dateParse = DateTime.parse(date);
    var formattedDate = "${dateParse.day}-${dateParse.month}-${dateParse.year}";
    setState(() {
      DataOfToday = formattedDate.toString();
    });

//=======================Date
    upload(NameImage,NameImages,NameImagess);// هنا =================================
  }

  upload(

      String NameImage,NameImages,NameImagess// هنا =================================


      ) {
    http.post(uploadEndPoint, body: {
      "image": base64Image,// هنا =================================
      "images": base64Images,// هنا =================================
      "imagess": base64Imagess,// هنا =================================
      "NameImage": NameImage,// هنا =================================
      "NameImages": NameImages,// هنا =================================
      "NameImagess": NameImagess,// هنا =================================

    }).then((result) {

      if (result.statusCode == 200) {
        _ShowDialog("added");
      } else {
        _ShowDialog("UpdateFailure");
      }
    }).catchError((error) {
      setStatus(error);
    });
  }








  Future<String> _ShowDialog(String msg) async {
    return showDialog<String>(
      context: context,
      barrierDismissible: false, // user must tap button!
      builder: (BuildContext context) {
        return new AlertDialog(
          title: new Text('Attentions'),
          content: new SingleChildScrollView(
            child: new ListBody(
              children: <Widget>[
                new Text(msg),
              ],
            ),
          ),
          actions: <Widget>[
            new FlatButton(
              child: new Text('Closes'),
              onPressed: () {
                // Navigator.pop(context);
                Navigator.of(context, rootNavigator: true).pop();

              },
            ),
          ],
        );
      },
    );
  }
// هنا =================================
  Widget showImage() {
    return FutureBuilder<File>(
      future: file,
      builder: (BuildContext context, AsyncSnapshot<File> snapshot) {
        if (snapshot.connectionState == ConnectionState.done &&
            null != snapshot.data) {
          tmpFile = snapshot.data;
          base64Image = base64Encode(snapshot.data.readAsBytesSync());
          return Flex(direction: Axis.horizontal, children: [
            Expanded(
              child: Card(
                child: SizedBox(
                  width: 400.0,
                  height: 300.0,
                  child: Image.file(snapshot.data, fit: BoxFit.cover,),
                ),
              ),
            ),
          ]);
        } else if (null != snapshot.error) {
          return const Text(
            'Error Picking Image',
            textAlign: TextAlign.center,
          );
        } else {
          return const Text(
            '',
            textAlign: TextAlign.center,
          );
        }
      },
    );
  }
// هنا =================================
  Widget showImages() {
    return FutureBuilder<File>(
      future: files,
      builder: (BuildContext context, AsyncSnapshot<File> snapshot) {
        if (snapshot.connectionState == ConnectionState.done &&
            null != snapshot.data) {
          tmpFiles = snapshot.data;
          base64Images = base64Encode(snapshot.data.readAsBytesSync());
          return Flex(direction: Axis.horizontal, children: [
            Expanded(
              child: Card(
                child: SizedBox(
                  width: 400.0,
                  height: 300.0,
                  child: Image.file(snapshot.data, fit: BoxFit.cover,),

                ),
              ),
            ),
          ]);
        } else if (null != snapshot.error) {
          return const Text(
            'Error Picking Image',
            textAlign: TextAlign.center,
          );
        } else {
          return const Text(
            '',
            textAlign: TextAlign.center,
          );
        }
      },
    );
  }
  // هنا =================================
  Widget showImagess() {
    return FutureBuilder<File>(
      future: filess,
      builder: (BuildContext context, AsyncSnapshot<File> snapshot) {
        if (snapshot.connectionState == ConnectionState.done &&
            null != snapshot.data) {
          tmpFiless = snapshot.data;
          base64Imagess = base64Encode(snapshot.data.readAsBytesSync());
          return Flex(direction: Axis.horizontal, children: [
            Expanded(
              child: Card(
                child: SizedBox(
                  width: 400.0,
                  height: 300.0,
                  child: Image.file(snapshot.data, fit: BoxFit.cover,),

                ),
              ),
            ),
          ]);
        } else if (null != snapshot.error) {
          return const Text(
            'Error Picking Image',
            textAlign: TextAlign.center,
          );
        } else {
          return const Text(
            '',
            textAlign: TextAlign.center,
          );
        }
      },
    );
  }
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: AppBar(
        title: Text("Add"),

        actions: <Widget>[

          IconButton(
            icon: Icon(
              Icons.done,
              color: Colors.white,
            ),
            onPressed: () {
              if (_formKey.currentState.validate()) {

                startUpload();

              }

            },


          )


        ],
      ),
      body: Form(
        key: _formKey,
        child: SingleChildScrollView(
          child: new Center(




            child: Column(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: <Widget>[

                Container(
                  child: Column(
                      crossAxisAlignment: CrossAxisAlignment.stretch,
                      children: <Widget>[
                        Card(
                          child: Column(
                            children: [
                              showImage(),
                              showImages(),
                              showImagess(),
                            ],
                          ),
                        ),
                        Card(
                          elevation: 2,
                          child: Row(
                            crossAxisAlignment: CrossAxisAlignment.center,
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: <Widget>[
                              Container(
                                child: IconButton(
                                  icon: Icon(
                                    Icons.camera_alt,
                                    color: Colors.black,
                                    size: 38,
                                  ),
                                  onPressed: () {
                                    chooseImage();
                                  },
                                ),
                              ),
                              Container(
                                child: IconButton(
                                  icon: Icon(
                                    Icons.camera_alt,
                                    color: Colors.black,
                                    size: 38,
                                  ),
                                  onPressed: () {
                                    chooseImages();
                                  },
                                ),
                              ),
                            ],
                          ),
                        ),






                      ]
                  ),
                ) ,




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

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

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

Recommended Posts

  • 1

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

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

  • 0
بتاريخ 1 ساعة قال Nuhla Almasri:

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

اهلا بك اخي الكريم نعم انا بعد بحث طويل قمت بعمل list  لصور مع تغير بسيط على الكود وقد نجح الامر 

كل الشكر لك اخي الكريم 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...