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
Post a Comment