How to load images with image.file

后端 未结 11 2160
星月不相逢
星月不相逢 2021-01-01 10:41

I can\'t seem to simply load an image from the hard drive to the screen. Image.network seems straightforward. But I can\'t figure out how to use Image or Image.file. Imag

11条回答
  •  青春惊慌失措
    2021-01-01 11:13

    Here is an example of the use of Image.file. This would not be the recommended way, but the use case could be if you downloaded the image in your app via http and then wanted to display the image (e.g. the image is not stored in assets during install).

    In your pubspec.yaml, add :

    path_provider: ^0.2.2
    

    Code :

    import 'dart:io';
    import 'dart:async';
    import 'package:path_provider/path_provider.dart';
    import 'package:flutter/material.dart';
    
    void main() => runApp(new MyApp());
    
    class MyApp extends StatelessWidget {
    
      Future _getLocalFile(String filename) async {
        String dir = (await getApplicationDocumentsDirectory()).path;
        File f = new File('$dir/$filename');
        return f;
      }
    
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
            title: 'Flutter Demo',
            home: new FutureBuilder(
                future: _getLocalFile("flutter_assets/image.png"),
                builder: (BuildContext context, AsyncSnapshot snapshot) {
                  return snapshot.data != null ? new Image.file(snapshot.data) : new Container();
                })
        );
      }
    }
    

    To simulate downloading the image you can push the image using adb :

    adb push image.png /data/data/com.example.imagetest/app_flutter/flutter_assets/
    

提交回复
热议问题