Flutter save a network image to local directory

后端 未结 10 647
情歌与酒
情歌与酒 2020-12-24 08:52

In Flutter how to save an image from network to the local directory.

I am new to encoding and decoding images. Can anyone point me in the right direction?

10条回答
  •  失恋的感觉
    2020-12-24 09:34

    Follow this url flutter save network image.

    Code Snippet

    import 'package:flutter/material.dart';
    import 'dart:async';
    import 'dart:io';
    import 'package:path_provider/path_provider.dart';
    import 'package:http/http.dart' as http;
    
    class NetworkToLocalImage extends StatefulWidget{
     String url;
    
     NetworkToLocalImage(this.url);
    
     @override
     _LoadImages createState() => new _LoadImages(url);
     }
    
    class _LoadImages extends State{
    
     String url;
     String filename;
     var dataBytes;
    
     _LoadImages(this.url){
     filename = Uri.parse(url).pathSegments.last;
     downloadImage().then((bytes){
      setState(() {
        dataBytes = bytes;
      });
    });
    }
    
    Future downloadImage() async {
    String dir = (await getApplicationDocumentsDirectory()).path;
    File file = new File('$dir/$filename');
    
    if (file.existsSync()) {
      print('file already exist');
      var image = await file.readAsBytes();
      return image;
    } else {
      print('file not found downloading from server');
      var request = await http.get(url,);
      var bytes = await request.bodyBytes;//close();
      await file.writeAsBytes(bytes);
      print(file.path);
      return bytes;
    }
    }
    
     @override
     Widget build(BuildContext context) {
     // TODO: implement build
     if(dataBytes!=null)
     return new Image.memory(dataBytes);
     else return new CircularProgressIndicator();
    }
    }
    

提交回复
热议问题