Flutter 图像选择器没有检索图像?

Flutter 图像选择器没有检索图像?,flutter,Flutter,我正在使用包映像选择器。目的是在屏幕上附加来自库的图像。 我访问了图像库,但由于某种原因,在选择图像后没有在屏幕上检索图像 代码如下: File image; @override Widget build(BuildContext context) { return Scaffold( key: _scaffoldKey, body: NestedScrollView( headerSliverBuilder: (BuildConte

我正在使用包映像选择器。目的是在屏幕上附加来自库的图像。 我访问了图像库,但由于某种原因,在选择图像后没有在屏幕上检索图像

代码如下:

  File image;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      body: NestedScrollView(
        headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
          return <Widget>[
            AppBarTransparentComponent(centerTitle: true, title: 'New Message', showBack: true, backgroundColor: TheBaseColors.lightBlue),
          ];
        },
        body: Padding(
          padding: EdgeInsets.all(8.0),
          child: Column(
            mainAxisSize: MainAxisSize.max,
            // mainAxisAlignment: MainAxisAlignment.spaceBetween,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: EdgeInsets.all(8.0),
                child: TextFormField(
                  controller: _subjectController,
                  decoration: InputDecoration(
                    border: OutlineInputBorder(),
                  ),
                ),
              ),
              Expanded(
                child: Padding(
                  padding: EdgeInsets.all(8.0),
                  child: TextFormField(
                    controller: _bodyController,
                    maxLines: null,
                    expands: true,
                    textAlignVertical: TextAlignVertical.top,
                    decoration: InputDecoration(labelText: 'Body', border: OutlineInputBorder()),
                  ),
                ),
              ),
              Padding(
                padding: EdgeInsets.all(8.0),
                child: Wrap(
                  children: <Widget>[
                    Column(
                      children: [
                        Row(
                          mainAxisAlignment: MainAxisAlignment.end,
                          children: [
                            Container(
                              child: image != null
                                  ? ClipRRect(
                                borderRadius: BorderRadius.circular(50),
                                child: Image.file(
                                  image,
                                  width: 100,
                                  height: 100,
                                  fit: BoxFit.fitHeight,
                                ),
                              )
                                  : Container(
                                decoration: BoxDecoration(
                                    color: Colors.grey[200],
                                    borderRadius: BorderRadius.circular(50)),
                                width: 100,
                                height: 100,
                                child: Icon(
                                  Icons.camera_alt,
                                  color: Colors.grey[800],
                                ),
                              ),
                            ),
                            FlatButton(
                              onPressed: () =>
                              { imgFromGallery()
                              },
                              child: Row(
                                // Replace with a Row for horizontal icon + text
                                children: <Widget>[
                                  Text('Attach files'),
                                  IconButton(
                                    icon: Icon(Icons.attach_file),
                                    onPressed: () {
                                      imgFromGallery();
                                    },
                                  ),
                                ],
                              ),
                            ),
                            FlatButton(
                              onPressed: () => {},
                              color: TheBaseColors.lightGreen,
                              padding: EdgeInsets.all(10.0),
                              child: Text('Send'),
                            ),
                          ],
                        ),
                      ],
                    ),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }

  Future imgFromGallery() async {
    var image = await ImagePicker.pickImage(source: ImageSource.gallery, imageQuality: 25, maxWidth: 1920, maxHeight: 1080);

    setState(() {
      image = image;
    });
  }

}
文件图像;
@凌驾
小部件构建(构建上下文){
返回脚手架(
钥匙:_scaffoldKey,
正文:嵌套滚动视图(
headerSliverBuilder:(BuildContext上下文,boolInnerBoxIsCrolled){
返回[
AppBarTransparentComponent(中心标题:true,标题:“新邮件”,展示:true,背景颜色:BaseColors.浅蓝色),
];
},
主体:填充物(
填充:边缘设置。全部(8.0),
子:列(
mainAxisSize:mainAxisSize.max,
//mainAxisAlignment:mainAxisAlignment.spaceBetween,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
填充物(
填充:边缘设置。全部(8.0),
子项:TextFormField(
控制器:_subjectController,
装饰:输入装饰(
边框:OutlineInputBorder(),
),
),
),
扩大(
孩子:填充(
填充:边缘设置。全部(8.0),
子项:TextFormField(
控制器:_bodyController,
maxLines:null,
对,,
textAlignVertical:textAlignVertical.top,
装饰:输入装饰(labelText:'Body',边框:OutlineInputBorder()),
),
),
),
填充物(
填充:边缘设置。全部(8.0),
孩子:包裹(
儿童:[
纵队(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.end,
儿童:[
容器(
子:图像!=null
?ClipRRect(
边界半径:边界半径。圆形(50),
子:Image.file(
形象,,
宽度:100,
身高:100,
适合度:BoxFit.fit高度,
),
)
:容器(
装饰:盒子装饰(
颜色:颜色。灰色[200],
边界半径:边界半径。圆形(50)),
宽度:100,
身高:100,
子:图标(
Icons.camera\u alt,
颜色:颜色。灰色[800],
),
),
),
扁平按钮(
按下:()=>
{imgFromGallery()
},
孩子:排(
//替换为水平图标+文本的行
儿童:[
文本(“附加文件”),
图标按钮(
图标:图标(Icons.attach_文件),
已按下:(){
imgFromGallery();
},
),
],
),
),
扁平按钮(
按下:()=>{},
颜色:基色。浅绿色,
填充:所有边缘设置(10.0),
子项:文本('Send'),
),
],
),
],
),
],
),
),
],
),
),
),
);
}
未来的imgFromGallery()异步{
var image=等待ImagePicker.pickImage(来源:ImageSource.gallery,imageQuality:25,maxWidth:1920,maxHeight:1080);
设置状态(){
图像=图像;
});
}
}
如何使所选图像在屏幕上可见?我正在设置所选图像的状态,然后将其返回到容器中。我缺少什么?

文件图像;
  File image;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      body: NestedScrollView(
        headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
          return <Widget>[
            AppBarTransparentComponent(centerTitle: true, title: 'New Message', showBack: true, backgroundColor: TheBaseColors.lightBlue),
          ];
        },
        body: Padding(
          padding: EdgeInsets.all(8.0),
          child: Column(
            mainAxisSize: MainAxisSize.max,
            // mainAxisAlignment: MainAxisAlignment.spaceBetween,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Padding(
                padding: EdgeInsets.all(8.0),
                child: TextFormField(
                  controller: _subjectController,
                  decoration: InputDecoration(
                    border: OutlineInputBorder(),
                  ),
                ),
              ),
              Expanded(
                child: Padding(
                  padding: EdgeInsets.all(8.0),
                  child: TextFormField(
                    controller: _bodyController,
                    maxLines: null,
                    expands: true,
                    textAlignVertical: TextAlignVertical.top,
                    decoration: InputDecoration(labelText: 'Body', border: OutlineInputBorder()),
                  ),
                ),
              ),
              Padding(
                padding: EdgeInsets.all(8.0),
                child: Wrap(
                  children: <Widget>[
                    Column(
                      children: [
                        Row(
                          mainAxisAlignment: MainAxisAlignment.end,
                          children: [
                            Container(
                              child: image != null
                                  ? ClipRRect(
                                borderRadius: BorderRadius.circular(50),
                                child: Image.file(
                                  image,
                                  width: 100,
                                  height: 100,
                                  fit: BoxFit.fitHeight,
                                ),
                              )
                                  : Container(
                                decoration: BoxDecoration(
                                    color: Colors.grey[200],
                                    borderRadius: BorderRadius.circular(50)),
                                width: 100,
                                height: 100,
                                child: Icon(
                                  Icons.camera_alt,
                                  color: Colors.grey[800],
                                ),
                              ),
                            ),
                            FlatButton(
                              onPressed: () =>
                              { imgFromGallery()
                              },
                              child: Row(
                                // Replace with a Row for horizontal icon + text
                                children: <Widget>[
                                  Text('Attach files'),
                                  IconButton(
                                    icon: Icon(Icons.attach_file),
                                    onPressed: () {
                                      imgFromGallery();
                                    },
                                  ),
                                ],
                              ),
                            ),
                            FlatButton(
                              onPressed: () => {},
                              color: TheBaseColors.lightGreen,
                              padding: EdgeInsets.all(10.0),
                              child: Text('Send'),
                            ),
                          ],
                        ),
                      ],
                    ),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }

  Future imgFromGallery() async {
    var image = await ImagePicker.pickImage(source: ImageSource.gallery, imageQuality: 25, maxWidth: 1920, maxHeight: 1080);

    setState(() {
      this.image = image;
    });
  }

}
@凌驾 小部件构建(构建上下文){ 返回脚手架( 钥匙:_scaffoldKey, 正文:嵌套滚动视图( headerSliverBuilder:(BuildContext上下文,boolInnerBoxIsCrolled){ 返回[ AppBarTransparentComponent(中心标题:true,标题:“新邮件”,展示:true,背景颜色:BaseColors.浅蓝色), ]; }, 主体:填充物( 填充:边缘设置。全部(8.0), 子:列( mainAxisSize:mainAxisSize.max, //mainAxisAlignment:mainAxisAlignment.spaceBetween, crossAxisAlignment:crossAxisAlignment.center, 儿童:[ 填充物( 填充:边缘设置。全部(8.0), 子项:TextFormField( 控制器:_subjectController, 装饰:输入装饰( 边框:OutlineInputBorder(), ), ), ), 扩大( 孩子:填充( 填充:EdgeInset