Skip to main content

Image picker post image Flutter 2024

Image picker post image Flutter 2024


import 'package:flutter/material.dart';

import 'package:image_picker/image_picker.dart';

import 'dart:io';

import 'package:http/http.dart' as http;


class ImageUploadScreen extends StatefulWidget {

  @override

  _ImageUploadScreenState createState() => _ImageUploadScreenState();

}


class _ImageUploadScreenState extends State<ImageUploadScreen> {

  File _image;


  final picker = ImagePicker();


  Future getImage() async {

    final pickedFile = await picker.getImage(source: ImageSource.gallery);


    setState(() {

      if (pickedFile != null) {

        _image = File(pickedFile.path);

      } else {

        print('No image selected.');

      }

    });

  }


  Future uploadImage() async {

    if (_image == null) return;


    // Change this URL to your server endpoint

    var url = 'YOUR_SERVER_ENDPOINT';


    // Encode image to base64

    List<int> imageBytes = _image.readAsBytesSync();

    String base64Image = base64Encode(imageBytes);


    // Send HTTP request

    var response = await http.post(url, body: {

      "image": base64Image,

    });


    // Handle response

    print('Response status: ${response.statusCode}');

    print('Response body: ${response.body}');

  }


  @override

  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(

        title: Text('Image Upload'),

      ),

      body: Center(

        child: _image == null

            ? Text('No image selected.')

            : Image.file(_image),

      ),

      floatingActionButton: Column(

        mainAxisAlignment: MainAxisAlignment.end,

        children: <Widget>[

          FloatingActionButton(

            onPressed: getImage,

            tooltip: 'Select Image',

            child: Icon(Icons.photo_library),

          ),

          SizedBox(height: 16),

          FloatingActionButton(

            onPressed: uploadImage,

            tooltip: 'Upload Image',

            child: Icon(Icons.file_upload),

          ),

        ],

      ),

    );

  }

}


void main() {

  runApp(MaterialApp(

    home: ImageUploadScreen(),

  ));

}


Comments