这是代码,我使用 image_picker 来显示相机或画廊图像。在主函数中另外使用 .dart 文件,我在 RunApp() 下运行此代码。
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:modal_progress_hud/modal_progress_hud.dart';
class Display_Image extends StatefulWidget {
@override
_Display_ImageState createState() => _Display_ImageState();
}
class _Display_ImageState extends State<Display_Image> {
File _image;
void ImageGrab(int i)
async {
setState(() {
ShowSpinner=true;
});
try
{
if(i==1) {
File gallerfile = await ImagePicker.pickImage(
source: ImageSource.gallery);
_image=gallerfile;
setState(() {
ShowSpinner=false;
});
}
else {
File gallerfile = await ImagePicker.pickImage(
source: ImageSource.camera);
_image=gallerfile;
setState(() {
ShowSpinner=false;
});}
//print('Selected image path: ${gallerfile.path}');
}
catch(e)
{
print(e);
}
}
bool ShowSpinner=false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Image Picker Test'),
),
//backgroundColor: Colors.deepPurpleAccent,
body: ModalProgressHUD(
inAsyncCall: ShowSpinner,
child: Column(
children: <Widget>[
//SizedBox(height: 10,),
Container(
color: Colors.deepPurpleAccent,
height: 50,
child: Row(
children: <Widget>[
SizedBox(width: 20,),
FlatButton(
child: Icon(Icons.camera),
onPressed: (){
ImageGrab(0);
},
),
SizedBox(width: 120,),
FlatButton(
child: Icon(Icons.image),
onPressed: (){
ImageGrab(1);
},
),
SizedBox(width: 20,)
],
),
),
//SizedBox(height: 10,),
Expanded(
child:Container(
width: double.infinity,
child: _image==null?Text('Image Appears here'):Image.file(_image),
color: Colors.greenAccent,
),
),
],
),
),
);
}
}
这是用户界面图像:
现在我面临的两个问题是:1.当我使用相机按钮显示相机图像时,相机UI打开,我捕获图像,按下检查按钮,UI继续加载但图像不显示。2. 当我重新启动应用程序并重新运行它时,UI 再次继续加载,即使我按下画廊按钮(当我从头开始运行应用程序时效果很好),它也会在控制台中显示一条消息说:
I/flutter (14072): PlatformException(already_active, Image picker is already active, null)
请注意,这只发生在遇到我提到的第二种情况时。此外,我使用的是版本号image_picker: ^0.5.4+1,因为我使用的是 firebase 的 mlkit 库,如果我使用 image_picker 的新版本,则会引发一个带有大量消息的巨大错误。
请调查一下,让我知道如何进一步处理。提前致谢。