Open file pubspec.yaml and declare lirary following:
dependencies:
flutter:
sdk: flutter
http: ^1.6.0
path_provider: ^2.1.6
path: ^1.9.1
flutter:
uses-material-design: true
assets:
- assets/images/
void _upload() async{
Uri uri = Uri.parse(urlController.text.trim());
var response = await http.get(uri);
if(response.statusCode == 200){
String ext = extension(uri.path);
String filename = Helper.randomString(32 - ext.length) + ext;
File f = File(join(Directory.current.path, "assets", "images", filename));
await f.writeAsBytes(response.bodyBytes);
setState(() {
imageUrl = filename;
});
}
}
class _UploadPageState extends State<UploadPage> {
String? imageUrl;
TextEditingController urlController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(widget.title)),
body: Center(
child: Column(
children: [
TextField(controller: urlController, decoration: InputDecoration(labelText: 'Url', hintText: 'Enter Url')),
ElevatedButton(onPressed: _upload, child: Icon(Icons.upload)),
if(imageUrl != null) Image.file(File('assets/images/$imageUrl'))
],
),
),
);
}