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