Flutter

Flutter Upload from Url

Import Library

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

Declare assets

flutter:
  uses-material-design: true
  assets:
    - assets/images/

Declare method upload

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;
      });
    }
}

Declare _UploadPageState

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'))
         ],
        ),
      ),
    );
}