From d2ca95c559fb2f7d626139dbdc8730109edb4883 Mon Sep 17 00:00:00 2001 From: Ayush Kejariwal Date: Mon, 23 Nov 2020 15:57:20 +0530 Subject: [PATCH] added image picker in add event through 0x0.st --- iter_aio/lib/pages/events/events_form.dart | 65 +++++++++++++++++++--- iter_aio/pubspec.lock | 7 +++ iter_aio/pubspec.yaml | 1 + 3 files changed, 65 insertions(+), 8 deletions(-) diff --git a/iter_aio/lib/pages/events/events_form.dart b/iter_aio/lib/pages/events/events_form.dart index df11a4d..b100976 100644 --- a/iter_aio/lib/pages/events/events_form.dart +++ b/iter_aio/lib/pages/events/events_form.dart @@ -1,8 +1,10 @@ +import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter_form_builder/flutter_form_builder.dart'; import 'package:intl/intl.dart'; import 'package:iteraio/Utilities/Theme.dart'; import 'package:iteraio/Utilities/global_var.dart'; +import 'dart:io'; class EventsForm extends StatefulWidget { @override @@ -43,9 +45,11 @@ class _EventsFormState extends State { child: RaisedButton.icon( icon: Icon(Icons.publish), label: Text('Publish'), - onPressed: () { + onPressed: () async { if (_fbKey.currentState.saveAndValidate()) { var x = _fbKey.currentState.value; + if (x['imgUrl'] != null) + x['imgUrl'] = await uploadImg(x['imgUrl'][0]); print(x); try { events.add(x); @@ -88,7 +92,7 @@ class _EventsFormState extends State { return FormBuilder( key: _fbKey, initialValue: { - 'eventDate': DateTime.now(), + // 'eventDate': DateTime.now(), 'time': DateTime.now(), }, child: SingleChildScrollView( @@ -134,14 +138,25 @@ class _EventsFormState extends State { decoration: InputDecoration(labelText: "Detailed Description"), autocorrect: true, ), - FormBuilderTextField( + + /// add Image then upload it and get link + FormBuilderImagePicker( attribute: 'imgUrl', - decoration: InputDecoration(labelText: "Image Url (Optional)"), - validators: [ - FormBuilderValidators.url(), - ], - autocorrect: true, + decoration: const InputDecoration( + labelText: 'Images', + ), + maxImages: 1, + iconColor: Colors.grey, + // onSaved: uploadImg, ), + // FormBuilderTextField( + // attribute: 'imgUrl', + // decoration: InputDecoration(labelText: "Image Url (Optional)"), + // validators: [ + // FormBuilderValidators.url(), + // ], + // autocorrect: true, + // ), FormBuilderTextField( attribute: 'link', decoration: @@ -287,4 +302,38 @@ class _EventsFormState extends State { ), ); } + + uploadImg(value) async { + File img = value; + var url = 'https://0x0.st'; + var resp; + var formData = FormData.fromMap({ + "file": await MultipartFile.fromFile(img.path, filename: 'my'), + }); + resp = await Dio().post( + url, + data: formData, + onSendProgress: (int sent, int total) { + // showDialog( + // context: context, + // barrierDismissible: false, + // builder: (BuildContext context) => AlertDialog( + // title: Text('Uploading'), + // content: Text( + // '$sent/$total(${(sent / total).ceil() * 100}%)'), + // actions: [ + // if (sent == total) + // FlatButton( + // child: Text('Okay'), + // onPressed: () => Navigator.pop(context), + // ) + // ], + // ), + // ); + print("$sent $total"); + }, + ); + print(resp); + return resp.toString().trim(); + } } diff --git a/iter_aio/pubspec.lock b/iter_aio/pubspec.lock index afe96ff..d98ea9c 100644 --- a/iter_aio/pubspec.lock +++ b/iter_aio/pubspec.lock @@ -148,6 +148,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.0" + dio: + dependency: "direct main" + description: + name: dio + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.10" draggable_scrollbar: dependency: "direct main" description: diff --git a/iter_aio/pubspec.yaml b/iter_aio/pubspec.yaml index babc657..dd39a47 100644 --- a/iter_aio/pubspec.yaml +++ b/iter_aio/pubspec.yaml @@ -31,6 +31,7 @@ dependencies: fluttertoast: ^4.0.0 html: null http: ^0.12.2 + dio: ^3.0.10 splashscreen: null line_awesome_icons: ^1.0.4+2 draggable_scrollbar: ^0.0.4