flutter类型的文件不是'imageprovider dynamic'类型的子类型

时间:2019-01-20 11:22:41

标签: flutter

当我从图像选择器中选择图像时,出现此错误 类型文件不是'imageprovider动态'类型的子类型。

我尝试使用堆栈,即使相同的错误
  class _ProfileState extends State<Profile> {
         @override
          Widget build(BuildContext context) {
            return Scaffold(
              appBar: AppBar(
                automaticallyImplyLeading: true,
                title: Text('Profile'),
                centerTitle: true,
                elevation: 10.0,
              ),
              body: Container(
                decoration: BoxDecoration(
                    image: DecorationImage(
                        image: _imageFile == null
                            ? AssetImage('assets/tom.jpg')
                            : _imageFile,
                        fit: BoxFit.cover)),
                child: ListView(
                  children: <Widget>[
                    Container(
                      height: MediaQuery.of(context).size.height / 1.4,
                    ),
                    Card(
                      color: Colors.grey.withOpacity(0.1),
                      shape: RoundedRectangleBorder(
                          borderRadius: BorderRadius.circular(10.0)),
                      child: cameraAndEdit(context),
                    ),
                    Container(
                      width: MediaQuery.of(context).size.width,
                      color: Colors.white70,
                      child: Padding(
                        padding: const EdgeInsets.all(8.0),
                        child: Column(
                          children: <Widget>[
                            box(),
                            line(color: Colors.deepPurple, lineHeight: 5.0),
                            // nameDesignation(),
                            infoRow(
                                infoIcon: Icon(Icons.person),
                                infoText: 'Name',
                                detail: 'Tom Cruise',
                                textColor: Colors.black),
                            Divider(),
                            infoRow(
                                infoIcon: Icon(Icons.location_on),
                                infoText: 'Address',
                                detail: '#9/1 1st main Circle street Bangalore 560-096',
                                textColor: Colors.black),
                            Divider(),
                            infoRow(
                                infoIcon: Icon(Icons.gesture),
                                infoText: 'Age',
                                detail: '25',
                                textColor: Colors.black),
                            Divider(),
                            infoRow(
                                infoIcon: Icon(Icons.phone),
                                infoText: 'Phone',
                                detail: '+91 9148046273',
                                textColor: Colors.black),
                            line(color: Colors.deepPurple, lineHeight: 5.0),
                            box(),
                          ],
                        ),
                      ),
                    ),
                  ],
                ),
              ),
            );
          }

5 个答案:

答案 0 :(得分:4)

   image: _imageFile == null
        ? AssetImage('assets/tom.jpg')
        : _imageFile,

应该是

   image: _imageFile == null
        ? AssetImage('assets/tom.jpg')
        : FileImage(_imageFile),

答案 1 :(得分:3)

如果您使用的是image_picker,请尝试下面的代码。

import 'package:image_picker/image_picker.dart';

PickedFile _imageFile;

image: _imageFile == null
     ? AssetsImage("sample_image_path")
     : FileImage(File(_imageFile.path)),

答案 2 :(得分:1)

如果要从网络和BoxDecoration内部加载图像,则需要使用NewtworkImage('...')而不是Image.network('...')

示例:

decoration: BoxDecoration(
      image: DecorationImage(image: NetworkImage("imageUrl"),
      fit: BoxFit.cover)
    ),

答案 3 :(得分:0)

对我来说这是有效的:

<块引用>

Image.Asset

替换 AssetImage
df

应该

image == null
      ? AssetImage('assets/myimage.jpg')
      : Image.file(_image),

答案 4 :(得分:-2)

要显示来自互联网的图像,请使用 NetworkImage("imageUrl") 对于本地图像使用 FileImage(_imageFile)