在Flutter中将图像添加到ListTile-特定问题

时间:2020-11-11 11:03:32

标签: flutter dart

所以我有这个非常规的代码,必须使用它来使列表图块内部的容器具有使用ImagePicker选择的图像。这是代码段:

File _smallImage;

这是ImagePicker的功能:

 Future _getSmallImage() async {
PickedFile pickedFile = await picker.getImage(source: ImageSource.gallery);
setState(() {
  if (pickedFile != null) {
    _smallImage = File(_smallImage.path);
  } else {
    print('No image selected.');
  }
});

}

现在,这是令人困惑的地方,这是ListTile代码:

child: ListTile(
                  
                  trailing: Container(
                    height: 120.0,
                    width: 100.0,
                    //color: Colors.white,
                    decoration: BoxDecoration(
                      color: Colors.white,
                       FileImage(File(_smallImagepath)) : null
                      image: DecorationImage(
                        image: _smallImage == null
                            ? MemoryImage(kTransparentImage)
                            : FileImage(_smallImage),
                        fit: BoxFit.cover,
                         
                      ),
                    ),

                    child: IconButton(
                      
                      
                      icon: Icon(Icons.add),
                      file u path,
                     
                      onPressed: () => _getSmallImage(),
                    ),
                  ),

如您所见,ListTile中有一个IconButton(我必须这样做,因为列表图块还具有onPressed函数,这是小按钮和列表图块本身的唯一方法。按下)。它具有_getSmallImage()ImagePicker函数来获取图像。在那里,有DecorationImage用来拍摄选择的图片:

image: DecorationImage(
                        image: _smallImage == null
                            ? MemoryImage(kTransparentImage)
                            : FileImage(_smallImage),
                        fit: BoxFit.cover,

但是问题是,我收到了“ null调用”错误,但是我不确定是什么原因导致的,因为在null情况下我具有三进制:

The getter 'path' was called on null.

当我尝试从图库中选择图像时发生错误。我知道它有点长,但是实际上并没有那么多代码,我只是想尽我所能地解释这个问题。谢谢!

1 个答案:

答案 0 :(得分:0)

您必须使用 pickedFile.path 而不是 _smallImage

setState(() {
  if (pickedFile != null) {
    _smallImage = File(pickedFile.path); // Change this line.
  } else {
    print('No image selected.');
  }
});